MySQL数据库怎么增量恢复数据

46次阅读
没有评论

共计 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 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2200字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)