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

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

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

  2.找出执行了 drop table 语句的前一句的 pos 位置

  1. [mysql@mysql-test ~]$ mysqlbinlog -vv /data/mysql_log/mysql_test/mysql-bin.000039 | grep -i -B 10 'drop table `b`';  
  2. ... 
  3.  # at 35134  
  4. #190819 11:40:25 server id 83  end_log_pos 35199 CRC32 0x02771167     Anonymous_GTID    last_committed=132    sequence_number=133    rbr_only=no  
  5. SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;  
  6. # at 35199  
  7. #190819 11:40:25 server id 83  end_log_pos 35317 CRC32 0x50a018aa     Query    thread_id=37155    exec_time=0    error_code=0  
  8. use `mytest`/*!*/;  
  9. SET TIMESTAMP=1566186025/*!*/;  
  10. DROP TABLE `b` /* generated by server */ 

  从功效中我们可以看到 drop 地址语句的前一句开始位置是 35134,以是我们同步到 35134 (这个可别选错了)

  3.耽误库同步到要跳过的 SQL 前一条

  1. change master to master_delay=0;  
  2. start slave until master_log_file='mysql-bin.000039',master_log_pos=35134; 

  查察状态看到已经同步到对应节点

  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: 65792  
  7. ...  
  8.              Slave_IO_Running: Yes  
  9.             Slave_SQL_Running: No  
  10.           Exec_Master_Log_Pos: 35134  
  11. ...  
  12.                Until_Log_File: mysql-bin.000039  
  13.                 Until_Log_Pos: 35134 

  4.跳过一条 SQL 后开始同步

  1. set global sql_slave_skip_counter=1;  
  2. start slave; 

查察同步状态,删除表 b 的语句已经被跳过

  1. chengqm-3307>>show slave status G;  
  2. ...  
  3.              Slave_IO_Running: Yes  
  4.             Slave_SQL_Running: Yes  
  5. ...  
  6. 1 row in set (0.00 sec)  
  7. chengqm-3307>>show tables;  
  8. +------------------+  
  9. | Tables_in_mytest |  
  10. +------------------+  
  11. | a                |  
  12. | b                |  
  13. +------------------+  
  14. 2 rows in set (0.00 sec) 

4.2.2 开启 GTID

行使 GTID 跳过的步调会简朴许多,只要执行一条和要跳过的 SQL 的 GTID 沟通的事宜就可以跳过了

    1.遏制同步

  2.找出执行了 drop table 语句的 GTID

(编辑:湖南网)

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

热点阅读