MYSQL GTID Copy

After MySQL5.7 GTID embodiment are basically a copy, with respect to number and position binlog manner, the failover time reduce the number of manual switching operation

GTID, global transaction identitifiers, global transaction-based replication by server_uuid: transaction_id composition, server_uuid generated database startup process, in the /data/auto.cnf

Replication process: GTID when the master transaction commits, the recorded binlog; binlog then transmitted to the master of relaylog slave, slave read GTID gtid_next generating system parameter; GTID check whether the slave transactions and further applications binlog (5.7 is located in gtid_executed system tables, so do not open log_slave_updates parameters to do the re-recording to record the binlog relaylog, pressure reduction slave)

The following actions:

Are arranged from the first master gtid_mode, enforce_gtid_consistency parameters, wherein the library prepared more months log_slave_updates = 1


[root@localhost /usr/local/mysql/data]$ cat /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
log_bin=mysql-bin
server_id=1
gtid_mode=on
enforce_gtid_consistency=on
[root@localhost /usr/local/mysql/data]$ 
mysql> show variables like '%gtid%';
+----------------------------------+-----------+
| Variable_name                    | Value     |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery      | ON        |
| enforce_gtid_consistency         | ON        |
| gtid_executed_compression_period | 1000      |
| gtid_mode                        | ON        |
| gtid_next                        | AUTOMATIC |
| gtid_owned                       |           |
| gtid_purged                      |           |
| session_track_gtids              | OFF       |
+----------------------------------+-----------+
8 rows in set (0.00 sec)

mysql> 

Then before removing asynchronous replication configuration, reconfiguration information to slave the master library

mysql> show variables like '%log_slave_updates%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| log_slave_updates | ON    |
+-------------------+-------+
1 row in set (0.00 sec)

mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

mysql> reset slave all;
Query OK, 0 rows affected (0.02 sec)

mysql> change master to
    -> master_host='192.0.1.10',
    -> master_user='scott',
    -> master_password='tiger',
    -> master_port=3306,
    -> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.0.1.10
                  Master_User: scott
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 573
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 786
        Relay_Master_Log_File: mysql-bin.000004
             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: 573
              Relay_Log_Space: 997
              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: 1
                  Master_UUID: 531fa6d1-627f-11e9-8dc7-000c297887a1
             Master_Info_File: /data/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: 531fa6d1-627f-11e9-8dc7-000c297887a1:1-2
            Executed_Gtid_Set: 531fa6d1-627f-11e9-8dc7-000c297887a1:1-2
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

mysql> 

Test, ok, and you can see the state of the main library

mysql> show master status;
+------------------+----------+--------------+------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+------------------+----------+--------------+------------------+------------------------------------------+
| mysql-bin.000004 |      573 |              |                  | 531fa6d1-627f-11e9-8dc7-000c297887a1:1-2 |
+------------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)

mysql> 

The slave in log_slave_updates turned off, you can see mysql.gtid_executed table records the information it has been performed gtid

mysql> select * from mysql.gtid_executed;
+--------------------------------------+----------------+--------------+
| source_uuid                          | interval_start | interval_end |
+--------------------------------------+----------------+--------------+
| 531fa6d1-627f-11e9-8dc7-000c297887a1 |              1 |            2 |
| 531fa6d1-627f-11e9-8dc7-000c297887a1 |              3 |            3 |
+--------------------------------------+----------------+--------------+
2 rows in set (0.00 sec)

Because it is transaction-based, so there will be restrictions: create table select the way in the case of row-based replication will be split into two to create tables and insert data event, these two events will be allocated under certain circumstances GTID cause later insert the same data portion is ignored and error; a transaction table in turn contains both InnoDB MyISAM table contains a plurality of possible cause gtid, or inconsistencies in the master table is generated from gtid stored in a library are copied abnormal engine

Guess you like

Origin www.cnblogs.com/yongestcat/p/11361742.html