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
を利用してそれらが満足に機能している事を確認する必要があります。
どのスレッドをスタートするかを指定する為に、ステートメントに
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
内でいまだに後方互換の為に許容されていますが、廃止予定になっています。