37
データセンター移行に伴い、 MySQLカジュアルアップグレードしたお話 MySQL Casual Talks Vol.3 ~カジュアルだよこわくないよ~ 2012/04/19 Naoya Nakazawa@n0ts 日本オラクル 青山センター Thursday, April 19, 12

データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

Embed Size (px)

DESCRIPTION

MySQL Casual Talks Vol.3

Citation preview

Page 1: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

データセンター移行に伴い、MySQLをカジュアルにアップグレードしたお話

MySQL Casual Talks Vol.3~カジュアルだよこわくないよ~

2012/04/19 Naoya Nakazawa@n0ts

日本オラクル 青山センターThursday, April 19, 12

Page 2: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

自己紹介

Thursday, April 19, 12

Page 3: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

n Naoya Nakazawa

n @n0ts

n 日本語ブログ

n http://www.sssg.org/blogs/naoya/

n 無所属

n ケーブリングからアプリまで

Thursday, April 19, 12

Page 4: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

サーバ/インフラエンジニア養成読本 管理/監視編

絶賛発売中!!!

Thursday, April 19, 12

Page 5: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

今日のお話

Thursday, April 19, 12

Page 6: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

n 大人の事情で、あるサービスをデータセンター移行することになりました

n そのついでに MySQL をアップグレードしたので、そのお話をします

Thursday, April 19, 12

Page 7: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

その前に

Thursday, April 19, 12

Page 8: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

前回のMySQL Casual

Talks Vol.2

Thursday, April 19, 12

Page 9: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

http://d.hatena.ne.jp/oranie/20110810/1312969238

「MySQL 5.0 -> 5.5 へのアップグレード プラスなんか」@oranie

Thursday, April 19, 12

Page 10: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

サービスを停止できる場合での、MySQL 5.0から5.5に

アップグレードするための方法

Thursday, April 19, 12

Page 11: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

はてブお願いします!!!Thursday, April 19, 12

Page 12: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

今日は、サービスが止めることができない場合

のMySQLアップグレードについてのお話をします

Thursday, April 19, 12

Page 13: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

サービス規模n とある広告系サービス

n 秒間あたりのピーク時のリクエスト数

n X000 req/sec

n 物理サーバ1ラック程度

n 超小規模サービス

Thursday, April 19, 12

Page 14: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

サーバ構成(簡易版)

Thursday, April 19, 12

Page 15: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

LVS

Application Server

DB1MySQL 5.0.51b

DB2MySQL 5.0.71

LVS

Masterrepl

Slave Master Slaverepl

Write

Read

Write

Read

Thursday, April 19, 12

Page 16: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

MySQL 5.0.51b?

Thursday, April 19, 12

Page 17: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

https://twitter.com/#!/nobu666/status/178350176719736832

5.0.53!

InnoDB Deep Talk #1 2012/03/10

Thursday, April 19, 12

Page 18: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

データセンター移行

Thursday, April 19, 12

Page 19: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

Thursday, April 19, 12

Page 20: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

Thursday, April 19, 12

Page 21: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

移行前のサーバ構成

Thursday, April 19, 12

Page 22: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

旧DC 新DC

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

Thursday, April 19, 12

Page 23: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

replDB1MySQL 5.0.51b

旧DC 新DC

Master

Slave

repl

Master

Slave

DB1MySQL 5.1.58

×SSL ReplicationSSH Port Forwarding

replDB2MySQL 5.0.71

Master

Slave

repl

Master

Slave

DB2MySQL 5.1.58

Thursday, April 19, 12

Page 24: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

n MySQL 5.1.58から5.0.51bに接続すると、次のエラーが発生した

n ERROR 2026 (HY000): SSL connection error

n Masterのバージョンを5.1.58にあわせるとうまくいったので、バージョンの問題か、5.0系をSSL対応ビルドしていなかったことが原因かもしれない

SSLレプリケーションの失敗

Thursday, April 19, 12

Page 25: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

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

Page 26: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

新DCのMySQLn 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

Page 27: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

DC移行-STEP 1-

Thursday, April 19, 12

Page 28: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

n DNSラウンドロビンにする(レジストラの仕様でTTLを変更できなかった)

n 新DB1のアプリケーションの書き込み先は、SSHトンネル経由で旧DCのDB1

Masterに対して行う

Thursday, April 19, 12

Page 29: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

旧DC 新DC

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

Traffic

Write

Thursday, April 19, 12

Page 30: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

DC移行-STEP 2-

Thursday, April 19, 12

Page 31: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

n DNSラウンドロビンをやめて、新DCのみ切り替える

n リクエストが完全に新DCのみになるまでしばらく待つ

Thursday, April 19, 12

Page 32: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

DC移行-STEP 3-

Thursday, April 19, 12

Page 33: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

1. リクエストの最も少ない時間帯に、アプリケーションからデータベースへの書き込みを一時的に停止する(バッチなどもあわせて)

2. 新DC DB1のSlaveをMasterへ昇格させる

3. 昇格後、アプリケーションからデータベースの書き込みを再開させる

Thursday, April 19, 12

Page 34: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

旧DC 新DC

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

Traffic

Thursday, April 19, 12

Page 35: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

まとめ

Thursday, April 19, 12

Page 36: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

n DC移行中を含めてサービスの停止はなし

n 移行中もサービス上の大きな遅延はなし

n SlaveをMasterへ昇格させる数分間だけ、書き込みは一時停止したけれどサービスの停止はなし

n あわせて、MySQL 5.0系から5.1系に安全にかつ問題なくアップグレードできた

Thursday, April 19, 12

Page 37: データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話

Thanks!

Thursday, April 19, 12