加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

删库不跑路-详解MySQL数据规复

发布时间:2019-08-25 15:31:27 所属栏目:编程 来源:程淇铭
导读:一般事变中,总会有因手抖、写错前提、写错表名、错连出产库造成的误删库表和数据的工作产生,那么,假如连数据都规复不了,还要什么 DBA。 1 媒介 数据规复的条件的做好备份,且开启 binlog, 名目为 row。假如没有备份文件,那么删掉库表后就真的删掉了,

  5.规复增量数据

  1. [mysql@mysql-test ~]$ mysql -S /tmp/mysql.sock < backup_inc_1.sql  
  2. [mysql@mysql-test ~]$ mysql -S /tmp/mysql.sock < backup_inc_2.sql 

规复后状态,可以看到已经跳过了 drop 语句

  1. chgnqm-3306>>show tables;  
  2. +------------------+  
  3. | Tables_in_mytest |  
  4. +------------------+  
  5. | a                |  
  6. | b                |  
  7. +------------------+  
  8. 2 rows in set (0.00 sec)  
  9. chgnqm-3306>>select count(*) from a;  
  10. +----------+  
  11. | count(*) |  
  12. +----------+  
  13. |      274 |  
  14. +----------+  
  15. 1 row in set (0.00 sec) 

4.1.2 开启 GTID

行使 GTID 可以直接跳过失误的 SQL

  1.  找出备份时的日记位置
  2.  找出执行了 drop table 语句的 GTID 值
  3.  导出备份时日记位置到最新的 binglog 日记
  4.  规复备份文件
  5.  跳过这个 GTID   
  1. SET SESSION GTID_NEXT='对应的 GTID 值';  
  2.     BEGIN; COMMIT;  
  3.     SET SESSION GTID_NEXT = AUTOMATIC; 

     6.  应用步调 3 获得的增量 binlog 日记

4.2 行使耽误库跳过

4.2.1 不开启 GTID

行使耽误库规复的要害操纵在于 start slave until

我在测试情形搭建了两个 MySQL 节点,节点二耽误600秒,新建 a,b 两个表,每秒插入一条数据模仿营业数据插入。

  1. localhost:3306 -> localhost:3307(delay 600) 

当前节点二状态

  1. chengqm-3307>>show slave status G;  
  2. ...  
  3.                   Master_Port: 3306  
  4.                 Connect_Retry: 60  
  5.               Master_Log_File: mysql-bin.000039  
  6.           Read_Master_Log_Pos: 15524  
  7.                Relay_Log_File: mysql-relay-bin.000002  
  8.                 Relay_Log_Pos: 22845  
  9.         Relay_Master_Log_File: mysql-bin.000038  
  10.              Slave_IO_Running: Yes  
  11.             Slave_SQL_Running: Yes  
  12. ...  
  13.         Seconds_Behind_Master: 600  
  14. ... 

当前节点二表

  1. chengqm-3307>>show tables;  
  2. +------------------+  
  3. | Tables_in_mytest |  
  4. +------------------+  
  5. | a                |  
  6. | b                |  
  7. +------------------+ 

在节点一删除表 b

  1. chengqm-3306>>drop table b;  
  2. Query OK, 0 rows affected (0.00 sec)  
  3. chengqm-3306>>show tables;  
  4. +------------------+  
  5. | Tables_in_mytest |  
  6. +------------------+  
  7. | a                |  
  8. +------------------+  
  9. 1 row in set (0.00 sec) 

接下来就是跳过这条 SQL 的操纵步调

  1.耽误库遏制同步

  1. stop slave; 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读