クエリで「スレーブステータスを表示」を使用せずにmysql DBがスレーブであることを確認する方法は?
3 に答える
レプリケーションが実行されているかどうかを検出する必要がある 3 つのオプションを次に示します。
オプション #1 : ステータス変数 'Slave_running' を確認する
MySQL 5.1/5.5 の使用
select variable_value from information_schema.global_status
where variable_name = 'Slave_running';
MySQL 5.0 以前の使用
SHOW VARIABLES LIKE 'Slave_running';
オプション #2 : プロセス リストを確認する
MySQL 5.1+/5.5 の使用
select COUNT(1) SlaveThreads
from information_schema.processlist
where user = 'system user';
- SlaveThreads = 2 の場合、レプリケーションは実行中です
- SlaveThreads = 1 の場合、レプリケーションは壊れています
- SlaveThreads = 0 の場合、レプリケーションは停止または無効になります
MySQL 5.0 以前の使用
SHOW PROCESSLIST;
ユーザー列に「システム ユーザー」が含まれている 2 つの DB 接続を探します。
オプション #3 : master.info の存在を確認する
レプリケーションが DB サーバーでセットアップされている場合は、master.info を探します。デフォルトでは、master.info は通常、/var/lib/mysql または datadir が定義されている場所にあります。
「cat master.info」を複数回実行するだけです (Windows コミュニティの場合は、master.info と入力します)。ログの位置が移動している場合、レプリケーションはオンになっています。ログの位置が移動していない場合は、レプリケーションが壊れている (SQL スレッドの SQL エラー)、停止している ( が原因STOP SLAVE;
)、または無効になっている (実行中CHANGE MASTER TO MASTER_HOST='';
) ことを意味している可能性があります。
MySQL doc - Checking Replication Statusによると:
Slave_IO_Running : マスターのバイナリ ログを読み取るための I/O スレッドが実行されているかどうか。通常、レプリケーションをまだ開始していないか、または STOP SLAVE で明示的に停止していない限り、これを Yes にする必要があります。
Slave_SQL_Running : リレー ログでイベントを実行するための SQL スレッドが実行されているかどうか。I/O スレッドと同様に、これは通常は [はい] にする必要があります。