mysqlの Slave_IO_Running と Slave_SQL_Running の違い


勉強前イメージ

どっちもyesだよね、って確認するやつ
今更ながらちゃんと確認。
IO_Running → masterのポジション認識?
SQL_Running → slaveに適応した?

調査

Slave_IO_Running

マスターのバイナリログを読み取るためのI/Oスレッドが実行しているかどうか。

内部的には MYSQL_SLAVE_NOT_RUNMYSQL_SLAVE_RUN_NOT_CONNECTMYSQL_SLAVE_RUN_CONNECT で表されます。

  • MYSQL_SLAVE_NOT_RUN
    • I/Oスレッドが実行されていません。
    • Slave_IO_Running : No になります。
  • MYSQL_SLAVE_RUN_NOT_CONNECT
    • I/Oスレッドは実行されていますが、masterに接続されていません。
    • 5.1,5.5,5.6 : Connecting になります。
  • MYSQL_SLAVE_RUN_CONNECT
    • I/Oスレッドが実行されており、masterに接続されている。
    • Slave_IO_Running : Yes になります。

Slave_SQL_Running

SQLスレッドが起動しているかどうか。
slaveのSQL処理が実施しています。

勉強後イメージ

Slave_IO_RunningってConnectingになるのか・・・
イメージとは合ってたけど、IO_Runningがちょっと違った。
masterポジション確認だけじゃなくて、masterのポジションを確認するi/oが起動しているかどうかも入るのか・・・

参考