kaywang 发表于 2018-10-6 11:19:51

MySQL5.6 新特性之GTID-9605915

slave2(3308):mysql> use mmmDatabase changed  
mysql> show tables;+---------------+| Tables_in_mmm |+---------------+| patent_family || t             || tt            |+---------------+3 rows in set (0.00 sec)
  

  
mysql> truncate table tt;#误操作,把记录删除了Query OK, 0 rows affected (0.02 sec)
  

  
mysql> show slave status\G;*************************** 1. row ***************************
  
               Slave_IO_State: Waiting for master to send event
  
                  Master_Host: 127.0.0.1
  
                  Master_User: rep
  
                  Master_Port: 3306
  
                Connect_Retry: 60
  
            Master_Log_File: mysql-bin3306.000001
  
          Read_Master_Log_Pos: 38260553
  
               Relay_Log_File: mysqld-relay-bin3308.000002
  
                Relay_Log_Pos: 38260771
  
      Relay_Master_Log_File: mysql-bin3306.000001
  
             Slave_IO_Running: Yes
  
            Slave_SQL_Running: Yes
  
            Replicate_Do_DB:
  
          Replicate_Ignore_DB:
  
         Replicate_Do_Table:
  
       Replicate_Ignore_Table:
  
      Replicate_Wild_Do_Table:
  
Replicate_Wild_Ignore_Table:
  
                   Last_Errno: 0
  
                   Last_Error:
  
               Skip_Counter: 0
  
          Exec_Master_Log_Pos: 38260553
  
            Relay_Log_Space: 38260980
  
            Until_Condition: None
  
               Until_Log_File:
  
                Until_Log_Pos: 0
  
         Master_SSL_Allowed: No
  
         Master_SSL_CA_File:
  
         Master_SSL_CA_Path:
  
            Master_SSL_Cert:
  
            Master_SSL_Cipher:
  
               Master_SSL_Key:
  
      Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No
  
                Last_IO_Errno: 0
  
                Last_IO_Error:
  
               Last_SQL_Errno: 0
  
               Last_SQL_Error:
  
Replicate_Ignore_Server_Ids:
  
             Master_Server_Id: 1
  
                  Master_UUID: 4e659069-3cd8-11e5-9a49-001c4270714e
  
             Master_Info_File: /var/lib/mysql3/master.info                  SQL_Delay: 0#延迟同步
  
          SQL_Remaining_Delay: NULL
  
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
  
         Master_Retry_Count: 86400
  
                  Master_Bind:
  
      Last_IO_Error_Timestamp:
  
   Last_SQL_Error_Timestamp:
  
               Master_SSL_Crl:
  
         Master_SSL_Crlpath:
  
         Retrieved_Gtid_Set: 4e659069-3cd8-11e5-9a49-001c4270714e:1-46
  
            Executed_Gtid_Set: 081ccacf-3ce4-11e5-9a95-001c4270714e:1,#多出了一个GTID(本身实例执行的事务)4e659069-3cd8-11e5-9a49-001c4270714e:1-46
  
                Auto_Position: 1数据被误删除之后,最好停止复制:stop slave;恢复数据从slave1(3307)上备份数据,并还原到slave2(3308)中。
  
备份:
  
mysqldump-uzjy -p123456 -h127.0.0.1 -P3307 --default-character-set=utf8 --set-gtid-purged=ON -B mmm > mmm1.sql在还原到slave2的时候需要在slave2上执行:reset master; 不然会报错:
  
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
  

  
还原:
  
root@zjy:~# mysql -uzjy -p123456 -h127.0.0.1 -P3308 --default-character-set=utf8 < mmm.sql 开启同步:
  
mysql> start slave;
  
Query OK, 0 rows affected, 1 warning (0.03 sec)
  

  
这时候你会发现误删除的数据已经被还原,并且复制也正常。因为根据GTID的原理,通过slave1的备份直接可以和Master进行同步。


页: [1]
查看完整版本: MySQL5.6 新特性之GTID-9605915