|   2.找出执行了 drop table 语句的前一句的 pos 位置 [mysql@mysql-test ~]$ mysqlbinlog -vv /data/mysql_log/mysql_test/mysql-bin.000039 | grep -i -B 10 'drop table `b`';  ...  # at 35134  #190819 11:40:25 server id 83  end_log_pos 35199 CRC32 0x02771167     Anonymous_GTID    last_committed=132    sequence_number=133    rbr_only=no  SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;  # at 35199  #190819 11:40:25 server id 83  end_log_pos 35317 CRC32 0x50a018aa     Query    thread_id=37155    exec_time=0    error_code=0  use `mytest`/*!*/;  SET TIMESTAMP=1566186025/*!*/;  DROP TABLE `b` /* generated by server */ 
   从结果中我们可以看到 drop 所在语句的前一句开始位置是 35134,所以我们同步到 35134 (这个可别选错了)   3.延迟库同步到要跳过的 SQL 前一条 change master to master_delay=0;  start slave until master_log_file='mysql-bin.000039',master_log_pos=35134; 
   查看状态看到已经同步到对应节点 chengqm-3307>>show slave status G;  ...                    Master_Port: 3306                  Connect_Retry: 60                Master_Log_File: mysql-bin.000039            Read_Master_Log_Pos: 65792  ...               Slave_IO_Running: Yes              Slave_SQL_Running: No            Exec_Master_Log_Pos: 35134  ...                 Until_Log_File: mysql-bin.000039                  Until_Log_Pos: 35134 
   4.跳过一条 SQL 后开始同步 set global sql_slave_skip_counter=1;  start slave; 
 查看同步状态,删除表 b 的语句已经被跳过 chengqm-3307>>show slave status G;  ...               Slave_IO_Running: Yes              Slave_SQL_Running: Yes  ...  1 row in set (0.00 sec)  chengqm-3307>>show tables;  +------------------+  | Tables_in_mytest |  +------------------+  | a                |  | b                |  +------------------+  2 rows in set (0.00 sec) 
 4.2.2 开启 GTID 使用 GTID 跳过的步骤会简单很多,只要执行一条和要跳过的 SQL 的 GTID 相同的事务就可以跳过了     1.停止同步   2.找出执行了 drop table 语句的 GTID (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |