ステップバイステップガイド:MariaDBマルチソースレプリケーション環境から不要なConnection_nameを削除する方法
マルチソースレプリケーションにおけるMariaDBの特定のConnection_nameの削除方法
このチュートリアルでは、マルチソースレプリケーション環境において、MariaDBスレーブサーバーから特定のConnection_nameを削除する方法を説明します。
前提条件
- MariaDBスレーブサーバーが実行されている
- 削除対象のConnection_nameの情報を持っている
手順
- stop slaveコマンドを実行
STOP SLAVE;
- CHANGE MASTER TOコマンドを使用して、削除対象のConnection_nameを設定していないマスタサーバーに切り替える
CHANGE MASTER TO
MASTER_HOST='<master_server_host>',
MASTER_USER='<master_user>',
MASTER_PASSWORD='<master_password>',
MASTER_PORT=<master_server_port>,
MASTER_LOG_FILE='<master_log_file>',
MASTER_LOG_POS=<master_log_pos>;
- SLAVE_IGNORE_SERVER_IDオプションを使用して、削除対象のConnection_nameに対応するサーバーIDを無視するように設定する
SET GLOBAL slave_ignore_server_id=<server_id_to_ignore>;
- RESET SLAVEコマンドを実行
RESET SLAVE;
- START SLAVEコマンドを実行して、レプリケーションを再開する
START SLAVE;
説明
上記のステップは、以下の操作を行います。
- stop slaveコマンド は、スレーブサーバーのレプリケーションスレッドを停止します。
- CHANGE MASTER TOコマンド は、スレーブサーバーがレプリケーションを行うマスタサーバーを変更します。この場合、削除対象のConnection_nameを設定していないマスタサーバーに切り替えます。
- SLAVE_IGNORE_SERVER_IDオプション は、スレーブサーバーが特定のサーバーIDからのレプリケーション要求を無視するように設定します。この場合、削除対象のConnection_nameに対応するサーバーIDを無視するように設定します。
注意事項
- 上記の手順を実行する前に、必ずバックアップを取っておいてください。
- 複数のConnection_nameを削除する場合は、上記の手順をそれぞれの実行する必要があります。
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'replication_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;
スレーブサーバーの設定
CHANGE MASTER TO
MASTER_HOST='<master_server_host>',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_password',
MASTER_PORT=<master_server_port>,
MASTER_LOG_FILE='<master_log_file>',
MASTER_LOG_POS=<master_log_pos>;
START SLAVE;
Connection_nameの削除
STOP SLAVE;
DELETE FROM mysql.slave_master_info
WHERE Connection_name = '<connection_name>';
RESET SLAVE;
START SLAVE;
上記のコードは、マスタサーバーでレプリケーションユーザーを作成し、権限を付与します。
上記のコードは、スレーブサーバーでCHANGE MASTER TOコマンドを使用してマスタサーバーを設定し、START SLAVEコマンドを実行してレプリケーションを開始します。
上記のコードは、STOP SLAVEコマンドでレプリケーションを停止し、DELETE FROM mysql.slave_master_infoステートメントを使用してmysql.slave_master_infoテーブルからConnection_nameを削除します。その後、RESET SLAVEコマンドでレプリケーション状態をリセットし、START SLAVEコマンドでレプリケーションを再開します。
- 上記のコードはあくまで一例であり、環境に合わせて変更する必要があります。
マルチソースレプリケーションにおけるMariaDBの特定のConnection_nameの削除方法:代替方法
方法 1:mysql.rds_reset_external_source_for_channelプロシージャを使用する
この方法は、Amazon RDS for MySQLを使用している場合にのみ適用されます。
CALL mysql.rds_reset_external_source_for_channel('<channel_name>');
方法 2:RESET SLAVE ALLコマンドを使用する
この方法は、すべてのConnection_nameを削除します。
RESET SLAVE ALL;
- 方法 1を使用する場合は、削除対象のConnection_nameに対応するチャネル名を指定する必要があります。
- 方法 2を使用する場合は、すべてのConnection_nameが削除されるため、注意が必要です。
上記の情報に加えて、以下の点にも注意する必要があります。
mysql replication mariadb