MySQL を Google Cloud で実行する
Google Cloud Japan Team
※この投稿は米国時間 2023 年 4 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。
アプリにはデータ ストレージが必要です。これは当たり前ですよね。一般的なデータ ストレージ ソリューションとして MySQL があります。独自の MySQL サーバーを運用したことがある方は、それに関連して復元性の問題に直面したことがあるかもしれません。また、本番環境のシステムでストレージ、CPU、RAM を増やすのが難しいという問題もあります。こうした問題は珍しいものではなく、Google は復元性を強化するための多数の機能を提供しています。ここでは、独自の MySQL インスタンスを管理する代わりに、MySQL を Google Cloud SQL というフルマネージドのリレーショナル データベース サービスで実行する方法について説明します。Google Cloud SQL で MySQL を実行すると、自動化されたメンテナンスとセキュリティ、そして可用性機能を利用できるため、管理費用を削減できます。
この記事ではまず、MySQL を起動して Cloud Shell からコマンドラインで MySQL にアクセスする方法を説明します。こちらのインタラクティブなチュートリアルでは、どのボタンをクリックするかといった具体的な手順を紹介しています。新しいツールを操作するときは、ボタンを見つけるのも一苦労です。ぜひこのチュートリアルを参考にしてください。
MySQL が稼働状態になったら、Compute Engine(仮想マシン)インスタンスから MySQL に接続する方法についても説明します。この手順に関するインタラクティブなチュートリアルもあるので、参考にしてください。
基本的な手順は比較的簡単なので、10 分もあれば完了できます。
MySQL を設定する
まず MySQL を設定し、その MySQL を使用して小規模なデータベースを作成します。「Cloud SQL を使用して MySQL インスタンスを作成する」というインタラクティブなチュートリアルの手順に沿って操作します。Google Cloud のすべてのリソースはプロジェクトに属します。使用できる既存のプロジェクトがない場合は、Cloud コンソールで新しいプロジェクトを作成する必要があります。
Compute Engine API と sqladmin API を有効にする必要もあります。ナビゲーション メニューに移動して [API とサービス] を選択し、これらの API を検索して有効にします。ご希望であれば、このチュートリアルで自動的に有効にすることもできます。API を有効にする手順を把握するために最初の数回はご自身で操作することをおすすめしますが、その後はシステムで自動的に行っていただいて構いません。
それでは、MySQL インスタンスを作成しましょう。
ナビゲーション メニューから [SQL] に移動します。
[インスタンスを作成] をクリックします(ページ上にこのボタンは 2 つありますが、どちらでも構いません)。
[MySQL を選択] をクリックします。
インスタンスに関するさまざまな項目が表示されます。図 1 にその一部が示されています。必須項目は、[インスタンス ID] と [パスワード] のみです。これらは忘れずに入力してください。
[インスタンスを作成] をクリックします。


数分で MySQL インスタンスが作成されます(図 2 を参照)。インスタンスの作成中は、インスタンスの詳細ページでそのインスタンスに関する情報を確認できます。パブリック IP アドレスと接続名は後で必要になるので保存しておいてください。


Cloud Shell を開きます。画面の上部にあるアイコンをクリックするか、インタラクティブなチュートリアルのボタンを使用します。インスタンスの接続の詳細からアクセスすることもできます(図 2 の左下を参照)。接続の詳細から Cloud Shell にアクセスすると、インスタンスに接続するために必要なステートメントが実行されます。次のステートメントです。
gcloud sql connect myinstance --user=root
ここで、myinstance は実際のインスタンス名になります。このステートメントが機能するには、プロジェクトが選択されている必要があります。
MySQL インスタンスにログインするよう求められます。インスタンスの作成時に使用したパスワードを使用します。mysql> コマンド プロンプトが表示されたら、以下の MySQL コマンドを使ってゲストブックを作成し、そこにエントリを追加して、それらのエントリが表示されるか試してみてください。
CREATE DATABASE guestbook;
これで、MySQL インスタンスが稼働していることを確認できました。場合によっては、Cloud Shell 以外の場所からインスタンスにアクセスする必要があります。次は、VM インスタンスを作成して、そこから MySQL にアクセスしてみましょう。
VM インスタンスを作成する
ここでは、「Compute Engine 仮想マシンから Cloud SQL for MySQL インスタンスに接続する」という 2 つ目のインタラクティブなチュートリアルに沿って、Compute Engine を使用して VM を作成し、その VM をデータベースに接続します。VM の作成時に [HTTP トラフィックを許可する] をクリックして、データベースが VM と通信できるようにしてください。それ以外は、すべてデフォルト値のままで問題ありません。
VM インスタンス テーブルで緑色のチェックマークが表示されて VM が稼働中になったら、この VM に IP アドレスを予約する作業に移ります。
VM に静的 IP アドレスを予約する
デフォルトでは、Compute Engine インスタンスの外部 IP アドレスはエフェメラルです。つまり、VM インスタンスの稼働中は IP アドレスが変わりませんが、VM が停止すると変わることがあります。しかし、データベースではどのアドレスからの接続が許可されているかを把握していなければなりません。そのため、変わらない IP アドレス(静的アドレス)をリクエストする必要があります。
そのためには、ナビゲーション メニュー > [VPC ネットワーク] > [IP アドレス] に移動します。図 3 に示されているように、VM の内部 IP アドレスと外部 IP アドレスが表示されます。


図 3: VM の IP アドレス
現在、どちらのアドレスも [種類] 列には [エフェメラル] と表示されています。外部 IP アドレスを静的アドレスに変更するには、その行の右端にある [予約] を選択します。これにより、図 4 のダイアログが表示されます。このダイアログで IP アドレスを予約します。


図 4: IP アドレスの予約
アドレスを予約すると、外部アドレスの種類が [静的] に変わります。データベースに接続する際はこのアドレスを使用します。さっそく接続してみましょう。
VM とデータベースを接続する
ナビゲーション メニューから [SQL] に移動し、データベースを選択して接続の詳細を表示します。次に、[接続]、[ネットワーキング]、[ネットワークを追加] の順にクリックして静的 IP アドレスに接続します。任意の名前を入力し、先ほど予約した静的 IP アドレスを入力します。[完了]、[保存] の順にクリックします。
VM に戻ります。[VM インスタンス] ページに移動して [SSH] をクリックすると、簡単に VM にアクセスできます。次のコマンドを使用して MySQL を VM にインストールします(プロンプトが表示されたらデフォルトを選択します)。
sudo apt-get update
sudo apt-get install default-mysql-server
次に、以下のコマンドで INSTANCE_IP アドレス(図 2 を参照)を使用して、データベースに接続します。root 以外のユーザーを設定している場合は、root の代わりにそのユーザー名を使用できます。
mysql -h INSTANCE_IP -u root -p
パスワードを入力して MySQL に戻ります。前にこのデータベースに入力したデータを表示するために、次のコマンドを実行します。
USE guestbook;
SELECT * FROM entries;
これで、クラウドで MySQL データベースを作成し、そのデータベースに Linux コマンドラインおよび VM から接続できるようになりました。これを基に、クリエイティブで有益な利用方法をぜひ見つけてください。
クリーンアップ
Cloud SQL、Compute Engine インスタンスとドライブ、静的 IP は課金対象なので、課金が発生しないようにクリーンアップしましょう。
この手順で使用したプロジェクトがもう必要ない場合は、プロジェクトを削除すると課金を簡単に停止できます。以下の手順に沿ってサービスを個別に停止することもできます。
インタラクティブなチュートリアルを使用している場合は、作成したすべてのリソースを削除する方法がチュートリアルで説明されます。
次のステップ
ここで行ったすべての手順は、以下のインタラクティブなチュートリアルで詳しく説明されています。
さらに詳しく学習したい方は、以下に取り組むことをおすすめします。
MySQL のパスワードを忘れた場合は(これを最初に挙げている理由を推測してください)、ユーザーとパスワードの詳細を確認してください。
PostgreSQL インスタンスと SQL Server インスタンスで同じ操作を行うこともできます。
IP アドレスと静的 IP アドレスの詳細を確認してください。
VM 作成の演習をさらに行いたい方は、VM の作成方法に関するインタラクティブなチュートリアルに取り組んでください。
高可用性(HA)インスタンスのプロビジョニングや、障害復旧と読み取りのスケーリングに使用できるリードレプリカの作成など、より高度な機能について学習することもできます。
- デベロッパーリレーションズ エンジニア Laurie White