MySQLのインスタンスが2つあり、1つはマスター、もう1つはスレーブです。
ダウンタイムを回避しながら、スレーブをマスターに、またはその逆に切り替えるにはどうすればよいですか?
DBVIPを使用する場合は、マスターからDBVIPを削除して、スレーブで起動することができます。
10.1.2.30
のようなDBVIPを作成しましょう。
これをOSのマスターに配置します
ip addr addr 10.1.2.30/24 dev eth1
アプリケーションのIPを10.1.2.30
に置き換えます。アプリケーションがしばらく実行を続け、DBVIPがアプリケーションによって使用されていることを確認します。
これは攻撃的なものです:
service httpd stop
service mysql stop
ip addr del 10.1.2.30/24 dev eth1
ip addr add 10.1.2.30/24 dev eth1
service httpd start
SHOW PROCESSLIST;
は、着信DB接続があることを確認しますApacheサーバーからのDB接続が表示される場合、[〜#〜] congratulations [〜#〜]フェイルオーバーを手動で実行しました。
DBVIPを使用できない場合は、代わりにさらに作業を行う必要があります
ステップ01)スレーブでバイナリログを有効にする
これをスレーブの/etc/my.cnfに追加します
[mysqld]
log-bin=mysql-bin
STEP02)スレーブ上のservice mysql restart
スレーブでバイナリログを有効にする必要があります
STEP03)マスターとしてスレーブを使用してマスターでCHANGE MASTER TO
コマンドを実行します
STEP04)マスターでSTART SLAVE;
を実行します
この時点で
この構成は、
STEP05)すべてのApacheサーバーでのservice httpd stop
STEP06)アプリのIPアドレスを変更してスレーブに接続する
STEP07)すべてのApacheサーバーでservice httpd start
STEP08)スレーブのSHOW PROCESSLIST;
は、着信DB接続があることを確認します
ApacheサーバーからのDB接続が表示される場合、[〜#〜] congratulations [〜#〜] MySQLダウンタイムなしで手動でフェイルオーバーを実行しました。唯一のダウンタイムは、STEP05からSTEP07の時間枠によるものです。