web-dev-qa-db-ja.com

マスターがフェイルオーバーされるか焼き付けられた直後に実際にMySQLスレーブを使用する方法

正常に機能するMySQLマスター/スレーブレプリケーションがあります。ネット全体とMySQLサイトをグーグル検索して、レプリケーションを利用する標準的な手順を見つけましたが、何も見つかりませんでした。これは、管理者がレプリケーションを実行して満足しているように見えますが、災害復旧を実行する時期になったとき、最初の計画は実施されておらず、公開されていません。

私が知りたいのは、後で損傷したり焼けたりした場合に備えて、スレーブマシンをマスターマシンに置き換える方法です。スレーブマシンはマスターのネットワークアドレスを取得する必要がありますが、他に何をすべきですか?たとえば、MySQLのユーザー権限を変更したり、いくつかのコマンドを実行したりします。参照がある場合は含めてください。

7
Jawad Al Shaikh

DRソリューションでは、ほとんどの場合、半手動プロセスが必要です。つまり、災害が完全なDRフェイルオーバーを検証することを決定する必要があり、それは単なる小さなネットワークブリップではなく、何日ものフェイルバック作業で立ち往生しています。

MySQLスレーブをマスターに切り替えるには、mysqlでいくつかのコマンドを発行するだけです。Mysqlの詳細は こちら で確認できます。

プロセス全体をスクリプト化して(そしてそれをテストして)、DRフェイルオーバーを実行するためにボックスで実行したい他のコマンドを追加することを強くお勧めします(Web層またはその他の必要なものを再起動します)。管理サーバーで func を使用して、アプリケーションのすべての層でフェイルオーバーコマンドを実行します。

災害復旧について言及するときは、サイトの障害について話しています。クラスターのフェイルオーバーの場合は、おそらく自動的ではるかに簡単なはずです。

11
HampusLi

MySQLサーバーをレプリカで置き換えるために必要なことは、サーバーのIPアドレスを切り替えることだけであり、MySQLではそれ以上のコマンドは必要ありません。

安心をお望みでこれを自動的に行う場合は、さらに快適にするために、次の操作を実行できます。

  • 両方のMySQLサーバーにマスターマスターレプリケーションを実行させます。チェックしてください ここ
  • 最初のマスターサーバーで使用される仮想IPを作成します。これにはハートビートを使用します(LinuxHAプロジェクトの一部)が、OSに適した武器を使用できます
  • スイッチオーバーするIPのパラメーターを構成します。これは、ネットワークのダウン、他のマシンの停止、または単にMySQLのシャットダウンなどが考えられます

このセットアップには多くの利点があり、トラフィックを別のノードに切り替えることで簡単にメンテナンスを行うことができ、手間のかからない回復が可能です。ベッドから出る必要さえありません:) 1つの推奨事項はありますが、仮想IPパラメータの場合、両方のノードが仮想IPを要求しようとする可能性があり、これは望ましい結果ではありません。

7
lynxman

MySQLスレーブが2つあると仮定します。スレーブ1とスレーブ2です。マスターがダウンしている場合、スレーブ1を昇格して新しいマスターにすることを決定します。私は従うべき手順を提案します:

すべてのスレーブがリレーログのステートメントを次のように処理したことを確認します。

mysql> STOP SLAVE IO_THREAD;
mysql> SHOW PROCESSLIST; to see `Has read all relay log` state.

スレーブ1で、次のようにしてマスターになるようにプロモートします。

mysql> STOP SLAVE;
mysql> RESET MASTER;

スレーブ2で、次のコマンドを使用して新しいマスターをポイントします。

mysql> CHANGE MASTER TO MASTER_Host='slave 1';
mysql> START SLAVE;

そして最後に、各クライアントにそのステートメントをスレーブ1に送るように指示します。

http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html

3
quanta