質問: 地理的に離れたサーバー間でのmysqlレプリケーション 私の組織は、バックアップを最新の状態に保ち、理想的には負荷を分散させながら、サーバーを地理的に分散させる方法を検討してきました。私が最初に頭に浮かぶのはrailsです。書き込み速度はそれほど高くありません(記事/コメントは1分あたり1未満のままですが、大きなメディア添付ファイルがあるものもあります)。そう、 mysqlレプリケーションはワイドエリアネットワーク全体でうまく機能しますか? 接続(またはスレーブサーバー)がダウンしているということは、手動による介入が必要であることを意味しますか(2つのサーバーが再び通信できるようになると)、それとも回復は自動的に行われますか? マスターが消えた場合、スレーブをマスターに変えるには何が必要ですか?それを管理するのに役立つ標準のスクリプト/ツールはありますか? 他の落とし穴などはありますか?
回答: mysql5.1ではレプリケーションが劇的に変更されました。 5.0では、ステートメントベースのレプリケーションのみが使用されていました。行ベースのレプリケーションまたは混合ベースのレプリケーションを実行するオプションがあります。これは、wanを介した複製方法に大きく影響します。次のいずれかの機能がある場合:a)ipテイクオーバーを実行します(サーバーが地理的に離れている場合、これは起こりそうにありません)b)アジャイルdns変更を行うアプリコード/構成を変更してマスターを変更することを回避できます。短いキャッシュと偽の.internalドメインを持つ内部dnsを使用します。 masterdb.internalを他のサーバーに変更する必要がある場合は、5秒で変更が反映されます。単一のデータセンター内で、ipテイクオーバーを使用します。すべてのdbサーバーには、起動時に起動されない仮想インターフェイス(eth0:1、eth0:2、eth0:3)があります。スレーブの1つが引き継ぐ必要がある場合は、eth0:2をifupするだけで、それがマスターになります。このシナリオでは、eth0はシェルインなどに使用する「if」です。アプリはeth0:1で接続しますが、スクリプトがipの取得を検出した場合、起動時にアクティブ化されません。 (wikipedia stonith)他のifは、フェイルオーバーが必要な可能性のあるマスターのipを引き継ぐためのものです。