专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
AustinDatabases  ·  眼见高楼起,眼见高楼塌,MySQL的好日子到头了 ·  20 小时前  
AustinDatabases  ·  眼见高楼起,眼见高楼塌,MySQL的好日子到头了 ·  20 小时前  
数据中心运维管理  ·  浅谈AHU风墙群控在数据中心的应用 ·  3 天前  
数据分析与开发  ·  别再做“职场透明人”!现在开始掌控人生剧本! ·  3 天前  
51好读  ›  专栏  ›  数据分析与开发

MySQL 数据库增量数据恢复案例

数据分析与开发  · 公众号  · 数据库  · 2017-03-27 21:42

正文

(点击 上方公众号 ,可快速关注)


作者:伯乐在线 - fullstackyang

如有好文章投稿,请点击 → 这里了解详情


一、场景概述


  1. MySQL数据库每日零点自动全备


  2. 某天上午10点,小明莫名其妙地drop了一个数据库


  3. 我们需要通过全备的数据文件,以及增量的binlog文件进行数据恢复


二、主要思想


  1. 利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件增量的部分


  2. 用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句


  3. 通过全备文件和增量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







请到「今天看啥」查看全文