共计 2200 个字符,预计需要花费 6 分钟才能阅读完成。
本篇内容介绍了“MySQL 数据库怎么增量恢复数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、场景概述
某天上午 10 点,小明莫名其妙地 drop 了一个数据库
利用全备的 sql 文件中记录的 CHANGE MASTER 语句,binlog 文件及其位置点信息,找出 binlog 文件增量的部分
用 mysqlbinlog 命令将上述的 binlog 文件导出为 sql 文件,并剔除其中的 drop 语句
通过全备文件和增量 binlog 文件的导出 sql 文件,就可以恢复到完整的数据
三、过程示意图
四、操作过程
1. 模拟数据
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
`age` tinyint(2) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
KEY `index_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
mysql insert student values(1, zhangsan ,20);
mysql insert student values(2, lisi ,21);
mysql insert student values(3, wangwu ,22);
2. 全备命令
# mysqldump -uroot -p -B -F -R -x –master-data=2 test|gzip /server/backup/test_$(date +%F).sql.gz
参数说明:
-B 指定数据库
-F 刷新日志
-R 备份存储过程等
-x 锁表
–master-data 在备份语句里添加 CHANGE MASTER 语句以及 binlog 文件及位置点信息
3. 继续插入数据
mysql insert student values(6, xiaoming ,20);
mysql insert student values(6, xiaohong ,20);
此时误操作,删除了 test 数据库
mysql drop database test;
此时,全备之后到误操作时刻之间,用户写入的数据在 binlog 中,需要恢复出来
4. 查看全备之后新增的 binlog 文件
# cd /server/backup/
# ls
test_2016-08-02.sql.gz
# gzip -d test_2016-08-02.sql.gz
# grep CHANGE test_2016-08-02.sql
— CHANGE MASTER TO MASTER_LOG_FILE= mysql-bin.000003 , MASTER_LOG_POS=107;
这是全备时刻的 binlog 文件位置,即 mysql-bin.000003 的 107 行,因此在该文件之前的 binlog 文件中的数据都已经包含在这个全备的 sql 文件中了
5. 移动 binlog 文件,并读取 sql,剔除其中的 drop 语句
# cp /data/3306/mysql-bin.000003 /server/backup/
# mysqlbinlog -d test mysql-bin.000003 003bin.sql
# 用 vim 编辑文件,剔除 drop 语句
在恢复全备数据之前必须将该 binlog 文件移出,否则恢复过程中,会继续写入语句到 binlog,最终导致增量恢复数据部分变得比较混乱
6. 恢复数据
# mysql -uroot -p test_2016-08-02.sql
# mysql -uroot -p -e select * from test.student;
+—-+———-+—–+
| id | name | age |
+—-+———-+—–+
| 1 | zhangsan | 20 |
| 2 | lisi | 21 |
| 3 | wangwu | 22 |
+—-+———-+—–+
// 此时恢复了全备时刻的数据
// 然后使用 003bin.sql 文件恢复全备时刻到删除数据库之间,新增的数据
# mysql -uroot -p test 003bin.sql span data-mce- - 需要指定恢复的数据库
# mysql -uroot -p -e select * from test.student;
+—-+———-+—–+
| id | name | age |
+—-+———-+—–+
| 1 | zhangsan | 20 |
| 2 | lisi | 20 |
| 3 | wangwu | 20 |
| 4 | xiaoming | 20 |
| 5 | xiaohong | 20 |
+—-+———-+—–+
完成
五、小结
恢复条件要全备和增量的所有数据
先恢复全量,然后把全备时刻点以后的增量日志,按顺序恢复成 SQL 文件,然后把文件中有问题的 SQL 语句删除(也可通过时间和位置点),再恢复到数据库
“MySQL 数据库怎么增量恢复数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!