dbdeployerをつかって複数バージョンのMySQL検証を楽にしよう

技術本部 サービスリライアビリティグループ(SRG)の鬼海(@fat47)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事は、SRG 内にある DBWG(DBワーキンググループ)が全社内向けに提供しているデータベースに関する資料を公開します。
なにかの役に立てば幸いです。
 

dbdeployerとは


MySQLのサンドボックスツールとしてはPerlで書かれたMySQL Sandboxが有名でしたが、2018年に利用非推奨となりました。
代わりとして利用が推奨されているdbdeployerは2018年にリリースされたGoで書かれたサンドボックスツールです。
複数のバージョンのMySQLを簡単に同時起動したりできるので、バージョン間の際の確認や検証などに非常に役立ちます。
MySQL Sandboxで利用できた機能はほぼ網羅されており、進化して使いやすくなっています。
 

dbdeployerインストール方法


CentOS7環境での場合追加でパッケージが必要だったので先にインストールしておきます。
 
あとは公式ドキュメントにある手順の通りです。
バージョンは2023年1月現在最新のを指定しました。
 
公式ドキュメントに記載がありますが、curl経由でスクリプトを実行してインストールすることも可能です。
 

dbdeployer利用方法


MySQLパッケージの用意

初回はinitを実行します。するとそのとき最新のMySQLをダウンロードしてくれます。
 
ダウンロードされたパッケージは以下のディレクトリに配置されています。
 
コマンドで取得可能なMySQLバージョン一覧を確認できます。
 
上記リストに利用したいバージョンが存在している場合は下記コマンドのように取得可能です。
 
利用可能な状態のMySQLのリストを確認します。
最新の8.0.32と、今追加した5.7.34が利用可能であることがわかります。
 
先程のリストに存在しないバージョンを利用したい場合、MySQL公式から直接tarをダウンロードしてくれば利用可能です。
例えば5.7の最新である5.7.41はリストになかったので、MySQL公式サイトからダウンロードして展開します。
 
これでリストになかった5.7.41も利用可能になりました。
 

dbdeployerでMySQLサンドボックスを起動してみる

さっそくMySQL8.0.32を起動してみます。今回は単一ノードで起動してみます。
 
deployにはsingle,multiple,replicationの3つがあります。
  • single
    • 単一のMySQLを1台起動します。
  • multiple
    • レプリケーションなしで同一バージョンのMySQLを複数起動します。デフォルト台数:3
  • replication
    • マスター1台、スレーブ2台の合計3台でレプリケーションが構築された状態で起動します。
    • オプションによりノード台数増加やマルチマスタ、グループレプリケーションも可能です。
 
起動済みのサンドボックスは下記のコマンドで確認可能です。無事8.0.32が起動できています。
 
起動したサンドボックスには下記のコマンドで接続します。
無事に接続ができて、バージョン確認のクエリも実行できていることがわかります。
 

サンドボックスの削除

不要になったサンドボックスは下記のように削除ができます。
まず起動済みのサンドボックス一覧を確認します。
 
不要なサンドボックスを指定してdeleteします。これで完了です。
 

dbdeployerの便利機能


サンドボックス同士で非同期レプリケーションを構築する

先程deployの説明の際に紹介したdeploy replicationを指定することで、サンドボックス同士をレプリケーション構築済みの状態で起動することが可能です。
 
接続する方法は下記のようにそれぞれのサンドボックスに接続可能です。
 

構築した非同期レプリケーションのサンドボックスに対して同時にクエリを実行する

それぞれのサンドボックスに毎回接続してクエリを実行するのではなく、まとめて実行する方法が用意されています。
一例をあげると下記のような事が可能です。
  • 全台でレプリケーションステータスをチェックする
     
    • 全台で同一のSQLクエリを実行する
       
      • マスターDBにだけSQLクエリを実行する
         
        • スレーブDBにだけSQLクエリを実行する
           
           

          終わりに


          SRG では一緒に働く仲間を募集しています。 ご興味ありましたらぜひこちらからご連絡ください。
           
          このエントリーをはてなブックマークに追加