これからレプリケーションでバージョンアップの話をしよう【MySQL】

業務でデータセンターのお引っ越しと、そのタイミングでサービスの大幅な刷新をすることになった。
それまでの環境はWEB/DB一体型サーバ(+スレーブ)にMySQL4.1、全テーブルMyISAMというヘレンケラーよろしく三重苦を背負いながら色々ありつつ3年の間頑張ってもらってたのだが、さすがにこの構成では限界に近く、データセンターお引っ越しのどさくさに紛れて、システム刷新に予算を割いてもらったのがこれまでのお話。
そこから上物のWEBサーバを開発、完成に至る道のりは山中鹿之介が求めて止まない正に七難八苦だったのだが、それは追々まとめていくとして、アプリの業務性質上、移行は無停止が大前提。無停止で引っ越しなんてシンジラレナイ!と思う向きもあるに違いないが、うちは大手SIerでもないのでまあ駄目なら潔く諦めてもらうけれども出来る限りご要望に沿いたいという心の声に忠実に、いっちょMySQLレプリケーションを使ってデータベースを無停止でコピー&同期してやるか!と思い立ったのでした。

MySQLレプリケーションの制限として、たしか1世代下上のバージョンとのレプリケーションは保証していたはず、という曖昧な知識を頼りに、中間に移行でのみ使うMySQL5.0サーバを置いて、MySQL4.1→5.0→5.1の順にレプリケーションをかけてバージョンを上げようと計画、それを図にまとめるとしたみたいな感じ。

ikou.jpg

で、試しにこの構成でスレーブを新サーバを2台別データセンターに用意し、3301ポートのFW開放を依頼、旧データセンターのスレーブを全ダンプしてプレ移行サーバと移行サーバにデータをインポートした後、データセンター間で4.1→5.0→5.1のレプリケーションを実施した。

my.cnfでそれぞれにserver-idを割り割り振り、ビビりながら旧スレーブ、プレ移行サーバにgrantでレプリケーションユーザーを追加、show master statusでマスタログを調べてプレと移行サーバでchange master toを実行してみると。。。

特に問題なく動いてるみたい?
試しにshow slave statusしてみるとちゃんとレプリケーションされているのを確認して一安心。。。
当たり前だけど世代さえ守ればちゃんとレプリケーションしてくれます。
ただし奥野さんの本あたりでも書いてある通り、バージョン OR ハード構成の異なるMySQLレプリケーションは推奨されないので、自己責任でお願いします。

このレプリケーションに気を良くした俺は、より良いデータベース環境を構築しようと色々試行錯誤するのだが、それは別のエントリでまとめようと思います。

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイドエキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
(2010/06/12)
奥野 幹也

商品詳細を見る