如何实现Mysql数据库的差异性备份和增量备份?

MySQL提供了很方便的完全+增量备份实现方法,我们只需调用系统内置的方法或者作出一些细微的配置就可以对MySQL数据库进行备份和恢复。对于MyISAM数据库和InnoDB数据库,都可以通过mysqldump实现数据库的完全逻辑备份,通过启动二进制日志(binary logs),可以记录一个时间段内对数据库的所有可能更新的操作,从而...
如何实现Mysql数据库的差异性备份和增量备份?
Ø 首先,我们需要开启MySQL服务器的二进制日志功能,其实现方法有很多种,最常用的是在MySQL的配置文件的mysqld项中加入log-bin=[filepath]项;也可以使用mysqld –log-bin=[filepath]重新启动MySQL服务器。
Ø 其次,使用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创建新的日志而实现增量备份。
2015-01-15
mengvlog 阅读 10 次 更新于 2025-07-20 19:19:29 我来答关注问题0
  • 1. 使用WHERE语句过滤记录 如果两条记录具有一些共同的特征,可以使用WHERE语句来过滤表中的记录,只保留需要比较的两条记录。例如:SELECT * FROM table_name WHERE id=1 OR id=2;该语句会在表table_name中查找ID为1或ID为2的记录。2. 使用GROUP BY语句分组比较 如果需要比较表中大量记录的差异,...

  • 1. 使用INNER JOIN操作进行比对 INNER JOIN用于连接两个表中的相同行,常常用于比较一条记录中的数据项是否相等。在比对MySQL中两条不同记录的差异时,我们可以使用INNER JOIN操作,通过同时选取记录中的相同值进行比较。例如,我们可以通过以下代码来比对两条记录中某一项数据的差异:SELECT a.col1,b.co...

  • 第一步:创建两个表 我们需要在MySQL中创建两个表格。这里我们以“表A”和“表B”为例。表A的结构如下:CREATE TABLE `A` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`age` int(11) DEFAULT NULL,`sex` tinyint(1) DEFAULT NULL COMMENT ‘0:女,1...

  • 最简单的方法是手动比较,也是最容易出错的方法。手动比较需要将两个表的数据导出为CSV或Excel文件,然后用比较工具如WinMerge或Beyond Compare进行比较。此方法适用于较小的表,数据量较大时不建议使用。使用MySQL自带工具 MySQL提供了两个工具用于比较数据:mysqldbcompare和mysqldiff。mysqldbcompare是一个命令...

  • 找到差异后需要更新测试环境数据库表结构直到开发与测试环境的数据库表结构一致。我们可以使用mysqldiff工具来实现比对数据库表结构及获取更新结构的sql语句。1.mysqldiff安装方法mysqldiff工具在mysql-utilities软件包中,而运行mysql-utilities需要安装依赖mysql-connector-pythonmysql-connector-python 安装下载地址...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部