More Related Content
More from Naoya Nakazawa (15)
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
- 1. データセンター移行に伴い、
MySQLをカジュアルに
アップグレードしたお話
MySQL Casual Talks Vol.3
∼カジュアルだよこわくないよ∼
2012/04/19
Naoya Nakazawa@n0ts
日本オラクル 青山センター
Thursday, April 19, 12
- 3. n Naoya Nakazawa
n @n0ts
n 日本語ブログ
n http://www.sssg.org/blogs/naoya/
n 無所属
n ケーブリングからアプリまで
Thursday, April 19, 12
- 6. n 大人の事情で、あるサービスをデータセン
ター移行することになりました
n そのついでに MySQL をアップグレードし
たので、そのお話をします
Thursday, April 19, 12
- 9. 「MySQL 5.0 -> 5.5 へのアップグレード プラスなんか」
@oranie
http://d.hatena.ne.jp/oranie/20110810/1312969238
Thursday, April 19, 12
- 12. 今日は、サービスが止める
ことができない場合
のMySQLアップグレードについての
お話をします
Thursday, April 19, 12
- 13. サービス規模
n とある広告系サービス
n 秒間あたりのピーク時のリクエスト数
n X000 req/sec
n 物理サーバ1ラック程度
n 超小規模サービス
Thursday, April 19, 12
- 14. サーバ構成
(簡易版)
Thursday, April 19, 12
- 15. LVS
Application Server
Write Write
LVS
Read Read
repl repl
Master Slave Master Slave
DB1 DB2
MySQL 5.0.51b MySQL 5.0.71
Thursday, April 19, 12
- 17. InnoDB Deep Talk #1 2012/03/10
5.0.53!
https://twitter.com/#!/nobu666/status/178350176719736832
Thursday, April 19, 12
- 22. 旧DC 新DC
LVS LVS
Application Application
Server Server
LVS LVS
repl repl repl repl
DB1 DB2 DB1 DB2
Thursday, April 19, 12
- 23. 旧DC 新DC
Master Master
DB1 DB1
repl ×SSL Replication repl
MySQL 5.0.51b MySQL 5.1.58
SSH Port Forwarding
Slave Slave
Master Master
DB2 DB2
repl repl
MySQL 5.0.71 MySQL 5.1.58
Slave Slave
Thursday, April 19, 12
- 24. SSLレプリケーションの失敗
n MySQL 5.1.58から5.0.51bに接続すると、次のエ
ラーが発生した
n ERROR 2026 (HY000): SSL connection error
n Masterのバージョンを5.1.58にあわせるとうまく
いったので、バージョンの問題か、5.0系をSSL対
応ビルドしていなかったことが原因かもしれない
Thursday, April 19, 12
- 25. SSHポートフォワード
n 新DC DB1 Master上で、旧DC DB1 MasterにSSHトンネルを掘る
n ssh -f <旧DC DB1 Master> -L 13306:localhost:3306 -N -4 -g
n LVS経由のため、LVSが切り替わるとSSHトンネルが切れるため、
Monitで定期的にSSHトンネルが閉じているか確認するようにした
n pgrepしてなければSSHトンネルを掘る簡単なシェルスクリプト
n 新DC DB1 Masterを、一時的にSlaveにする
n mysql> CHANGE MASTER TO MASTER_HOST='127.0.0.1',
MASTER_PORT=13306 ...;
Thursday, April 19, 12
- 26. 新DCのMySQL
n MySQL SlaveのみハードウェアRAID0 + SSD x 4
n XFS, deadlineスケジューラ
n 公式のMySQL 5.1.58 RPM
n InnoDB pluginを利用
n InnoDBの設定を全般的に見直したかったので、旧DC上でmysqldumpした
データを流し込んで、新DC DB1 Masterをスレーブとした
n DB2の方は、完全移行後に停止して移行した
n 一部のテーブルにInnoDB Data Compressionを導入
Thursday, April 19, 12
- 27. DC移行
-STEP 1-
Thursday, April 19, 12
- 28. n DNSラウンドロビンにする(レジストラ
の仕様でTTLを変更できなかった)
n 新DB1のアプリケーションの書き込み先
は、SSHトンネル経由で旧DCのDB1
Masterに対して行う
Thursday, April 19, 12
- 29. 旧DC 新DC
Traffic
LVS LVS
Application Application
Server Server
LVS Write LVS
repl repl repl repl
DB1 DB2 DB1 DB2
Thursday, April 19, 12
- 30. DC移行
-STEP 2-
Thursday, April 19, 12
- 31. n DNSラウンドロビンをやめて、新DCのみ
切り替える
n リクエストが完全に新DCのみになるまで
しばらく待つ
Thursday, April 19, 12
- 32. DC移行
-STEP 3-
Thursday, April 19, 12
- 33. 1. リクエストの最も少ない時間帯に、アプリケー
ションからデータベースへの書き込みを一時的に
停止する(バッチなどもあわせて)
2. 新DC DB1のSlaveをMasterへ昇格させる
3. 昇格後、アプリケーションからデータベースの書
き込みを再開させる
Thursday, April 19, 12
- 34. 旧DC 新DC
Traffic
LVS LVS
Application Application
Server Server
LVS LVS
repl repl repl repl
DB1 DB2 DB1 DB2
Thursday, April 19, 12
- 36. n DC移行中を含めてサービスの停止はなし
n 移行中もサービス上の大きな遅延はなし
n SlaveをMasterへ昇格させる数分間だけ、書き込み
は一時停止したけれどサービスの停止はなし
n あわせて、MySQL 5.0系から5.1系に安全にかつ問
題なくアップグレードできた
Thursday, April 19, 12