Skip to content
This repository was archived by the owner on Oct 29, 2023. It is now read-only.
This repository was archived by the owner on Oct 29, 2023. It is now read-only.

replicate_from command raise SQL thread error when GTID=ON #110

Open
@kakuka4430

Description

@kakuka4430

Describe the bug

When I execute replicate_from command between MySQL 5.7.29 and 5.7.30 in case of "GTID=ON".
This behavior could happen in other versions.

To Reproduce

[vagrant@server1 ~]$ dbdeployer deploy single 5.7.30 --gtid -c log_slave_updates
Database installed in $HOME/sandboxes/msb_5_7_30
run 'dbdeployer usage single' for basic instructions'
. sandbox server started
[vagrant@server1 ~]$ dbdeployer deploy single 5.7.29 --gtid -c log_slave_updates
Database installed in $HOME/sandboxes/msb_5_7_29
run 'dbdeployer usage single' for basic instructions'
. sandbox server started
[vagrant@server1 ~]$ ls ~/sandboxes/
msb_5_7_29  msb_5_7_30

[vagrant@server1 ~]$ ~/sandboxes/msb_5_7_30/replicate_from msb_5_7_29
Connecting to /home/vagrant/sandboxes/msb_5_7_29
--------------
CHANGE MASTER TO master_host="127.0.0.1",
master_port=5729,
master_user="rsandbox",
master_password="rsandbox"
, master_auto_position=1
--------------

--------------
start slave
--------------

              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 4089
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
          Exec_Master_Log_Pos: 154
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 00005730-0000-0000-0000-000000005730:1-16
                Auto_Position: 1

[vagrant@server1 ~]$ ~/sandboxes/msb_5_7_30/use -e "show slave status\G"
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 127.0.0.1
                  Master_User: rsandbox
                  Master_Port: 5729
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 4089
               Relay_Log_File: mysql-relay.000002
                Relay_Log_Pos: 616
        Relay_Master_Log_File: mysql-bin.000001
             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: 1396
                   Last_Error: Error 'Operation CREATE USER failed for 'msandbox'@'127.%'' on query. Default database: 'mysql'. Query: 'CREATE USER 'msandbox'@'127.%' IDENTIFIED WITH 'mysql_native_password' AS '*6C387FC3893DBA1E3BA155E74754DA6682D04747''
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 403
              Relay_Log_Space: 4505
              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: 1396
               Last_SQL_Error: Error 'Operation CREATE USER failed for 'msandbox'@'127.%'' on query. Default database: 'mysql'. Query: 'CREATE USER 'msandbox'@'127.%' IDENTIFIED WITH 'mysql_native_password' AS '*6C387FC3893DBA1E3BA155E74754DA6682D04747''
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 5729
                  Master_UUID: 00005729-0000-0000-0000-000000005729
             Master_Info_File: mysql.slave_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: 200703 13:39:17
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 00005729-0000-0000-0000-000000005729:1-16
            Executed_Gtid_Set: 00005729-0000-0000-0000-000000005729:1,
00005730-0000-0000-0000-000000005730:1-16
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version:

Expected behavior

I guess this is because Replica (= 5.7.30 instance) tried to execute queries from the beginning of Source (= 5.7.29 instance) binary log.
However Replica have already done the same queries (ex. CREATE USER 'msandbox'@'127.%' ...), these SQL went ERROR.

In conclusion, "replicate_from" have to start GTID replication since the position after finish dbdeployer's setup process (ex. creating user).
So I think that command should issue "RESET MASTER" and "SET GLOBAL gtid_purged = '***' (= GTID of the last query of setup)" for skip all queries already done.

Environment:

  • OS
    CentOS Linux release 7.8.2003 (Core)
  • dbdeployer version
    1.52.0
  • tarball full name
    mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
    mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
  • tarball origin (from where it was downloaded)
    Oracle Official Website

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions