web-dev-qa-db-ja.com

MySQLレプリケーションの自動フェイルオーバー戦略

マスターがダウンしているかのように何らかの理由でレプリケーションがダウンしている場合、手動でプロセスに介入することなくレプリケーションが即座にアップするように、どのような戦略に従う必要があるか、つまり、DBAが利用できないときにレプリケーションがダウンしている場合、どのように自動フェイルオーバーが行われます。

1
Yogesh Ballani

信じられないかもしれませんが、5日前に次のような質問に答えました: MySQL Replication and High Availability

私が提供したその回答から、レプリケーションラグや古いマスターが完全に利用できないことを確認するために特別にスクリプトを作成しない限り、純粋なMySQLレプリケーションでの自動フェイルオーバーは推奨しません( [〜#〜] stonith [〜#〜]

別の方法として、DRBDペアをセットアップし、HeartBeatを使用してDRBDプライマリでmysqlを実行し、DRBDプライマリの利用不可を検出します。

実際のフェイルオーバーが発生すると、逆方向のフェイルオーバーを設定するために手動で介入する必要があります。

1
RolandoMySQLDBA

MySQL 5.6はレプリケーションにグローバルトランザクション識別子を導入し、障害回復を自動化できる新しいフェイルオーバーおよびスイッチオーバーユーティリティでこれらを補完します

MySQL 5.6でのレプリケーションの詳細については、こちらをご覧ください。 http://dev.mysql.com/tech-resources/articles/mysql-5.6-replication.html

また、これらのユーティリティが自己回復型クラスターを提供する方法を説明するチュートリアルを見ることができます。 http://dev.mysql.com/tech-resources/articles/mysql-replication-utilities.html

2
Mat Keep

あなたの質問に直接または単純な答えはありません。

MySQLレプリケーションは、レプリケーションを提供します。これは、ライブデータセットのレプリカを通常はほぼリアルタイムで複数のサーバーに維持するメカニズムです。

レプリケーションは 多くの異なる目的 に使用されます。これには、マスターサーバーが停止した場合のアプリケーションのフォールト/フォールトトレランスが含まれます(これに限定されません)。ただし、MySQLが提供するのはデータの同期です。

フェイルオーバーは、MySQLの外部のリソースとシステムによってのみ提供でき、これらは大きく異なります。

ドキュメントから:

冗長性を実装する方法は、アプリケーションと状況に完全に依存します。高可用性ソリューション(自動フェイルオーバーあり)には、アクティブな監視と、元のMySQLサーバーからスレーブへのフェイルオーバーサポートを提供するカスタムスクリプトまたはサードパーティツールのいずれかが必要です。

- http://dev.mysql.com/doc/refman/5.5/en/faqs-replication.html#qandaitem-B-13-1-9

現在、障害発生時にマスターとスレーブ間でフェイルオーバーを提供するための公式のソリューションはありません。現在利用可能な機能では、マスターとスレーブ(またはいくつかのスレーブ)をセットアップし、マスターが起動しているかどうかを監視するスクリプトを記述する必要があります。次に、障害が発生した場合にマスターを変更するようにアプリケーションとスレーブに指示します。

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

1