MySQL主从复制【延时同步(GTID复制基础上)】

1、延时同步

单纯从名字就可以大致明白其中的原理,就是当主库进行某些更新操作时,从库不会立即进行同步操作,而是等待管理员设定的延时到时,才与主库进行同步。

2、延时同步产生原因

现实生产环境中,数据库发生故障是不可避免的,具体分为:

  • 物理损坏:主库 rm 误删除数据库数据,直接将应用切换到从库;
  • 逻辑损坏:主库 drop database dbname、主库 delete from tablename,直接将语句同步到从库;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3、延时同步配置

mysql> stop slave;								#关闭主从同步
mysql> CHANGE MASTER TO MASTER_DELAY = 300;		#更改延时时间300秒(默认为0)
mysql> start slave;								#开启主从同步

mysql> show slave status \G		#对应参数
SQL_Delay: 300					#延时时间(此处为5分钟,默认为0)
SQL_Remaining_Delay: NULL		#延时同步状态值(等待时为非负整数值,非等待时为NULL)

4、示例

1)环境准备

三台主机:一主、两从
主库(MySQL master)[ip为192.168.25.131]
从库(MySQL slave1)[ip为192.168.25.133]
从库(MySQL slave2)[ip为192.168.25.134]

2)故障恢复思路:

从库延时5分钟,主库误删除1个库

1> 5分钟之内 侦测到误删除操作
2> 停从库SQL线程
3> 截取relaylog
	起点:停止SQL线程时,relay-log最后的应用位置
	终点:误删除操作的前一个position(GTID)
4> 恢复截取的日志到从库
5> 从库身份解除,替代主库工作

3)主库配置

略【依据上篇博客(GTID复制)】

4)从库配置

略【依据上篇博客(GTID复制)】
补充配置

db03 [(none)] > stop slave;
Query OK, 0 rows affected (0.00 sec)

db03 [(none)] > CHANGE MASTER TO MASTER_DELAY = 300;
Query OK, 0 rows affected (0.00 sec)

db03 [(none)] > start slave;
Query OK, 0 rows affected (0.00 sec)

db03 [(none)] > show slave status\G		#查看结果
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.25.131
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 194
               Relay_Log_File: localhost-relay-bin.000002		#中继日志文件名(重要)【恢复时使用】
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000003
             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: 194
              Relay_Log_Space: 578
              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: 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: 131
                  Master_UUID: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 300			#延时时间为5分钟
          SQL_Remaining_Delay: NULL			#延时同步状态值(等待时为非负整数值,非等待时为NULL)
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:1-6,
5fe99a5e-d078-11ec-956b-000c294d6b8d:1
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

5)主库数据操作 & 从库观察

db01 [(none)] > create database relay charset utf8;		#创建relay库
Query OK, 1 row affected (0.00 sec)

db01 [relay] > show databases;		#主库查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| relay              |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

db02 [(none)] > show databases;		#从库(slave1)查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| relay              |
| sys                |
+--------------------+
5 rows in set (0.05 sec)

db03 [(none)] > show databases;		#从库(slave2)查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
#可以发现配置延时同步后,数据没有及时与主库同步(没有relay库)

db01 [(none)] > use relay		#切换至relay库
Database changed
db01 [relay] > create table t1(id int);		#创建t1表
Query OK, 0 rows affected (0.01 sec)

db01 [relay] > show tables;		#此步骤可以省略,因为slave2无法同步(100%没有这些数据)
+-----------------+
| Tables_in_relay |
+-----------------+
| t1              |
+-----------------+
1 row in set (0.00 sec)

db02 [relay] > show tables;		#此步骤可以省略,因为slave2无法同步(100%没有这些数据)
+-----------------+
| Tables_in_relay |
+-----------------+
| t1              |
+-----------------+
1 row in set (0.00 sec)

db01 [relay] > insert into t1 value(1),(2);		#为t1表插入数据
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

db01 [relay] > select * from t1;		#此步骤可以省略,因为slave2无法同步(100%没有这些数据)
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

db02 [relay] > select * from t1;		#此步骤可以省略,因为slave2无法同步(100%没有这些数据)
+------+
| id   |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

db01 [relay] > drop database relay;		#删除relay库
Query OK, 1 row affected (0.01 sec)

db01 [(none)] > show databases;			#主库查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

db02 [relay] > show databases;		#从库(slave1)查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

db03 [(none)] > show databases;		#从库(slave2)查看数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
#可以看到relay库均不存在

6)恢复

①查看relay-log的截取起点和终点

db03 [(none)] > show relaylog events in "localhost-relay-bin.000002";
+----------------------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| Log_name                   | Pos  | Event_type     | Server_id | End_log_pos | Info                                                               |
+----------------------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| localhost-relay-bin.000002 |    4 | Format_desc    |       134 |         123 | Server ver: 5.7.37-log, Binlog ver: 4                              |
| localhost-relay-bin.000002 |  123 | Previous_gtids |       134 |         154 |                                                                    |
| localhost-relay-bin.000002 |  154 | Rotate         |       131 |           0 | mysql-bin.000003;pos=4                                             |
| localhost-relay-bin.000002 |  201 | Format_desc    |       131 |         123 | Server ver: 5.7.37-log, Binlog ver: 4                              |
| localhost-relay-bin.000002 |  320 | Rotate         |         0 |         367 | mysql-bin.000003;pos=194                                           |
| localhost-relay-bin.000002 |  367 | Gtid           |       131 |         259 | SET @@SESSION.GTID_NEXT= '4a4ec55f-d078-11ec-b9e8-000c29c1f77e:7'  |
| localhost-relay-bin.000002 |  432 | Query          |       131 |         369 | create database relay charset utf8                                 |
| localhost-relay-bin.000002 |  542 | Gtid           |       131 |         434 | SET @@SESSION.GTID_NEXT= '4a4ec55f-d078-11ec-b9e8-000c29c1f77e:8'  |
| localhost-relay-bin.000002 |  607 | Query          |       131 |         533 | use `relay`; create table t1(id int)                               |
| localhost-relay-bin.000002 |  706 | Gtid           |       131 |         598 | SET @@SESSION.GTID_NEXT= '4a4ec55f-d078-11ec-b9e8-000c29c1f77e:9'  |
| localhost-relay-bin.000002 |  771 | Query          |       131 |         671 | BEGIN                                                              |
| localhost-relay-bin.000002 |  844 | Table_map      |       131 |         717 | table_id: 108 (relay.t1)                                           |
| localhost-relay-bin.000002 |  890 | Write_rows     |       131 |         762 | table_id: 108 flags: STMT_END_F                                    |
| localhost-relay-bin.000002 |  935 | Xid            |       131 |         793 | COMMIT /* xid=39 */                                                |
| localhost-relay-bin.000002 |  966 | Gtid           |       131 |         858 | SET @@SESSION.GTID_NEXT= '4a4ec55f-d078-11ec-b9e8-000c29c1f77e:10' |
| localhost-relay-bin.000002 | 1031 | Query          |       131 |         953 | drop database relay                                                |
+----------------------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
16 rows in set (0.00 sec)
#接下来就是大家熟悉的步骤(只需不执行GTID为10的语句即可)

②导出恢复库(GTID)

//导出GTID为7-9的语句(观察relay-log可知)
[root@localhost ~]# mysqlbinlog --skip-gtids --include-gtids="4a4ec55f-d078-11ec-b9e8-000c29c1f77e:7-9" /var/lib/mysql/localhost-relay-bin.000002 > ~/relay_gtid.sql

[root@localhost ~]# ll relay_gtid.sql		//查看导出结果 
-rw-r--r-- 1 root root 2670 May 11 11:49 relay_gtid.sql

③将导出的数据库传到两外两台服务器上

[root@localhost ~]# scp relay_gtid.sql 192.168.25.131:~
root@192.168.25.131's password: 
relay_gtid.sql                                                                                                                           100% 2670     1.5MB/s   00:00    

[root@localhost ~]# scp relay_gtid.sql 192.168.25.133:~
root@192.168.25.133's password: 
relay_gtid.sql                                                                                                                           100% 2670     1.5MB/s   00:00    

④在各库分别进行进行恢复

db01 [(none)] > set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

db01 [(none)] > source ~/relay_gtid.sql;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Charset changed
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

db01 [relay] > set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)

db01 [relay] > show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| relay              |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
db02 [relay] > stop slave;
Query OK, 0 rows affected (0.00 sec)

db02 [relay] > reset slave all;
Query OK, 0 rows affected (0.01 sec)

db02 [relay] > set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

db02 [relay] > source ~/relay_gtid.sql;
Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Charset changed
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

db02 [relay] > set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)

db02 [relay] > show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| relay              |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
db03 [(none)] > stop slave;
Query OK, 0 rows affected (0.00 sec)

db03 [(none)] > reset slave all;
Query OK, 0 rows affected (0.00 sec)

db03 [(none)] > set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

db03 [(none)] > source ~/relay_gtid.sql;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Charset changed
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.03 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| relay              |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

⑤重新建立主从连接

a. slave1 重新与 master 建立主从连接
db02 [relay] > change master to 
    -> master_host="192.168.25.131",
    -> master_user="rep",
    -> master_password="123456",
    -> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

db02 [relay] > start slave;
Query OK, 0 rows affected (0.00 sec)

db02 [relay] > show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.25.131
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 953
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 414
        Relay_Master_Log_File: mysql-bin.000003
             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: 953
              Relay_Log_Space: 625
              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: 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: 131
                  Master_UUID: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e
             Master_Info_File: /var/lib/mysql/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
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:1-10,
594ea1be-d078-11ec-96d7-000c2967ad99:1
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)
#可以看到主从建立连接成功
b. slave2 重新与 master 建立主从连接
db03 [relay] > change master to
    -> master_host="192.168.25.131",
    -> master_user="rep",
    -> master_password="123456",
    -> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

db03 [relay] > start slave;
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.25.131
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 953
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 1007
                   Last_Error: Error 'Can't create database 'relay'; database exists' on query. Default database: 'relay'. Query: 'create database relay charset utf8'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 194
              Relay_Log_Space: 1337
              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: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 1007
               Last_SQL_Error: Error 'Can't create database 'relay'; database exists' on query. Default database: 'relay'. Query: 'create database relay charset utf8'
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 131
                  Master_UUID: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: 
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 220511 12:16:15
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:7-10
            Executed_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:1-6,
5fe99a5e-d078-11ec-956b-000c294d6b8d:1
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)
#可以看到主从建立连接失败(观察错误,确定为GTID误操作错误)

⑥解决GTID误操作错误(本作者前一篇CSDN博客有具体讲解)

错误:
Last_SQL_Error: Error 'Can't create database 'relay'; database exists' on query. Default database: 'relay'. Query: 'create database relay charset utf8'

解决(通过注入空事务,跳过未执行GTID事务)

Retrieved_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:7-10
Executed_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:1-6,
#可知未执行GTID事务为“7-10”

db03 [relay] > stop slave;													#关闭slave
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set gtid_next='4a4ec55f-d078-11ec-b9e8-000c29c1f77e:7';		#跳过GTID7
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > begin;commit;												#注入空事务
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set gtid_next='AUTOMATIC';									#设定下一个GTID为自动
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set gtid_next='4a4ec55f-d078-11ec-b9e8-000c29c1f77e:8';		#跳过GTID8
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > begin;commit;												#注入空事务
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

db03 [relay] > set gtid_next='AUTOMATIC';									#设定下一个GTID为自动
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set gtid_next='4a4ec55f-d078-11ec-b9e8-000c29c1f77e:9';		#跳过GTID9
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > begin;commit;												#注入空事务
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set gtid_next='AUTOMATIC';									#设定下一个GTID为自动
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set gtid_next='4a4ec55f-d078-11ec-b9e8-000c29c1f77e:10';		#跳过GTID10
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > begin;commit;												#注入空事务
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

db03 [relay] > set gtid_next='AUTOMATIC';									#设定下一个GTID为自动
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > start slave;													#开启slave
Query OK, 0 rows affected (0.00 sec)

db03 [relay] > show slave status\G		#查看结果
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.25.131
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 953
               Relay_Log_File: localhost-relay-bin.000003
                Relay_Log_Pos: 454
        Relay_Master_Log_File: mysql-bin.000003
             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: 953
              Relay_Log_Space: 1637
              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: 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: 131
                  Master_UUID: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e
             Master_Info_File: /var/lib/mysql/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
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:7-10
            Executed_Gtid_Set: 4a4ec55f-d078-11ec-b9e8-000c29c1f77e:1-10,
5fe99a5e-d078-11ec-956b-000c294d6b8d:1
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)
#可以看到主从建立连接成功
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从复制GTID(Global Transaction Identifier)是一种用于标识和跟踪事务的机制。GTID是一个全局唯一的标识符,用于确保主从复制中每个事务的唯一性和一致性。它在MySQL 5.6版本中引入,并在之后的版本中得到改进和增强。 使用GTID进行主从复制可以简化配置和管理,并提供更可靠的数据同步。下面是使用GTID进行主从复制的基本步骤: 1. 在主服务器上启用GTID功能: 在主服务器的配置文件(my.cnf)中添加以下参数: ``` [mysqld] server-id=1 log-bin enforce-gtid-consistency=true ``` 启用GTID功能并设置服务器ID和二进制日志。 2. 在从服务器上启用GTID功能: 在从服务器的配置文件中添加以下参数: ``` [mysqld] server-id=2 enforce-gtid-consistency=true ``` 设置服务器ID和启用GTID功能。 3. 配置主从关系: 在主服务器上创建一个用于复制的用户,并授予适当的权限。 4. 在从服务器上配置主服务器信息: 在从服务器上执行以下命令: ``` CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='复制用户', MASTER_PASSWORD='复制用户密码', MASTER_AUTO_POSITION=1; ``` 这将配置从服务器以使用GTID复制并将其连接到主服务器。 5. 启动主从复制: 在从服务器上执行以下命令开始复制: ``` START SLAVE; ``` 从服务器将开始从主服务器接收和应用事务。 通过以上步骤,你可以使用GTID实现MySQL主从复制。这种方式可以提供更高的数据一致性和可靠性,并简化了配置和管理过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值