Google Cloud プロジェクトの一部として MySQL をデプロイするためのオプションはいくつかあります。Cloud SQL または Google Cloud Marketplace を使用するか、Compute Engine に MySQL を手動でインストールできます。
Cloud SQL は、MySQL をウェブサービスとして提供します。Cloud SQL を使用して Google のクラウドで MySQL データベースをホストし、Google Cloud でレプリケーション、パッチ管理、データベース管理などの管理作業を行うことができます。
Cloud Marketplace では、シンプルなクリック デプロイ インターフェースを利用できます。これにより、Compute Engine インスタンスに MySQL を簡単にインストールできます。Cloud Marketplace には、スタンドアロンの MySQL インストールに加え、MySQL を使用するいくつかのウェブ開発スタック(LAMP スタック、LEMP スタック、Percona MySQL クラスタなど)も含まれています。
MySQL を手動でインストールしてカスタマイズする場合は、Compute Engine を使用して、数分で MySQL データベースを作成できます。このドキュメントでは、選択するオプションに関するガイダンスを示し、Compute Engine での MySQL データベースの手動インストールについて説明します。
適切な MySQL デプロイ オプションの選択方法
Google Cloud でバックエンド データベースとサーバーの管理作業を行って利便性を求める場合、Cloud SQL は優れたオプションとなります。たとえば、Cloud SQL は自動バックアップとポイントインタイム リカバリを備えています。さらに、可用性と復元力が向上するように、データが複数のゾーンに複製されます。
Cloud SQL でサポートされていない MySQL 機能が必要な場合は、Compute Engine に MySQL をインストールすることをおすすめします。たとえば、Cloud SQL はユーザー定義関数や SUPER 権限をサポートしていません。詳細については、Cloud SQL のよくある質問をご覧ください。
Compute Engine に MySQL をインストールする場合は、Cloud Marketplace を使用して MySQL インストールをデプロイするか、Compute Engine インスタンスに MySQL を手動でインストールできます。Cloud Marketplace を使用すると、大規模な開発スタックの一部として MySQL を簡単にデプロイできます。Google Marketplace には、複数の MySQL インストールのオプション(スタンドアロンの MySQL インストール、LAMP スタック、LEMP スタック、Nginx スタック、Percona MySQL クラスタ インストールやその他のいくつかのオプション)が用意されています。
Cloud Marketplace のサービスがニーズに合わない場合は、Compute Engine インスタンスに MySQL を手動でインストールできます。たとえば、作成したカスタム イメージに MySQL をデプロイすることや、インストール プロセスを詳細に制御することができます。
Compute Engine インスタンスに MySQL を手動でインストールする場合、Compute Engine インスタンスを作成し、そのインスタンスに MySQL を直接インストールするだけです。
各オプションの詳細については、次のリソースをご覧ください。
- Cloud SQL については、Cloud SQL for MySQL のドキュメントをご覧ください。
Cloud Marketplace については、Google Cloud コンソールでの MySQL のインストール オプションをご覧ください。
Compute Engine インスタンスに MySQL を手動でインストールする方法については、このドキュメントの残りの部分をご覧ください。
目標
- Compute Engine インスタンスの作成
- MySQL のインストール
- MySQL への接続
前提条件
Google Cloud コンソールで新しいプロジェクトを作成します。既存のプロジェクトを使用することもできますが、新しいプロジェクトを作成することによって、クリーンアップが容易になります。
このドキュメントの手順はすべて、Google Cloud コンソールを使用して完了できますが、gcloud CLI を使用する場合は、次の手順で Compute Engine API を有効にし、Google Cloud CLI をインストールします。
Google Cloud コンソールを使用して Compute Engine API を有効にします。
gcloud CLI をインストールします。
コマンドが冗長にならないようにワークスペースを構成します。次のコマンドの
PROJECT_ID
とREGION
とZONE
は、プロジェクトの値で置き換えます。ゾーンの完全なリストについては、利用可能なリージョンとゾーンを参照してください。gcloud config set project PROJECT_ID gcloud config set compute/region REGION gcloud config set compute/zone ZONE
Compute Engine インスタンスを作成して SSH 接続を確立する
MySQL 用の Compute Engine インスタンスを作成し、新しく作成したインスタンスへの SSH 接続を確立します。デフォルトのオペレーティング システムは Debian バージョン 10 です。このチュートリアルで別のオペレーティング システムを使用する場合は、Compute Engine ドキュメントの公開イメージのページに記載されているオプションから選択できます。
コンソール
Compute Engine インスタンスを作成する
Google Cloud コンソールで Compute Engine インスタンスを作成するには、次の操作を行います。
Google Cloud コンソールで、Compute Engine の [VM インスタンス] ページに移動します。
新しく作成したプロジェクトを選択し、[続行] をクリックします。
[インスタンスを作成](既存のインスタンスがある場合は、[新しいインスタンス])をクリックします。インスタンスに mysql-test という名前を付けます。
デフォルト値以外のオペレーティング システムを指定するには、[ブートディスク] セクションで [変更] をクリックして、ブートディスクのプロパティを構成します。[公開イメージ] タブで、オペレーティング システムを選択し、[保存] をクリックします。
セキュリティのベスト プラクティスに準拠するには、外部 IP アドレスを使用せずにインスタンスを作成します。
[詳細オプション] を開き、[ネットワーキング] を展開します。[ネットワーク インターフェース] から [デフォルト] インターフェースを開き、[外部 IPv4 アドレス] メニューで、[なし] を選択します。
[作成] をクリックします。
ネットワーク アドレス変換を設定する
Cloud NAT でネットワーク アドレス変換を設定、管理する手順は次のとおりです。
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[開始] または [Cloud NAT ゲートウェイを作成] をクリックします。
[ゲートウェイ名] に「
nat-simple-configuration
」と入力します。Cloud Router を選択するには、[Cloud Router の選択] セクションで次の操作を行います。
- [ネットワーク] で [default] を選択します。
- [リージョン] で、VM に指定したリージョンを選択します。
[Cloud Router] で、[新しいルーターを作成] を選択します。
表示された [ルーターを作成] ダイアログで、ルーターの名前(例:
nat-router-simple-configuration
)を指定し、[作成] をクリックします。
[詳細構成] をクリックします。
[ロギング] セクションで、[変換とエラー] を選択します。この設定により、すべてのログが Cloud Logging に送信されるように Cloud NAT が構成されます。
[作成] をクリックします。
VM への SSH 接続を確立する
SSH 接続を確立するには、次の操作を行います。
[VM インスタンス] ページで、リスト内の新しい VM インスタンスを見つけます。
その VM の [接続] 列で [SSH] をクリックします。SSH ターミナルがブラウザ ウィンドウに開きます。
gcloud
Compute Engine インスタンスを作成するには、
gcloud compute instances create
コマンドを使用します。オペレーティング システムを指定するには、--image-family
パラメータの後にイメージ ファミリーを追加するか、--image
パラメータの後に特定のイメージ バージョンのイメージ名を追加します。たとえば、Debian 10 ファミリーの最新イメージを使用するには、--image-family debian-10
を追加します。公開イメージを使用する場合は、--image-project
パラメータを使用してイメージ プロジェクトを指定する必要があります。gcloud compute instances create \ --image-family debian-10 \ --image-project debian-cloud \ --no-address \ mysql-test
Cloud Router を作成する。
gcloud compute routers create nat-router-simple-configuration \ --network=default
Cloud NAT でネットワーク アドレス変換を設定、管理する
gcloud compute routers nats create nat-simple-configuration \ --router=nat-router-simple-configuration \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging
ssh
を使用してインスタンスに接続します。gcloud compute ssh \ --tunnel-through-iap \ mysql-test
SSH 接続は、Identity-Aware Proxy(IAP)によって処理される TCP 転送を使用して行われます。
MySQL のインストール
以降の手順では、Compute Engine インスタンス上に MySQL をインストールする方法について説明します。
Debian 10 以降
この手順では、MySQL 8 または 5.7 をインストールします。
バージョン 10 以降の Debian には、パッケージ管理システムの一部として MySQL ではなく MariaDB が含まれています。MariaDB では、MySQL プロトコルとの互換性が保たれていますが、独立して進化する機能セットを備えています。詳細については、MariaDB と MySQL の比較をご覧ください。
MySQL をインストールするには、リリース パッケージをダウンロードし、dpkg
コマンドを使用して手動でインストールします。
wget
の依存関係をインストールします。sudo apt-get install -y wget
MySQL Community Server リリース パッケージをダウンロードします。
export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
リリース パッケージ ファイルの整合性を確認します。
cat > ${DEB_FILE}.md5 << EOL 799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
次の出力が表示されると、ファイルの信頼性と整合性は検証されました。
mysql-apt-config_0.8.20-1_all.deb: OK
ファイルを検証したら、MySQL パッケージをローカル パッケージ リポジトリに追加します。
sudo dpkg -i ${DEB_FILE}
MySQL バージョンなどのインストール オプションの確認を求められます。
上部の [MySQL Server & Cluster] メニュー オプションを選択した状態で、Return キーを押して、矢印キーでサーバーのバージョンを選択します。
このガイドでは、MySQL 8.0 または 5.7 のいずれかを使用することを想定しています。バージョンを選択したら、キーボードの Return キーを押します。
構成メニューで選択したオプションに問題がなければ、矢印キーを使用してメニューで [
Ok
] を選択し、キーボードの Return キーを押します。パッケージ キャッシュを更新します。
sudo apt-get update
「次のシグネチャは、公開鍵が利用できないため、署名できません:NO_PUBKEY 467B942D3A79BD29」のようなGPGエラーが表示された場合、次のようなコマンドで不足するGPG鍵をインポートしてください。
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
このエラー メッセージでは、不足している公開鍵は
467B942D3A79BD29
です。この値を--recv-keys
オプションで指定します。このコマンドを繰り返してパッケージ キャッシュを更新します。
MySQL をインストールします。インストール プロセスが専用の MySQL サービスを開始します。
sudo apt-get -y install mysql-community-server
インストールのための詳細情報(root のパスワードなど)を入力するように求められます。
Debian 9
この手順では、MySQL 8 または 5.7 をインストールします。
デフォルトでは、Debian のいくつかのバージョン(Debian 9 など)では、デフォルトの MySQL サーバーとして MariaDB がインストールされます。MariaDB は、MySQL との幅広い互換性を実現するように設計されており、同じコマンドで起動できます。MariaDB と標準 MySQL の違いについては、Debian 9 での MySQL から MariaDB への移行をご覧ください。
MySQL をインストールするには、次の手順に沿って操作します。
MySQL Community Server リリース パッケージをダウンロードします。
export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb cd /tmp curl -L --output ${DEB_FILE} \ https://dev.mysql.com/get/${DEB_FILE}
リリース パッケージ ファイルの整合性を確認します。
cat > ${DEB_FILE}.md5 << EOL 9e393c991311ead61dcc8313aab8e230 ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
次の出力が表示されると、ファイルの信頼性と整合性は検証されました。
mysql-apt-config_0.8.17-1_all.deb: OK
ファイルを検証したら、MySQL パッケージをローカル パッケージ リポジトリに追加します。
sudo dpkg -i ${DEB_FILE}
MySQL バージョンなどのインストール オプションの確認を求められます。
上部の [MySQL Server & Cluster] メニュー オプションを選択した状態で、Return キーを押して、矢印キーでサーバーのバージョンを選択します。
このガイドでは、MySQL 8.0 または 5.7 のいずれかを使用することを想定しています。バージョンを選択したら、キーボードの Return キーを押します。
構成メニューで選択したオプションに問題がなければ、矢印キーを使用してメニューで [
Ok
] を選択し、キーボードの Return キーを押します。パッケージ キャッシュを更新します。
sudo apt-get update
「次のシグネチャは、公開鍵が利用できないため、署名できません:NO_PUBKEY 467B942D3A79BD29」のようなGPGエラーが表示された場合、次のようなコマンドで不足するGPG鍵をインポートしてください。
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
このエラー メッセージでは、不足している公開鍵は
467B942D3A79BD29
です。この値を--recv-keys
オプションで指定します。このコマンドを繰り返してパッケージ キャッシュを更新します。
MySQL をインストールします。インストール プロセスが専用の MySQL サービスを開始します。
sudo apt-get -y install mysql-community-server
Ubuntu
Ubuntu 1804 以前の場合は、MySQL 5.7 をインストールします。
Ubuntu 2004 以降の場合は、MySQL 8 をインストールします。
apt-get
パッケージ マネージャーを更新します。sudo apt-get update
MySQL をインストールします。インストール プロセスが専用の MySQL サービスを開始します。
sudo apt-get -y install mysql-server
Ubuntu ディストリビューションの場合、デフォルトで MySQL が
auth_socket
プラグインを使用してroot
ユーザーを認証します。このクエリを実行して、このデフォルト構成を確認します。echo "SELECT user, authentication_string, plugin, host FROM mysql.user WHERE user='root' ;" \ | sudo mysql -t -u root
出力には、
localhost
から接続するroot
ユーザーがauth_socket
プラグインを使用することが示されます。+------+-----------------------+-------------+-----------+ | user | authentication_string | plugin | host | +------+-----------------------+-------------+-----------+ | root | | auth_socket | localhost | +------+-----------------------+-------------+-----------+
この設定を変更し、root パスワードを推測しにくいパスワードに変更します。
export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD" echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \ | sudo mysql -u root
出力には新しい root パスワードが含まれます。
Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
CentOS または RHEL 7
この手順では、MySQL 8 をインストールします。
CentOS と RHEL のバージョン 7 には、パッケージ管理システムの一部として MySQL の代わりに MariaDB が含まれています。MySQL をインストールするには、まず、パッケージ マネージャーを更新する必要があります。
MySQL Community Server リリース パッケージをダウンロードします。
export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
リリース パッケージ ファイルの整合性を確認します。
cat > ${RPM_FILE}.md5 << EOL 8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
次の出力が表示されると、ファイルの信頼性と整合性は検証されました。
mysql80-community-release-el7-4.noarch.rpm: OK
MySQL を含むようにパッケージ マネージャーを更新します。
sudo rpm -Uvh ${RPM_FILE}
MySQL をインストールします。
sudo yum -y install mysql-community-server
MySQL サーバーを開始します。
sudo /usr/bin/systemctl start mysqld
サーバーログから一時的な root パスワードを取得します。
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
Rocky Linux または RHEL 8
この手順では、MySQL 8 をインストールします。
Rocky Linux、CentOS Stream、RHEL のバージョン 8 には、パッケージ管理システムの一部として MySQL の代わりに MariaDB が含まれています。MySQL をインストールするには、まず、パッケージ マネージャーを更新する必要があります。
MySQL Community Server リリース パッケージをダウンロードします。
export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm cd /tmp curl -L --output ${RPM_FILE} \ https://dev.mysql.com/get/${RPM_FILE}
リリース パッケージ ファイルの整合性を確認します。
cat > ${RPM_FILE}.md5 << EOL 0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
次の出力が表示されると、ファイルの信頼性と整合性は検証されました。
mysql80-community-release-el8-2.noarch.rpm: OK
MySQL を含むようにパッケージ マネージャーを更新します。
sudo rpm -iUvh ${RPM_FILE}
MySQL をインストールします。 インストールではコミュニティ サーバーが使用されるように、AppStream リポジトリを無効にします。
sudo yum module disable -y mysql sudo yum install -y \ --disablerepo=appstream \ mysql-community-server
MySQL サーバーを開始します。
sudo /usr/bin/systemctl start mysqld
サーバーログから一時的な root パスワードを取得します。
sudo cat /var/log/mysqld.log | grep -i 'temporary password'
MySQL インストールのセキュリティの強化
MySQL インストールのセキュリティを強化するには、mysql_secure_installation
コマンドを実行します。インストール プロセス中にパスワードを設定しなかった場合は、この手順でパスワードを作成します。このコマンドの詳細については、mysql_secure_installation の MySQL ドキュメントをご覧ください。
sudo mysql_secure_installation
MySQL への接続
次の手順では、mysql-test
インスタンスから MySQL に接続する方法について説明します。
MySQL 8.0
MySQL クライアントを使用して MySQL に接続します。
sudo mysql -u root -p
MySQL に接続すると、プロンプトが
mysql>
に変わります。MySQL コマンドを実行することができるようになります。たとえば、次のコマンドは、現在の接続を含む、実行中のスレッドを表示します。
mysql> SHOW processlist;
+----+-----------------+-----------+------+---------+------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ | 5 | event_scheduler | localhost | NULL | Daemon | 1889 | Waiting on empty queue | NULL | | 14 | root | localhost | NULL | Query | 0 | init | show processlist | +----+-----------------+-----------+------+---------+------+------------------------+------------------+ 2 rows in set (0.00 sec)
次のコマンドを使用して、ユーザーのリストを生成できます。
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+------------------------------------------------------------------------+ | User | Host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.sys | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | root | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B | +------------------+-----------+------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
コマンドの実行が完了したら、
exit
コマンドを使用して MySQL クライアントを終了し、再度exit
を使用して Compute Engine インスタンスからログアウトします。mysql> exit
Bye
MySQL 5.7
MySQL クライアントを使用して MySQL に接続します。
sudo mysql -u root -p
MySQL に接続すると、プロンプトが
mysql>
に変わります。MySQL コマンドを実行することができるようになります。たとえば、次のコマンドは、現在の接続を含む、実行中のスレッドを表示します。
mysql> SHOW processlist;
+----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 51 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec)
次のコマンドを使用して、ユーザーのリストを生成できます。
mysql> SELECT User, Host, authentication_string FROM mysql.user;
+---------------+-----------+-------------------------------------------+ | User | Host | authentication_string | +---------------+-----------+-------------------------------------------+ | root | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +---------------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec)
コマンドの実行が完了したら、
exit
コマンドを使用して MySQL クライアントを終了し、再度exit
を使用して Compute Engine インスタンスからログアウトします。mysql> exit
Bye
クリーンアップ
チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
インスタンスの削除
Compute Engine インスタンスを削除するには:
- In the Google Cloud console, go to the VM instances page.
- Select the checkbox for the instance that you want to delete.
- To delete the instance, click More actions, click Delete, and then follow the instructions.
次のステップ
ここまで、Compute Engine に MySQL サーバーをインストールする方法を学びました。MySQL を使用する複雑なアプリケーションを参照するには、MySQL を使用する Cloud Marketplace でさまざまな開発スタックをご覧ください。
要件に高可用性とスケーラビリティが含まれている場合は、Compute Engine 上での MySQL Cluster のインストールを検討します。MySQL Cluster は、シェアードナッシング クラスタリングとオートシェーディングを通して高可用性とスケーラビリティを提供します。Cloud Marketplace は、MySQL クラスタリング用のオープンソース ソリューションである Percona 用のクリック デプロイ オプションを提供します。
MySQL のスケーラビリティに関するもう 1 つのオープンソース ソリューションは、2011 年からすべての YouTube データベース トラフィックを供給している Vitess です。Vitess は、コンテナ内で動作するアプリケーションに最適です。コンテナ環境での Vitess の使用方法については、Kubernetes 上での Vitess の実行をご覧ください。
MySQL の詳細については、公式の MySQL ドキュメントをご覧ください。
Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。