MySQL5.1でのレプリケーションについて知ったこと
MySQL5.1系を使用していた古いシステムがあり、アップグレードする際の調査工程でレプリケーションについて学んだことがあり、今回それを備忘録として書きます。
レプリケーションとは、マスタサーバのデータをスレーブサーバ上に複製することをですが、
主な目的は下記の2つでしょう。
- 可用性の向上
- 負荷分散
レプリケーションでは、一般的には、
更新系をマスターで、参照系をスレーブで行うような役割分担かと思います。
(マスタ・スレーブ型)
今回知ったこととしては、
更新系も参照系も両方の役割を行えるようにしたマルチマスタ型での構築もできるということです。
欠点は、同期にかかるコストが、マスタ・スレーブ型の2倍?となる点でしょうか?
一方、利点はあまり思い浮かびませんでした。
また、同期の取り方も大きく2種類あるようで、
1つが、
マスタ側への更新処理が、スレーブ側に反映されるまでマスタ側では更新完了とならないパターン(同期型)、
もう1つが、
マスタ側への更新処理は、いったん完了させ、更新した内容をログに書き込んだ後、スレーブ側がログファイルを読み込み同期をとるパターン(非同期)、
があるようです。
なお、MySQLが当時サポートしていたのは後者のパターンだそうです。(今は??)
レプリケーションを行う際の基本的な事項として、下記の対応を行う必要がある。
- マスタとスレーブは同じバージョンのMySQLを使用すること
- マスタとスレーブは同じ文字コードを使用すること
- マスタ・スレーブ間の通信を行うためのポートを開けること
- マスタ側の設定としてREPLICATION SLAVE権限をスレーブ側に設定し、スレーブからのアクセス許可を行うこと
今回、古いですがこちらの本を参考にしました。