【保存版】MariaDBレプリケーションスレーブの一時停止方法:STOP SLAVEコマンド徹底解説


STOP SLAVEステートメントは、MariaDBにおいてレプリケーションスレーブサーバー上で実行し、マスターサーバーからのレプリケーションを一時停止するために使用されます。レプリケーションの一時停止は、メンテナンス作業の実施や、データの整合性を確認する場合などに役立ちます。

構文

STOP SLAVE [IO_THREAD | SQL_THREAD]

オプション

  • オプションを指定しない場合、I/OスレッドとSQLスレッドの両方が停止されます。
  • SQL_THREAD: SQLスレッドのみを停止します。I/Oスレッドは継続して実行されます。
  • IO_THREAD: I/Oスレッドのみを停止します。SQLスレッドは継続して実行されます。

動作

STOP SLAVEステートメントを実行すると、以下の処理が行われます。

  1. レプリケーションスレッドが停止されます。
  2. マスターサーバーからの binlog イベントの受信が停止されます。
  3. レプリケーションスレーブサーバー上の relay log ファイルへの書き込みが停止されます。

注意事項

  • レプリケーションを再開するには、START SLAVEステートメントを使用する必要があります。
  • レプリケーションの一時停止中は、レプリケーションスレーブサーバー上でデータベースの更新を行うことは避けてください。
  • STOP SLAVEステートメントを実行すると、レプリケーションスレーブサーバーとマスターサーバー間のデータの整合性が失われる可能性があります。

以下の例では、すべてのレプリケーションスレッドを停止します。

STOP SLAVE;

以下の例では、I/Oスレッドのみを停止します。

STOP SLAVE IO_THREAD;


STOP SLAVE;

この例では、STOP SLAVEステートメントのみを使用し、オプションを指定していません。その結果、I/OスレッドとSQLスレッドの両方が停止されます。

例2:I/Oスレッドのみを停止する

STOP SLAVE IO_THREAD;

この例では、STOP SLAVEステートメントとIO_THREADオプションを組み合わせて使用しています。これにより、I/Oスレッドのみが停止され、SQLスレッドは継続して実行されます。

STOP SLAVE SQL_THREAD;
  • ステートメントを実行するには、MariaDBクライアントツールを使用して接続し、ステートメントを入力して実行します。
  • 上記の例では、ステートメントの最後にセミコロン(;)を使用しています。これは、ステートメントを終了させるために必要な記号です。


MariaDBの「STOP SLAVE」ステートメントは、レプリケーションスレーブサーバー上でマスターサーバーからのレプリケーションを一時停止するために使用されます。しかし、状況によっては「STOP SLAVE」の代替方法の方が適切な場合があります。

代替方法

  1. CHANGE MASTER TO ... WITH MASTER_DELAY: このステートメントを使用すると、レプリケーションスレーブサーバーがマスターサーバーからのイベント受信を遅延させることができます。これは、レプリケーションの一時停止と似ていますが、レプリケーションスレーブサーバーが完全に停止することはありません。
CHANGE MASTER TO MASTER_HOST='<master_server_host>',
MASTER_PORT=<master_server_port>,
MASTER_USER='<replication_user>',
MASTER_PASSWORD='<replication_password>',
MASTER_LOG_FILE='<master_log_file>',
MASTER_LOG_POS=<master_log_pos>,
WITH MASTER_DELAY=<delay_in_seconds>;
  1. SET GLOBAL SQL_SLAVE_SKIP_COUNTER: このステートメントを使用すると、レプリケーションスレーブサーバーが特定の数のマスターサーバーイベントをスキップするように指示できます。これは、レプリケーションエラーからの復旧に使用できます。
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=<number_of_events_to_skip>;
  1. レプリケーションスレーブサーバーをシャットダウンする: これは最後の手段ですが、レプリケーションを完全に停止する必要がある場合は、レプリケーションスレーブサーバーをシャットダウンすることができます。ただし、シャットダウンする前に、レプリケーションスレーブサーバー上のデータが失われないように、適切なバックアップと復旧手順を講じてください。
方法説明利点欠点
CHANGE MASTER TO ... WITH MASTER_DELAYレプリケーションスレーブサーバーがマスターサーバーからのイベント受信を遅延させるレプリケーションスレーブサーバーを完全に停止する必要がないマスターサーバーとスレーブサーバー間の遅延時間が増大する可能性がある
SET GLOBAL SQL_SLAVE_SKIP_COUNTERレプリケーションスレーブサーバーが特定の数のマスターサーバーイベントをスキップするように指示するレプリケーションエラーからの復旧に役立つスキップするイベントの数を正確に把握する必要がある
レプリケーションスレーブサーバーをシャットダウンするレプリケーションを完全に停止する他の方法では解決できない問題を解決できるデータ損失のリスクがある