SlideShare a Scribd company logo
データセンター移行に伴い、
                          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
Ad

More Related Content

More from Naoya Nakazawa (15)

はじめての Gatling
はじめての Gatlingはじめての Gatling
はじめての Gatling
Naoya Nakazawa
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadog
Naoya Nakazawa
 
Monit & Supervisord Tips
Monit & Supervisord TipsMonit & Supervisord Tips
Monit & Supervisord Tips
Naoya Nakazawa
 
ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆
Naoya Nakazawa
 
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Naoya Nakazawa
 
/etc/rc.d配下とかのリーディング勉強会
/etc/rc.d配下とかのリーディング勉強会/etc/rc.d配下とかのリーディング勉強会
/etc/rc.d配下とかのリーディング勉強会
Naoya Nakazawa
 
fastcgi_conf and mime_types
fastcgi_conf and mime_typesfastcgi_conf and mime_types
fastcgi_conf and mime_types
Naoya Nakazawa
 
Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24
Naoya Nakazawa
 
mod_security introduction at study2study #3
mod_security introduction at study2study #3mod_security introduction at study2study #3
mod_security introduction at study2study #3
Naoya Nakazawa
 
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
Naoya Nakazawa
 
puppet @techlifecookpad
puppet @techlifecookpadpuppet @techlifecookpad
puppet @techlifecookpad
Naoya Nakazawa
 
zsh最強シェル入門読書会1
zsh最強シェル入門読書会1zsh最強シェル入門読書会1
zsh最強シェル入門読書会1
Naoya Nakazawa
 
Velocity Report 2009
Velocity Report 2009Velocity Report 2009
Velocity Report 2009
Naoya Nakazawa
 
Mac Ports
Mac PortsMac Ports
Mac Ports
Naoya Nakazawa
 
STL
STLSTL
STL
Naoya Nakazawa
 
はじめての Gatling
はじめての Gatlingはじめての Gatling
はじめての Gatling
Naoya Nakazawa
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadog
Naoya Nakazawa
 
Monit & Supervisord Tips
Monit & Supervisord TipsMonit & Supervisord Tips
Monit & Supervisord Tips
Naoya Nakazawa
 
ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆
Naoya Nakazawa
 
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Apache 2.4 ChangeLog at 闇Webサーバ勉強会#5
Naoya Nakazawa
 
/etc/rc.d配下とかのリーディング勉強会
/etc/rc.d配下とかのリーディング勉強会/etc/rc.d配下とかのリーディング勉強会
/etc/rc.d配下とかのリーディング勉強会
Naoya Nakazawa
 
fastcgi_conf and mime_types
fastcgi_conf and mime_typesfastcgi_conf and mime_types
fastcgi_conf and mime_types
Naoya Nakazawa
 
Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24
Naoya Nakazawa
 
mod_security introduction at study2study #3
mod_security introduction at study2study #3mod_security introduction at study2study #3
mod_security introduction at study2study #3
Naoya Nakazawa
 
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
Naoya Nakazawa
 
puppet @techlifecookpad
puppet @techlifecookpadpuppet @techlifecookpad
puppet @techlifecookpad
Naoya Nakazawa
 
zsh最強シェル入門読書会1
zsh最強シェル入門読書会1zsh最強シェル入門読書会1
zsh最強シェル入門読書会1
Naoya Nakazawa
 

Recently uploaded (7)

AIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdf
AIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdfAIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdf
AIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdf
Data Source
 
astahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansai
astahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansaiastahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansai
astahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansai
akipii Oga
 
俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...
俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...
俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...
たけおか しょうぞう
 
論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics
論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics
論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics
Toru Tamaki
 
論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...
論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...
論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...
Toru Tamaki
 
論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...
論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...
論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...
Toru Tamaki
 
「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!
「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!
「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!
fujishiman
 
AIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdf
AIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdfAIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdf
AIの心臓部を支える力 ― ニューラルネットワークプロセッサの進化と未来.pdf
Data Source
 
astahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansai
astahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansaiastahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansai
astahで問題地図を描いてみよう~第4回astah関西勉強会の発表資料です #astahkansai
akipii Oga
 
俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...
俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...
俺SoC (Laxer Chip, AX1001)の Prolog加速命令.New multiple branch instruction for RIS...
たけおか しょうぞう
 
論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics
論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics
論文紹介:PitcherNet: Powering the Moneyball Evolution in Baseball Video Analytics
Toru Tamaki
 
論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...
論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...
論文紹介:What, when, and where? ​Self-Supervised Spatio-Temporal Grounding​in Unt...
Toru Tamaki
 
論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...
論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...
論文紹介:"Visual Genome:Connecting Language and Vision​Using Crowdsourced Dense I...
Toru Tamaki
 
「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!
「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!
「Technology×Business×生成AI」株式会社CoToMaで未来を作る仲間募集!
fujishiman
 
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