START SLAVE [thread_type
[,thread_type
] ... ] START SLAVE [SQL_THREAD] UNTIL MASTER_LOG_FILE = 'log_name
', MASTER_LOG_POS =log_pos
START SLAVE [SQL_THREAD] UNTIL RELAY_LOG_FILE = 'log_name
', RELAY_LOG_POS =log_pos
thread_type
: IO_THREAD | SQL_THREAD
thread_type
オプションを持たない
START SLAVE
は両方のスレーブスレッドをスタートします。I/O
スレッドはマスタサーバーからクエリーを読み、それらをリレーログ内に格納します。SQL
スレッドはリレーログを読みこみ、クエリーを実行します。START
SLAVE
は
SUPER
権限を必要とします。
もし START
SLAVE
がスレーブスレッドのスタートに成功すると、エラーなしで返ります。しかし、そのよう場場合でも、スレーブスレッドがスタートし、その後停止する、ということになり得ます。(たとえば、マスタに接続できなかったり、マスタのバイナリログを読めなかったり、それ以外の問題のため)START
SLAVE
からはこれについての警告はありません。スレーブスレッドによって発生したエラーメッセージに対するスレーブのエラーログの確認、また
SHOW SLAVE
STATUS
を利用してそれらが満足に機能していることを確認する必要があります。
START SLAVE
は、IO スレッドと SQL
スレッドの両方が起動されたあとに、ユーザーに肯定応答を送信します。ただし、IO
スレッドはまだ接続されていない可能性があります。このため、START
SLAVE
が成功すると
SHOW SLAVE
STATUS
に
Slave_SQL_Running=Yes
が表示されますが、これによって
Slave_IO_Running=Yes
が保証されるわけではありません
(Slave_IO_Running=Yes
は
IO
スレッドが実行中で、かつ接続されている場合のみのため)。詳細については、項8.5.5.36. 「SHOW SLAVE STATUS
構文」
および Checking Replication Status
を参照してください。
どのスレッドをスタートするかを指定するために、ステートメントに
IO_THREAD
と
SQL_THREAD
オプションを追加することができます。
UNTIL
節は、SQL
スレッドがマスタバイナリログ、またはスレーブリレーログ内の指定ポイントに達するまで、スレーブがスタート、起動することを指定するために追加されるかもしれません。SQL
スレッドがそのポイントに達すると、それは停止します。もし
SQL_THREAD
オプションがステートメント内で指定されると、それは
SQL
スレッドのみをスタートします。そうでなければ、それはスレーブスレッドを両方スタートします。もし
SQL
スレッドが起動していると、UNTIL
節は無視され、警告が発行されます。
UNTIL
節の場合は、ログファイル名と位置の両方を指定する必要があります。マスタとリレーログオプションを混同しないでください。
すべての UNTIL
条件は、後に続く
STOP SLAVE
ステートメント、UNTIL
節を含まない START
SLAVE
ステートメント、またはサーバーの再スタートによってリセットされます。
UNTIL
節は、デバッグのレプリケーションや、スレーブがステートメントを複製するのを防ぎたいポイントの直前までレプリケーションが続くように働きかけるのに役に立ちます。たとえば、マスタ上でもし分別のない
DROP TABLE
ステートメントが実行されたら、スレーブがそのポイントまでは実行し、それ以上は進まないように指示するため
UNTIL
を利用することができます。イベントが何であるかを調べるためには、マスタログかスレーブリレーログと共に、mysqlbinlog
利用するか、または
SHOW BINLOG
EVENTS
ステートメントを利用してしてください。
もしスレーブプロセス複製クエリーを節の中で持つために
UNTIL
を利用していたら、スレーブサーバーがスタートするときに
SQL
スレッドが起動するのを防ぐために、スレーブを
--skip-slave-start
オプションでスタートするすることが推奨されています。予期せぬサーバーの再スタートによって忘れられることを防ぐため、コマンドライン上ではなく、オプションファイル内でこのオプションを利用するのが一番良いでしょう。
SHOW SLAVE
STATUS
ステートメントは
UNTIL
条件の現在の値を表示する出力フィールドを含んでいます。
MySQL の古いバージョン内では (4.0.5
以前)、このステートメントは
SLAVE START
と呼ばれていました。この使用法は、下位互換性のために
MySQL 5.1
で引き続き受け入れられますが、推奨されません。