【GCP入門編・第25回】 Cloud SQL for MySQL で Master-Slave 構成を組もう!
- Cloud SQL
- GCP入門編
- Master Slave
- MySQL
Cloud SQL は、 GCP 上でマネージドのリレーショナルデータベースが利用可能になるサービスとして、2015年12月からベータ版として公開されました。その後、2016年8月に MySQL 互換の第二世代インスタンスが発表され、正式版としての提供が始まりました。また、昨年行われた Google Cloud Next 2017 にて、 PostgreSQL のサポートが発表され、ベータ版としての提供が開始されています。
Cloud SQL は Google の信頼性の高い基盤の上でスケーラブルなデータベースを構築できる上に、フェイルオーバーや Master-Slave レプリケーションなど、自分で全て行うには少し面倒な運用管理が非常に簡単に行えるサービスです。また、ユーザーの管理やデータベースの管理、定期バックアップといった操作は Web コンソールから行うことができますので、管理の手間を低く保つことができます。
このように、単なる MySQL/PostgreSQL を提供するサービスではなく、管理運用の手間が非常に楽になるサービスと考えると、これまで自前で MySQL を運用してきた方も乗り換えるメリットが大きいのではないでしょうか。
この記事では、数ある Cloud SQL の機能から、 Master-Slave レプリケーションを設定する方法を解説します。 Master-Slave レプリケーションの構築を経験した方であれば、すべての操作が Web コンソールで完結することに驚かれるかもしれません。
目次
この記事の目的
- Master-Slave レプリケーションを設定する方法を覚えよう。
はじめに
最初に Cloud SQL のインスタンスを立ち上げ、 Read Replica (Slave) を追加します。次にサンプルのデータベースを Master にインポートし、 Master 、 Read Replica で正常にレプリケーションが行われていることを確認します。
それでは早速、設定を行っていきましょう。
インスタンスを作成する
GCP の Web コンソールを開き、左側のメニューから SQL をクリックします。すると Cloud SQL のコンソールが表示されますが、この時点ではデータベースのインスタンスが存在していないため、下の画像のように [Create instance] と [Learn more] が表示された状態となっています。 [Create instance] をクリックし、インスタンスの作成を開始します。
すると、データベースの種類を選択する画面が表示されます。この記事では MySQL を使用しますので、 MySQL にチェックを入れ、 [Next] をクリックします。
次にインスタンスのタイプを選択する画面が下の画像のように表示されます。第一世代と第二世代のタイプを選択することができますので、推奨のインスタンスタイプである第二世代を使用します。 [Choose Second Generation] をクリックして、次に進みましょう。
インスタンスの世代を選択すると、インスタンスの設定画面に移動します。ここでは、Instance ID に "mysql-1" 、バージョンに MySQL "5.7" を、 Region に "asia-northeast1" を選択します。その他の項目はデフォルトのままにしておきます。
画面を下にスクロールすると、 root ユーザーのパスワードを入力するテキストボックスが見えるかと思います。お好きなパスワードを入力するか、 [Generate] をクリック生成することも可能です。
入力が完了したら、 [Create] をクリックして、データベースを立ち上げます。 Instance details のページにリダイレクトされ、インスタンスの状況が確認できます。
インスタンスの構築が完了したら、次にこのインスタンスに Read Replica (Slave) を追加しましょう。
Read Replica を作成する
Read Replica (Slave) の追加は非常に簡単に行えます。まず、 Instance details ページに表示されている 戻る [←] ボタンをクリックします。すると、インスタンスの一覧画面にリダイレクトされます。
ここで、"mysql-1" インスタンスの行の一番右側に表示されているメニューをクリックすると、下の画像のように [Create Read Replica] というメニュー項目が表示されます。こちらをクリックします。
すると先ほどインスタンスを立ち上げた時と同様に、インスタンスの設定画面が表示されます。ここでは特に設定が必要な項目はありませんので、全てデフォルト設定のまま、 [Create] をクリックしましょう。
すると、 Read Replica の立ち上げが開始されます。
非常に簡単ですね。
サンプルデータベースをインポートする
次にサンプルデータベースを作成し、 Master-Slave レプリケーションの動作を確認しましょう。データのインポートは SQL ダンプファイルもしくは CSV ファイルに対応しており、 Cloud Storage 上のバケットに配置したファイルをインポートすることで行います。
まずはサンプルデータベースのダンプファイルを手に入れます。MySQL の公式サイトから、サンプルデータベースをダウンロードします。ここでは、 Example Databases のテーブルにある、 world database をダウンロードします。 Gzip もしくは Zip 形式でダウンロードしたら、解凍し、 world.sql ファイルにしておきます。
次にダンプファイルをアップロードする Cloud Storage のバケットを作成します。 GCP のコンソールを開き、左側のメニューから Storage をクリックします。すると下の図のように [Create Bucket] ボタンが表示されますので、こちらをクリックしましょう。
バケットの設定画面が表示されますので、バケットの名前として "mysql-sample-database" と入力し、 [Create] をクリックします。
するとバケットのブラウザーが表示されますので、こちらの上部にある [UPLOAD FILES] ボタンをクリックし、先ほど解凍した world.sql を選択してアップロードします。
アップロードが完了したら、先ほどの Cloud SQL の画面に戻り、インスタンスのリストにある "mysql-1" をクリックして、 Instance details のページを表示します。ここに、 [IMPORT] ボタンがありますのでクリックします。すると、下の図のようにファイルの選択とファイル形式の選択を行う画面が表示されます。ファイル形式は SQL にチェックを入れた状態で、 [Browse] をクリックして先ほどアップロードしたファイルを選択します。
この状態で [Select] をクリックしてインポートするファイルを選択し、画面に表示されている [Import] をクリックすることで、インポートが開始されます。
インポートが完了したら、早速 MySQL に接続し、確認してみましょう。
Cloud Shell から MySQL に接続する
MySQL のインスタンスに接続するにはいくつか方法がありますが、ここでは最も手軽に接続が行える、 Cloud Shell からの接続を行います。
まず GCP のコンソール上部に表示されている、ターミナル端末のアイコンをクリックします。すると、画面下に Cloud Shell の画面が表示されます。ここで、以下のように入力します。
$ gcloud beta sql connect mysql-1 --user=root
このコマンドを実行すると、 "mysql-1" インスタンスに MySQL クライアントで接続が行えます。パスワードの入力を求められますので、最初に設定したパスワードを入力します。コンソールが入力待ち状態になったら、以下のコマンドでデータが格納されていることを確認しましょう。
mysql> use world;
mysql> select * from city;
さて、データが格納されていることは確認できましたが、レプリケーションは行われているのでしょうか。次に Read Replica に接続し、確認をしてみます。
一度 exit
コマンドで MySQL クライアントを終了し、以下のコマンドを実行します。先ほどと同じコマンドで、接続先が "mysql-1-replica" インスタンスに変わっています。
gcloud beta sql connect mysql-1-replica --user=root
ここでもログインのためにパスワードを求められます。これは最初に設定した "mysql-1" のパスワードと同じものですので、入力しましょう。
MySQL クライアントのコンソールが入力待ちになったら、以下のコマンドを実行して Read Replica の レプリケーションの状態を確認します。
mysql> show slave status;
いかがでしょうか。以下の図のように、 Slave_IO_Status に Waiting for master to send event と表示され、マスターからバイナリログが送信されるのを待っている状態であることがわかるかと思います。表示を見ると、 Master と Slave を接続するのに、 SSL を使って暗号化通信を行なっていることもわかります。
おわりに
いかがでしたか。 Cloud SQL で MySQL データベースを運用するのがいかに簡単かが伝わったのではないかと思います。 Cloud SQL ではこのほかにも フェイルオーバーの設定を簡単に行える機能や、ユーザー管理の機能といった様々な機能が付いています。
これまで運用していた MySQL を一気に移行するのが難しい、といった方でも、 GCP の外に Master もしくは Slave を設定する機能がありますので、まずは Slave から移行を行い、 Master の移行を行うといったことも可能です。
もちろん、これから GCP 上で Web アプリケーションを開発するのであれば SQL ではなく Cloud Datastore を検討するのが良いと思います。ただ、以前に開発されたアプリケーションを移行したいといった場合に、便利に使えるのではないでしょうか。
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
お問合せはこちら
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!