2017-12-10 8 views
1

私は、ビンログファイルbin.000008を持つマスターMySQLサーバAを持っています。そして、ビンログファイルbin.000012を持つスレーブサーバB。スレーブデータベースサーバからレプリケートすると、MySQLの複製が失敗する

AからBへの複製はうまく機能します。

データをサーバーAに変更するたびに、サーバーBはそれを正しく複製します。私はそれがサーバBに奴隷のように作る新しいMySQLサーバCがあります

問題がある:私は、サーバーA上のデータを変更すると

は、サーバBが正しくそれを複製します。しかし、サーバーCは変更されません。レプリケーションは、サーバBからサーバCに

無効であることを意味している私は、サーバーC.にスレーブを再起動しようとしましたが、それはバイナリログからデータを読み取る際がマスターから致命的なエラー1236を手に入れたと言う:「奴隷をCHANGE MASTER TO MASTER_AUTO_POSITION = 1を使用して接続していますが、マスターはスレーブが必要とするGTIDを含むバイナリログをパージしました。ここ

各サーバのマスタとスレーブの状態である。

サーバC(サーバBのスレーブ):

db> show slave status\G; 
|[ 
*************************** 1. row *************************** 
       Slave_IO_State: Waiting for master to send event 
        Master_Host: luexu.com 
        Master_User: Aario 
        Master_Port: 1579 
       Connect_Retry: 60 
       Master_Log_File: bin.000012 
      Read_Master_Log_Pos: 194 
       Relay_Log_File: cf3613332a61-relay-bin.000004 
       Relay_Log_Pos: 355 
     Relay_Master_Log_File: bin.000012 
      Slave_IO_Running: Yes 
      Slave_SQL_Running: Yes 
       Replicate_Do_DB: 
      Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys 
      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: 569 
       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: 65535 
        Master_UUID: dd7aa123-ca18-11e7-9411-0242ac110005 
      Master_Info_File: /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: c389aee6-ca16-11e7-81e3-0242ac110004:1-79, 
dd7aa123-ca18-11e7-9411-0242ac110005:1-13 
       Auto_Position: 1 
     Replicate_Rewrite_DB: 
       Channel_Name: 
      Master_TLS_Version: 
1 row in set (0.00 sec) 
]| 

サーバB(サーバA、サーバCのマスタのスレーブ) :

db> show variables like '%slave%'; 
+------------------------------+-----------------------+ 
| Variable_name    | Value     | 
+------------------------------+-----------------------+ 
| init_slave     |      | 
| log_slave_updates   | ON     | 
| log_slow_slave_statements | OFF     | 
| pseudo_slave_mode   | OFF     | 
| rpl_stop_slave_timeout  | 31536000    | 
| slave_allow_batching   | OFF     | 
| slave_checkpoint_group  | 512     | 
| slave_checkpoint_period  | 300     | 
| slave_compressed_protocol | OFF     | 
| slave_exec_mode    | STRICT    | 
| slave_load_tmpdir   | /tmp     | 
| slave_max_allowed_packet  | 1073741824   | 
| slave_net_timeout   | 60     | 
| slave_parallel_type   | DATABASE    | 
| slave_parallel_workers  | 0      | 
| slave_pending_jobs_size_max | 16777216    | 
| slave_preserve_commit_order | OFF     | 
| slave_rows_search_algorithms | TABLE_SCAN,INDEX_SCAN | 
| slave_skip_errors   | OFF     | 
| slave_sql_verify_checksum | ON     | 
| slave_transaction_retries | 10     | 
| slave_type_conversions  |      | 
| sql_slave_skip_counter  | 0      | 
+------------------------------+-----------------------+ 


db> show master status\G; 
|[ 
*************************** 1. row *************************** 
File: bin.000012 
Position: 194 
Binlog_Do_DB: 
Binlog_Ignore_DB: mysql,sys,information_schema,performance_schema 
Executed_Gtid_Set: c389aee6-ca16-11e7-81e3-0242ac110004:1-81, 
dd7aa123-ca18-11e7-9411-0242ac110005:1-13 
1 row in set (0.00 sec) 
]| 

db> show slave status\G; 
|[ 
*************************** 1. row *************************** 
       Slave_IO_State: Waiting for master to send event 
        Master_Host: luexu.com 
        Master_User: Aario 
        Master_Port: 5961 
       Connect_Retry: 60 
       Master_Log_File: bin.000008 
      Read_Master_Log_Pos: 27885 
       Relay_Log_File: 217fcc5843c2-relay-bin.000005 
       Relay_Log_Pos: 27684 
     Relay_Master_Log_File: bin.000008 
      Slave_IO_Running: Yes 
      Slave_SQL_Running: Yes 
       Replicate_Do_DB: 
      Replicate_Ignore_DB: mysql,sys,information_schema,performance_schema 
      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: 27885 
       Relay_Log_Space: 27938 
       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: c389aee6-ca16-11e7-81e3-0242ac110004 
      Master_Info_File: /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: c389aee6-ca16-11e7-81e3-0242ac110004:48-81 
      Executed_Gtid_Set: c389aee6-ca16-11e7-81e3-0242ac110004:1-81, 
dd7aa123-ca18-11e7-9411-0242ac110005:1-13 
       Auto_Position: 1 
     Replicate_Rewrite_DB: 
       Channel_Name: 
      Master_TLS_Version: 
1 row in set (0.00 sec) 
]| 

サーバA(サーバBのマスタ):

db> show master status\G; 
|[ 
*************************** 1. row *************************** 
File: bin.000008 
Position: 27885 
Binlog_Do_DB: 
Binlog_Ignore_DB: mysql,sys,information_schema,performance_schema 
Executed_Gtid_Set: c389aee6-ca16-11e7-81e3-0242ac110004:1-81 
1 row in set (0.00 sec) 
]| 

再起動サーバC上のスレーブ:

db> stop slave; 
db> start slave; 
db> show slave status\G; 
|[ 
*************************** 1. row *************************** 
       Slave_IO_State: 
        Master_Host: luexu.com 
        Master_User: Aario 
        Master_Port: 3306 
       Connect_Retry: 60 
       Master_Log_File: 
      Read_Master_Log_Pos: 4 
       Relay_Log_File: cf3613332a61-relay-bin.000001 
       Relay_Log_Pos: 4 
     Relay_Master_Log_File: 
      Slave_IO_Running: No 
      Slave_SQL_Running: Yes 
       Replicate_Do_DB: 
      Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys 
      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: 0 
       Relay_Log_Space: 308 
       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: 1236 
       Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.' 
       Last_SQL_Errno: 0 
       Last_SQL_Error: 
    Replicate_Ignore_Server_Ids: 
      Master_Server_Id: 65535 
        Master_UUID: dd7aa123-ca18-11e7-9411-0242ac110005 
      Master_Info_File: /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: 171210 04:01:51 
    Last_SQL_Error_Timestamp: 
       Master_SSL_Crl: 
      Master_SSL_Crlpath: 
      Retrieved_Gtid_Set: 
      Executed_Gtid_Set: 074c1f93-dd08-11e7-b173-0242ac110004:1-3 
       Auto_Position: 1 
     Replicate_Rewrite_DB: 
       Channel_Name: 
      Master_TLS_Version: 
]| 

答えて

0

私はあなたの問題について確認していないので、ただいくつかの考えは - 多分あなたはそれらの中にいくつかのインスピレーションを見つける:

を、あなたはいくつかの本当に重要な理由を持っていますかチェーン複製A-> B-> C?この複雑さを避け、AのCレプリカを作成するだけで済みます(すでに動作しているBレプリカの単純なクローン作成でこれを行うことができます):http://mysql.freeideas.cz/subdom/mysql/2017/08/14/create-new-replica-by-copying-data-and-log-files-on-os-level/

本当にレプリケーションをチェーンしなければならない場合は、

私たちは、あるクラウドプロバイダから別のクラウドプロバイダに移動する必要があるときに初めて使用しました。 - (A)を使用して、古いクラウドの古いマスター - >(B)新しいクラウドの新しいマスター - >(C)アプリケーション用の新しいクラウドのレプリカそして今は新しいバージョンのMySQLで新しいアプリケーション開発用に設定しました。 >(B)5.7レプリカ/マスター - >(C)5.7のレプリカhttp://mysql.freeideas.cz/subdom/mysql/2016/11/10/how-to-manually-set-mysql-replication/

意味を:ここで一般的な注意事項を参照してください - あなただけの「マスターレプリカ」の「ON = log_slave_updates」を設定し、AからBを作成したとして、あなたのCのレプリカ(S)Bから同じように作成する必要が

- レプリケーションを停止してテーブルを変更し、Bのマスタステータスを書き留めてCを設定するために、BのBのダンプを作成しなければなりません。 Bの "expire_logs_days"を数日間に設定します(もちろん、十分なディスク容量が必要です)。これらの設定の変更はすべて再起動が必要です。

関連する問題