MySQLのレプリケーションをしてみた。
今までMySQLは基本的には1台でしか使っていなかったのでレプリケーションの必要性がなかったけど、やりたいことがあってレプリケーションをしてみた。
ググってみると、結構面倒な感じだったけど、2台ともphpMyAdminを使ったら簡単にできたのでメモ。
今回試したのは、linuxサーバとWindowsサーバのMySQL。
Windowsサーバの方は外部に公開していないので、ApacheからMySQLから何も入っていない状態。
今回、MySQLは普通に使うので通常通りのインストール。
phpMyAdminを使いたいけど、Apacheをインストールしたくは無かったので、
インストールしないで使えるApacheを使ってphpMyAdminを利用。
このサイトがわかりやすかった。
で、本題。今回マスタはLinux、スレーブはWindows。
使用するMySQLのバージョンは5.5
マスタ側の操作
・phpMyAdminでレプリケーションを選択。
・スレーブレプリケーションのユーザを追加
→レプリケーション用のユーザIDとパスワードを入力してユーザを追加
・マスタレプリケーションの設定から、すべてのDBを対象とするか一部のDBを対象とするかを選択。
→今回は一部のDBのみで良いので、そのように設定。
→my.iniに画面上に出た内容を追加。Server-IDをメモ。
→バイナリログの自動削除設定も追加(mysqldセクションにexpire_logs_days=xx) xxは日数
→mySQLの再起動
・iptablesで3306ポート開放。(スレーブ側のIPだけ許可)
・対象DBのエクスポート
スレーブ側の操作
・my.iniにマスタ側のServer-IDと違うものを追加。
server-id=xxxxxx (マスタ側のServer-IDに1を足したものにした。)
・MySQLサービスの再起動
・phpMyAdminでレプリケーションを選択
・スレーブレプリケーションの設定から、先ほど作ったユーザIDとパスワードとマスタ側のIPを入力して登録。
・すべてのDBを対象の場合は特に必要ないけど、一部のDBのみを対象の場合は、my.iniに以下の内容を追加
replicate-do-db=xxxxxx (xxxxxxはDB名)
・MySQLサービスの再起動
・先ほどマスタ側でエクスポートした対象DBのインポート
・レプリケーションのスレーブの操作から、全開始
マスタ側にデータを入れてみて、スレーブ側に入ればOK。
今回は、データが無い状態からだったので、楽ちんだったのかもしれない。
すでにデータが入るような状態の場合は、一度ロックをかけて入ってこないようにしてから、操作した方が良いね。
もっと大変かと思ったら、phpMyAdminのおかげで簡単にできた。
じゃあまたね。