Ø 首先,我们需要开启MySQL服务器的二进制日志功能,其实现方法有很多种,最常用的是在MySQL的配置文件的mysqld项中加入log-bin=[filepath]项;也可以使用mysqld –log-bin=[filepath]重新启动MySQL服务器。
10年积累的网站制作、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有柳河免费网站建设让你可以放心的选择与我们合作。
Ø 其次,使用mysqldump对数据库进行完全备份,它可以实现对数据据的联机,非阻塞的热备份,不会影响其他进程对数据库的读写操作。(参考指令:mysqldump -uroot --password=123 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)
Ø 第三,使用flush logs指令刷新创建新的二进制日志。可以通过mysqladmin flush logs或者flush logs语句实现。最方便有效的方法是将它做成批处理文件,然后让操作系统定期执行。
Ø 使用mysql *.sql进行完全备份的恢复。
Ø 使用mysqlbinlog logs-bin.[0-9]* | mysql进行增量备份的恢复。一般的,假设我们周日下午三点进行了完全备份并生成备份文件full_backup_20100415_3_PM.sql,周一周二中午一点进行了两次增量备份,分别生成增量备份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00数据库发生崩溃,需要进行数据库恢复,此时正在记录的二进制日志为inc_backup_1_PM.0009,我们还需要恢复其中记录的操作。具体的恢复操作为:
mysql full_backup_20100415_3_PM.sql
mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009
u 具体应用(结合T8项目)
根据上述分析,我们在T8项目使用MySQL增量备份,也需要三个步骤:
Ø 首选修改MySQL启动配置文件my.cnf,在其中的mysqld项中增加log-bin选项,重新启动MySQL 服务器以开启二进制日志功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如图所示:
Ø 编写完全备份可执行文件脚本:
Ø 编写增量备份可执行文件脚本:
Ø 执行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。
Ø 执行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002。
其中full_backup_20100417_1_pm. sql和t8server-bin..000002分别是完全备份和增量备份文件。
要进行备份文件的恢复,只需执行命令:
u 总结
MySQL提供了很方便的完全+增量备份实现方法,我们只需调用系统内置的方法或者作出一些细微的配置就可以对MySQL数据库进行备份和恢复。对于MyISAM数据库和InnoDB数据库,都可以通过mysqldump实现数据库的完全逻辑备份,通过启动二进制日志(binary logs),可以记录一个时间段内对数据库的所有可能更新的操作,从而通过flush logs创建新的日志而实现增量备份。
数据库最直接的备份方法就是使用自带的mysqldump命令进行备份。
1、 mysqldump命令备份数据
在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p --databases 数据库1 数据库2 xxx.sql
2、 mysqldump常用操作实例
2.1备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.2备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
2.3 备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
2.4 备份单个数据库的数据和结构(,数据库名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
2.5 备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
2.6 备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2
2.7 备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
2.8 一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql
解决方法添加 -w 参数, 将时间进行转换, 确保两边时区保持一致, 比如原来 start_at 2019-01-16 00:00:00, 更新为 start_at 2019-01-15 16:00:00, 提前8小时
先在数据库更新时区配置为0时区:set time_zone='+00:00';, 备份完成后恢复时区配置: set time_zone='SYSTEM';
方法:
URL;create table ay(ay1 image)--
//新建一个名为AY的表 表内存在名为AY1的图象类型的字段
URL;backup database 数据库名 to disk='物理路径' with DIFFERENTIAL--
//注意,这次备份是要减小数据库的备份量
URL;backup database 数据库名 to disk='物理路径'with DIFFERENTIAL--
//备份数据库到WEB目录下