设为首页 收藏本站
查看: 574|回复: 0

[经验分享] Mysql DBA 高级运维学习之路-初步增量恢复mysql数据库

[复制链接]

尚未签到

发表于 2018-10-6 11:44:06 | 显示全部楼层 |阅读模式
9.10.3 初步增量恢复MySQL数据实战

a.配置my.cnf配置文件
  先把my.cnf配置文件中的log-bin参数打开重命名为mysqlbin_zbf,这样在mysql数据库中更新一个东西就会在这个日志里更新。这样会导致这个日志很大,没关系系统可以自动分割还可以手动分割。
  

[root@localhost var]# vim /etc/my.cnf  
…省略……
  
# Uncomment the following if you want to log updates
  
log-bin=mysqlbin_zbf
  
# binary logging format - mixed recommended
  
……省略…
  

b.配置完my.cnf重启mysql
  

[root@localhost var]# /etc/init.d/mysqld restart  
Shutting down MySQL. SUCCESS!
  
Starting MySQL. SUCCESS!
  

c.重启之后就可以在mysql的数据文件下看见mysqlbin_zbf.000001日志文件。
  它记录了对数据有更改操作的语句,之前如果有就不用配置log-bin。
  

[root@mysql data]# ls  
ibdata1  ib_logfile1  mysqlbin_zbf.000001  mysql.err  performance_schema
  
ib_logfile0  mysqlmysqlbin_zbf.index   mysql.pid  zbf
  

d.重启完登录mysql,将数据库数据破坏模拟增量恢复。
  (1)查看表数据
  

mysql> select * from student;  
+----+-----------+-----+--------+

  
|>  
+----+-----------+-----+--------+
  
|  1 | zbf666|  29 | linux  |
  
|  2 | lisi  |  28 | mysql  |
  
|  3 | zhangsan  |  21 | python |
  
|  4 | woshishei |  24 | java   |
  
+----+-----------+-----+--------+
  

  (2)将name字段的值全部修改为luhan
  

mysql> update student set name='luhan';  
Query OK, 4 rows affected (0.03 sec)
  
Rows matched: 4  Changed: 4  Warnings: 0
  

  (3)再查看表数据
  

mysql> select * from student;  
+----+-------+-----+--------+

  
|>  
+----+-------+-----+--------+
  
|  1 | luhan |  29 | linux  |
  
|  2 | luhan |  28 | mysql  |
  
|  3 | luhan |  21 | python |
  
|  4 | luhan |  24 | java   |
  
+----+-------+-----+--------+
  
4 rows in set (0.00 sec)
  

  (4)然后退出mysql用mysqlbinlog查看一下mysqlbin_zbf.000001日志文件
  

[root@mysql ~]# mysqlbinlog /usr/local/mysql/data/mysqlbin_zbf.000001  
……省略……..
  
use `zbf`/*!*/;
  
SET TIMESTAMP=1517061765/*!*/;
  
update student set name='luhan'
  
/*!*/;
  
# at 267
  
……省略….
  

  我们看到update student set name='luhan'这条语句,在恢复的时候我们要把这条语句删掉,再把数据导进去。因为恢复数据的时候还会往里写数据导致数据缺失,所以先把之前的日志文件备份出来.恢复数据,最好的方法就是停库,不能停的话最好的办法就是切割。
  

[root@mysql data]# cp mysqlbin_zbf.000001 /opt/   

  (5)模拟不能停止数据库的思路,停止数据库是最好的。切割成另外一个。
  

[root@mysql data]# mysqladmin -uroot -p123456 flush-log  
[root@mysql data]# ll
  
总用量 28708
  
-rw-rw----. 1 mysql mysql 18874368 1月  27 22:18 ibdata1
  
-rw-rw----. 1 mysql mysql  5242880 1月  27 22:18 ib_logfile0
  
-rw-rw----. 1 mysql mysql  5242880 1月  11 20:30 ib_logfile1
  
drwx------. 2 mysql root  4096 1月  11 20:08 mysql
  
-rw-rw----. 1 mysql mysql  547 1月  27 22:29 mysqlbin_zbf.000001
  
-rw-rw----. 1 mysql mysql  107 1月  27 22:29 mysqlbin_zbf.000002
  
-rw-rw----. 1 mysql mysql   44 1月  27 22:29 mysqlbin_zbf.index
  
-rw-r-----. 1 mysql root  7937 1月  27 21:57 mysql.err
  
-rw-rw----. 1 mysql mysql5 1月  27 21:57 mysql.pid
  
drwx------. 2 mysql mysql 4096 1月  11 20:08 performance_schema
  
drwx------. 2 mysql mysql 4096 1月  27 21:32 zbf
  

  我们看切割完了就出现了mysqlbin_zbf.000002,切割完之后写入数据就往mysqlbin_zbf.000002里面写了,现在我们要处理的就是mysqlbin_zbf.000001了。
  (6)生成bin.sql文件
  在企业中如果有多个bin-log就把所有的做恢复,同时也会有很多库和表,bin.sql里面写入的是所有库和表修改过得数据,恢复bin.sql里面的数据时就会导致主键重复,不能插入数据。所以要指定库和表。
  

[root@mysql data]# mysqlbinlog -d zbf mysqlbin_zbf.000001 >bin.sql  

  编辑bin.sql可以发现在什么时候操作数据库导致数据丢失,我们找到update这条语句,将update这条语句删掉。
  

[root@mysql data]# vim bin.sql  
……省略……

  
#180127 23:29:00 server>  
SET TIMESTAMP=1517066940/*!*/;
  
update student set name='luhan'
  
/*!*/;
  
……省略…
  
# at 767
  

  (7)开始增量恢复
  

[root@mysql data]# mysql -uroot -p123456 zbf   
+----+-----------+-----+--------+
  
|  1 | zbf666|  29 | linux  |
  
|  2 | lisi  |  28 | mysql  |
  
|  3 | zhangsan  |  21 | python |
  
|  4 | woshishei |  24 | java   |
  
+----+-----------+-----+--------+



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-613710-1-1.html 上篇帖子: Mysql DBA 高级运维学习之路-mysql建表语句及表知识 下篇帖子: Mysql 5.7.20 源码安装笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表