データセンター移行に伴い、
                          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
「MySQL 5.0 -> 5.5 へのアップグレード プラスなんか」
                                        @oranie




            http://d.hatena.ne.jp/oranie/20110810/1312969238
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


                              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
MySQL 5.0.51b?


Thursday, April 19, 12
InnoDB Deep Talk #1 2012/03/10

                                                             5.0.53!




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




Thursday, April 19, 12
データセンター移行


Thursday, April 19, 12
Thursday, April 19, 12
Thursday, April 19, 12
移行前のサーバ構成


Thursday, April 19, 12
旧DC                            新DC

                         LVS                        LVS




   Application                          Application
     Server                               Server




                     LVS                         LVS




               repl              repl        repl               repl

              DB1                DB2         DB1                DB2


Thursday, April 19, 12
旧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
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
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の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
DC移行
                         -STEP 1-


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

              n         新DB1のアプリケーションの書き込み先
                         は、SSHトンネル経由で旧DCのDB1
                         Masterに対して行う




Thursday, April 19, 12
旧DC                                     新DC
                                        Traffic

                         LVS                                 LVS




   Application                                   Application
     Server                                        Server




                     LVS                     Write        LVS




               repl              repl                 repl               repl

              DB1                DB2                  DB1                DB2


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
                                        Traffic

                         LVS                                 LVS




   Application                                   Application
     Server                                        Server




                     LVS                                  LVS




               repl              repl                 repl               repl

              DB1                DB2                  DB1                DB2


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

More Related Content

PDF
What's New in MySQL 5.7 Security
PDF
【さくらのクラウド】サービス概要カタログ 2017年11月号
PDF
MySQL5.7 GA の Multi-threaded slave
PDF
What's New in MySQL 5.7 Replication
PDF
MySQLバックアップの基本
PDF
Mysql casual talks vol4
PDF
MySQL 5.6新機能解説@dbtechshowcase2012
PDF
Enter the-dolphine
What's New in MySQL 5.7 Security
【さくらのクラウド】サービス概要カタログ 2017年11月号
MySQL5.7 GA の Multi-threaded slave
What's New in MySQL 5.7 Replication
MySQLバックアップの基本
Mysql casual talks vol4
MySQL 5.6新機能解説@dbtechshowcase2012
Enter the-dolphine

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

KEY
My sql casual_in_fukuoka_vol1
KEY
1台から500台までのMySQL運用(YAPC::Asia編)
PDF
ioDrive+MySQL勉強会
PDF
オープニングセッション
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
PDF
Fluentd and MySQL
PDF
MySQL 5.5 Update #denatech
PDF
Introducing Spider 20101206(DTT#7)
PPTX
MySQL clients
PDF
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
PDF
PHPで大規模ブラウザゲームを開発してわかったこと
PDF
MHA for MySQLとDeNAのオープンソースの話
PDF
10年後のデータベース アーキテクチャ と青春の日々
PPT
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
PDF
社内サーバインフラ勉強会(DB)
PDF
配布用Beginnerならきっと役立つmaster slave環境
PDF
My sqlとplugin
PDF
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
PDF
Introducing MySQL MHA (JP/LT)
PDF
Innodb Deep Talk #2 でお話したスライド
My sql casual_in_fukuoka_vol1
1台から500台までのMySQL運用(YAPC::Asia編)
ioDrive+MySQL勉強会
オープニングセッション
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
Fluentd and MySQL
MySQL 5.5 Update #denatech
Introducing Spider 20101206(DTT#7)
MySQL clients
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
PHPで大規模ブラウザゲームを開発してわかったこと
MHA for MySQLとDeNAのオープンソースの話
10年後のデータベース アーキテクチャ と青春の日々
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
社内サーバインフラ勉強会(DB)
配布用Beginnerならきっと役立つmaster slave環境
My sqlとplugin
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Introducing MySQL MHA (JP/LT)
Innodb Deep Talk #2 でお話したスライド
Ad

More from Naoya Nakazawa (18)

PDF
お手軽に使おう Alibaba Cloud - OSS 編 -
PDF
DATADOG TIPS #1
PDF
kumogata-template の紹介
PDF
はじめての Gatling
PPTX
はじめての datadog
KEY
Monit & Supervisord Tips
KEY
ぼくがかんがえたさいきょうの☆きっくすたーと☆
KEY
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
KEY
/etc/rc.d配下とかのリーディング勉強会
PDF
fastcgi_conf and mime_types
KEY
Study2study#4 nginx conf_1_24
KEY
mod_security introduction at study2study #3
PDF
httpd.conf line 1 to 7, 24
KEY
puppet @techlifecookpad
PDF
zsh最強シェル入門読書会1
KEY
Velocity Report 2009
PDF
Mac Ports
お手軽に使おう Alibaba Cloud - OSS 編 -
DATADOG TIPS #1
kumogata-template の紹介
はじめての Gatling
はじめての datadog
Monit & Supervisord Tips
ぼくがかんがえたさいきょうの☆きっくすたーと☆
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
/etc/rc.d配下とかのリーディング勉強会
fastcgi_conf and mime_types
Study2study#4 nginx conf_1_24
mod_security introduction at study2study #3
httpd.conf line 1 to 7, 24
puppet @techlifecookpad
zsh最強シェル入門読書会1
Velocity Report 2009
Mac Ports
Ad

データセンター移行に伴い、 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
  • 4. サーバ/インフラエンジニア養成読本 管理/監視編 絶賛発売中!!! Thursday, April 19, 12
  • 6. n 大人の事情で、あるサービスをデータセン ター移行することになりました n そのついでに MySQL をアップグレードし たので、そのお話をします Thursday, April 19, 12
  • 8. 前回のMySQL Casual Talks Vol.2 Thursday, April 19, 12
  • 9. 「MySQL 5.0 -> 5.5 へのアップグレード プラスなんか」 @oranie http://d.hatena.ne.jp/oranie/20110810/1312969238 Thursday, April 19, 12
  • 10. サービスを停止できる場合での、 MySQL 5.0から5.5に アップグレードするための方法 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