データセンター移行に伴い、...

Post on 31-May-2015

1.094 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

#mysqlcasual #3

TRANSCRIPT

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

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

2012/04/19 Naoya Nakazawa@n0ts

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

自己紹介

Thursday, April 19, 12

n Naoya Nakazawa

n @n0ts

n 日本語ブログ

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

n 無所属

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

Thursday, April 19, 12

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

絶賛発売中!!!

Thursday, April 19, 12

今日のお話

Thursday, April 19, 12

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

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

Thursday, April 19, 12

その前に

Thursday, April 19, 12

前回のMySQL Casual

Talks Vol.2

Thursday, April 19, 12

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

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

Thursday, April 19, 12

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

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

Thursday, April 19, 12

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

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

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

Thursday, April 19, 12

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

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

n X000 req/sec

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

n 超小規模サービス

Thursday, April 19, 12

サーバ構成(簡易版)

Thursday, April 19, 12

LVS

Application Server

DB1MySQL 5.0.51b

DB2MySQL 5.0.71

LVS

Masterrepl

Slave Master Slaverepl

Write

Read

Write

Read

Thursday, April 19, 12

MySQL 5.0.51b?

Thursday, April 19, 12

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

5.0.53!

InnoDB Deep Talk #1 2012/03/10

Thursday, April 19, 12

データセンター移行

Thursday, April 19, 12

Thursday, April 19, 12

Thursday, April 19, 12

移行前のサーバ構成

Thursday, April 19, 12

旧DC 新DC

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

Thursday, April 19, 12

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

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

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

新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

DC移行-STEP 1-

Thursday, April 19, 12

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

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

Masterに対して行う

Thursday, April 19, 12

旧DC 新DC

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

Traffic

Write

Thursday, April 19, 12

DC移行-STEP 2-

Thursday, April 19, 12

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

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

Thursday, April 19, 12

DC移行-STEP 3-

Thursday, April 19, 12

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

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

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

Thursday, April 19, 12

旧DC 新DC

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

ApplicationServer

LVS

LVS

repl repl

DB1 DB2

Traffic

Thursday, April 19, 12

まとめ

Thursday, April 19, 12

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

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

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

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

Thursday, April 19, 12

Thanks!

Thursday, April 19, 12

top related