mysql:15119
From: Seiichirou Hiraoka <Seiichirou Hiraoka <flathill@xxxxxxxxxx>>
Date: Thu, 24 Dec 2009 18:44:04 +0900 (JST)
Subject: [mysql 15119] MySQL の冗長化方針について
平岡と申します。
現在 MySQL を 2 台のサーバに導入して、運用系と待機系として
動作させて、運用系に障害が発生した際や停止が必要な場合は
IP アドレスを待機系と付け替えることで運用しています。
Server1:MySQL (運用系) Server2:MySQL (待機系)
^
|
参照・更新
このシステムを今後以下のように改善したいと思います。
- 負荷分散
応答速度向上のため、参照要求を 2 台のサーバに分散したい。
更新要求は通常片方のサーバのみで処理して良いが、サーバが
停止した際は別のサーバで代行したい。
- 同期
2 台のサーバをレプリケーションにより自動的に同期したい。
- 冗長化
運用系から待機系に切り替える必要が無いようにしたい。
- 障害・停止時対応
障害や停止が発生した際に、出来る限り容易に通常状態に
復旧させたい。
- アプリケーションの対応
上記の要件をアプリケーション側の対応無しで実現したい。
これを実現するために、以下の方法を検討しております。
o シングルマスタ、シングルスレーブ
(マスタの更新内容をスレーブにレプリケーション)
Server1:MySQL (マスタ) -- 更新 --> Server2:MySQL (スレーブ)
^ ^
| |
参照・更新 参照
- スレーブ側への更新要求は失敗するため、マスタ側へは更新・
参照、スレーブ側へは参照のみを (アプリケーション側が意識
すること無く) 振り分ける方法はありますでしょうか。
MySQL Proxy を利用するのが適当でしょうか。
- マスタを停止すると、更新が行えなくなると思いますが、
スレーブで (一時的に) 代行する事は可能でしょうか。
マスタの復帰後は、スレーブに行った更新をマスタにも簡単
に反映する、といった都合の良い事を考えています。
o マルチマスタ
(相互に更新内容をレプリケーション)
Server1:MySQL (マスタ) <-- 更新 --> Server2:MySQL (マスタ)
^ ^
| |
参照・更新 参照・更新
- 2 台のマスタに対して、同時に同じデータの更新を行った場合、
整合性が取れなくなるといった危険性はありますでしょうか。
- 片側が障害や作業で停止した際に、再び起動する際には何らか
の手間が必要でしょうか。
- アプリケーションから 2 台のサーバへの接続要求を振り分ける
方法として、DNS のラウンドロビンで問題はあるでしょうか。
また、それ以外に良い方法はありますでしょうか。
尚、規模的には MySQL Cluster を使う程ではないと考えており
ます。また、マルチマスタは障害発生時のリカバリが大変である
と考えておりますので、出来ればシングルマスタで運用したいと
思います。
もしくは、上記以外の方法があれば御教示頂けますと幸いです。
以上、よろしくお願い致します。
--
平岡 征一朗
-> 15119 2009-12-24 18:44 [Seiichirou Hiraoka <] MySQL の冗長化方針について 15120 2009-12-24 19:19 ┣["Tadayuki Abraham HA] MySQL のデータの所定のデータに対して、住基カード内蔵のiso7816スマートカードICで電子署名を付与できますか? 15127 2010-01-05 10:17 ┗[Seiichirou Hiraoka <] 15141 2010-01-11 06:56 ┗[konbuizm <konbuizm@x] 15142 2010-01-12 11:12 ┗[Seiichirou Hiraoka <]