メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

mysql.rds_next_master_log

レプリケーションマスターのログ位置を、マスター上にある次のバイナリログの開始位置に変更します。このプロシージャは、リードレプリカでレプリケーション I/O エラー 1236 が発生した場合にのみ使用してください。

構文

Copy
CALL mysql.rds_next_master_log( curr_master_log );

Parameters

curr_master_log

現在のマスターログファイルのインデックス。たとえば、現在のファイルが mysql-bin-changelog.012345 という名前の場合は、インデックスは 12345 になります。現在のマスターログファイルの名前を調べるには、SHOW SLAVE STATUS コマンドを実行し、Master_Log_File フィールドを確認します。

使用に関する注意事項

mysql.rds_next_master_log プロシージャは、マスターユーザーが実行してください。

警告

mysql.rds_next_master_log は、レプリケーションソースであるマルチ AZ DB インスタンスのフェイルオーバーの後でレプリケーションが失敗し、Last_IO_ErrnoSHOW SLAVE STATUS フィールドが I/O エラー 1236 を示している場合にのみ呼び出してください。

mysql.rds_next_master_log を呼び出すと、フェイルオーバーイベントが発生する前にレプリケーション元のインスタンスのトランザクションがディスク上にあるバイナリログに書き込まれなかった場合は、リードレプリカでデータが失われる可能性があります。このような問題が発生する可能性を減らすには、レプリケーション元のインスタンスのパラメータ sync_binlog = 1 と innodb_support_xa = 1 を設定します。ただし、これによりパフォーマンスが低下する場合があります。詳細については、「PostgreSQL、MySQL、および MariaDB リードレプリカの使用」を参照してください。

mysql.rds_next_master_log プロシージャは、以下のバージョンの Amazon RDS MySQL で利用できます。

  • MySQL 5.5

  • MySQL 5.6

  • MySQL 5.7

Amazon RDS リードレプリカでレプリケーションが失敗することを前提としています。レプリカで SHOW SLAVE STATUS\G を実行すると、次の結果が返されます。

Copy
*************************** 1. row *************************** Slave_IO_State: Master_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Master_User: MasterUser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-bin-changelog.012345 Read_Master_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Master_Log_File: mysql-bin-changelog.012345 Slave_IO_Running: No 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: 30223232 Relay_Log_Space: 5248928866 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: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 67285976

Last_IO_Errno フィールドはインスタンスが I/O エラー 1236 を受け取ったことを示します。Master_Log_File フィールドは、ファイル名が mysql-bin-changelog.012345 であることを示しています。これは、ログファイルのインデックスが 12345 であることを表しています。エラーを解決するには、次のパラメータを使用して mysql.rds_next_master_log を呼び出すことができます。

Copy
CALL mysql.rds_next_master_log(12345);