古いものにロールバックしたい場合:
#次に、GTIDをオフにします
スレーブ192.168.66.7
mysql> set global gtid_mode='on_permissive'; Query OK, 0 rows affected (0.02 sec)
マスター192.168.66.5
mysql> set global gtid_mode='on_permissive'; Query OK, 0 rows affected (0.02 sec)
スレーブ192.168.66.7
mysql> set global gtid_mode='off_permissive'; Query OK, 0 rows affected (0.01 sec)
マスター192.168.66.5
mysql> set global gtid_mode='off_permissive'; Query OK, 0 rows affected (0.01 sec)
この時点で、レプリケーションはスレーブ側で中断されます。スレーブのステータスから表示される以下のエラーのように、スレーブを停止し、マスターの位置とログファイルの記述を変更します。
スレーブ192.168.66.7
mysql> show slave status\G *************************** 1. row *************************** Last_IO_Errno: 13114 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Cannot replicate anonymous transaction when AUTO_POSITION = 1, at file ./mysql-bin.000007, position 196.; the first event '' at 4, the last event read from './mysql-bin.000007' at 275, the last byte read from './mysql-bin.000007' at 275.' mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> change master to master_log_file='mysql-bin.000007', master_log_pos=196,master_auto_position=0; Query OK, 0 rows affected (0.02 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec)
ここで、スレーブステータスのレプリケーションが正常に機能することを確認しますが、GTIDを停止する必要があります。
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.66.5 Master_User: syncstndby Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000007 Read_Master_Log_Pos: 1070076 Relay_Log_File: serverB-relay-bin.000002 Relay_Log_Pos: 1070204 Relay_Master_Log_File: mysql-bin.000007 Slave_IO_Running: Yes Slave_SQL_Running: Yes . . Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1070076 Relay_Log_Space: 1070415 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 . . Seconds_Behind_Master: 0 Master_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: 95358015-b479-11ea-ab4c-080027267f61 Master_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 . . Executed_Gtid_Set: 95358015-b479-11ea-ab4c-080027267f61:1-10110 . . Network_Namespace: 1 row in set (0.00 sec)
mysql> select @@global.gtid_owned; +---------------------+ | @@global.gtid_owned | +---------------------+ | | +---------------------+ 1 row in set (0.00 sec)
マスター192.168.66.5
mysql> select @@global.gtid_owned; +---------------------+ | @@global.gtid_owned | +---------------------+ | | +---------------------+ 1 row in set (0.00 sec)
次に、gtid-mode =off
をオフにします。スレーブ192.168.66.7
mysql> set global gtid_mode=off; Query OK, 0 rows affected (0.01 sec)
マスター192.168.66.5
mysql> set global gtid_mode=off; Query OK, 0 rows affected (0.01 sec)
これにより、戻った後のGTIDの変更が停止します
Executed_Gtid_Set:95358015-b479-11ea-ab4c-080027267f61:1-10110
ただし、Exec_Master_Log_Pos:181924 Relay_Log_Space:182357は変更され続けます。この出力は、showslavestatusで確認できます。