【MySQL】DBのマスター・スレーブの見分け方、確認方法。
はじめに
複数台あるMySQLのDBサーバーでレプリケーション管理を行うという事は、マスターとスレーブが存在する事になります。
何らかの事情により、直接DB内のレコードを操作する必要がある場合、誤ってスレーブで作業してしまうと、レプリが切れて障害へと繋がる危険性が高いです。
本来はホスト名などで管理するので、そうそうmasterとslaveを見失うという事はないでしょうが、MHAなどで死活管理していると、何らかのホスト障害のタイミングでマスタースレーブが入れ替わり、気付かずそのまま、という事も無くはありません。
今回はMySQLにおけるレプリケーション設定の確認と、マスター・スレーブの見分け方をメモします
・マスターであることを確認
1.show slave status\G での確認
1 |
$ mysql -u root -e 'show slave status\G' |
とコマンドを入力し、結果がemptyであればそのサーバが他のサーバからレプリケーションをしてないことが確認できる。
2.show processlist での確認
1 |
$ mysql -u root -e 'show processlist' |grep bin |
とコマンドを入力し、結果の Command カラムに Binlog Dumpというのがあればそのサーバに対してレプリケーションをはってるサーバがいるという事
※ただし、だからと言って必ずマスタであるとは限らない
- 親・子・孫と階段上にレプリケーションを貼ることもできるから
- ただ、通常は基本しない
MHA構成でマスターに付けるaliasIP(それに対して内部DNSを登録してる場合もある)がある場合、そこのIPにsshするなどしてマスターであることを確認する。
・スレーブであることを確認
1.show slave status\G での確認
1 |
$ mysql -u root -e 'show slave status\G' |
とコマンドを入力して、Slave_IO_RunningとSlave_SQL_Runningが両方YESの場合はスレーブでちゃんとレプリケーションされている状態であるということが確認できます。
Master_Hostの項目のFQDN or IPアドレスがそのサーバがレプリケーションをしてる元のサーバであることがわかります。
2.show processlist での確認
1 |
$ mysql -u root -e 'show processlist' |grep bin |
とコマンドを入力して、結果のCommandカラムにBinlog Dump というのがなければそのサーバにスレーブがいない事が確認でき、スレーブである事がわかります
・結論
面倒ではありますが、頑張ってレプリ構成を追うのが確実です。
aliasIPがある場合は、aliasIPにsshして $ mysql -u root -e ‘show slave status\G’ で empty になることを確認するのが一番確実で早い方法となります。
関連記事
http://astone.jeez.jp/mysql_master_slave/http://astone.jeez.jp/wp-content/uploads/2016/04/168H.jpghttp://astone.jeez.jp/wp-content/uploads/2016/04/168H-150x150.jpgServerMySQL,server,メモ,レプリケーション
コメントを残す