チュートリアル: 自動ワークフローを使用した MySQL から Cloud SQL への移行

このチュートリアルでは、Cloud SQL 自動移行ワークフローを使用して MySQL 5.7 データベースを Cloud SQL に移行する方法について説明します。これは、付属ドキュメントの MySQL から Cloud SQL への移行で説明されている外部レプリカのプロモーション戦略に沿っています。このチュートリアルは、MySQL のコンセプトに精通していること、Cloud SQL の特長と機能を理解していること、コンセプトのドキュメントを読み終えていることを前提としています。

目標

  • ソース データベースとなる MySQL データベースを Compute Engine にデプロイする。
  • Cloud SQL 移行の前提条件がすべて満たされていることを確認する。
  • 自動移行ワークフローを使用して Cloud SQL レプリカを作成する。
  • レプリカ データベースが Cloud SQL で実行されていることを確認する。
  • Cloud SQL データベースをレプリカからプライマリにプロモートする。
  • Cloud SQL データベースを使用するようにアプリケーションを更新する。
  • プライマリ データベースが Cloud SQL で実行されていることを確認する。

料金

このチュートリアルでは、課金対象である次の Google Cloud コンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。新しい Google Cloud ユーザーは無料トライアルをご利用いただけます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    [プロジェクトの選択] ページに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Compute Engine and Cloud SQL API を有効にします。

    API を有効にする

アーキテクチャ

ここで最初に構築するアーキテクチャには、MySQL ベースの WordPress アプリケーションが含まれています。これを Cloud Deployment Manager を使用してデプロイし、Compute Engine で実行します。このチュートリアルでは、ソース データベースの実行に Compute Engine を使用しますが、このチュートリアルの手順を使用すれば、パブリック IPv4 でアクセス可能なすべての場所から MySQL データベースを移行できます。移行元の場所には、オンプレミス環境、コロケーション施設、クラウド プロバイダの場所などがあります。

まず、次の図に示すように、データベースに MySQL を使用し、Compute Engine で実行されるアプリケーションを作成します。

開始時のデータベース アーキテクチャ。

その後、次の図に示すように、mysqldump コマンドを使用して MySQL データベースを Cloud SQL に複製します。

データベース レプリケーション アーキテクチャ。

最後に、Cloud SQL レプリカをプライマリにプロモートし、新しいプライマリ データベースを使用するようにアプリケーションを更新します。この移行後、アーキテクチャは Cloud SQL でホストされるデータベースを使用するようになります。次の図は、新しい Cloud SQL データベースを使用するアプリを示しています。

移行したデータベース アーキテクチャ。

ソース MySQL データベースを Compute Engine へデプロイする

まず、Cloud SQL に移行するためのソース MySQL データベースを構築します。バージョン 5.6 または 5.7 を実行している MySQL データベースであればどれでも、Cloud SQL の自動移行ワークフローを利用できます。

Deployment Manager を使用して WordPress をデプロイする

ソース データベースのデプロイは、Google Cloud Marketplace のクリック デプロイ ソリューションの WordPress インストールを使用すると簡略化できます。WordPress は、ウェブサイト作成およびコンテンツ管理のための一般的なツールで、MySQL を使用しています。Google Cloud で提供されるバージョンのクリック デプロイは MySQL 5.7 を使用しているため、Cloud SQL への移行要件を満たしています。

  1. Cloud Console で、Google クリック デプロイのページに移動します。

    Google クリック デプロイ ページに移動

  2. WordPress ソリューションをクリックします。

  3. [運用開始] をクリックします。

  4. 次のフィールドに値を入力します。

    1. デプロイ名: my-wordpress-server
    2. ゾーン: us-east-1b
    3. 管理者のメールアドレス: 自分のメールアドレスを入力します。
    4. ファイアウォール: HTTP と HTTPS の両方のオプションが選択されていることを確認します。
  5. [デプロイ] をクリックします。

    WordPress VM のインストール プロセスが開始されます。数分後、デプロイされた WordPress VM の詳細が Deployment Manager に表示されます。この情報はすべて、チュートリアルの後の手順で使用するために保存します。特に、MySQL root ユーザーと wordpress のユーザー名とパスワードに関する情報は重要です。

  6. [サイトのアドレス] をクリックして、WordPress サイトが実行されていることを確認します。

    すべてが正常に機能している場合は、次のような出力が表示されます。

    クリック デプロイ WordPress ホームページの例。

WordPress サーバーに API スコープを割り当てる

Compute Engine VM 上での WordPress インストールのセットアップを完了するには、API スコープ権限を追加する必要があります。これにより、VM から Cloud Storage にデータベースのエクスポートを書き込めるようになります。Cloud Storage のエクスポートは、後で Cloud SQL レプリカを作成するために使用します。

  1. Cloud Shell を開きます。

    Cloud Shell を開く

  2. WordPress VM を停止します。

    gcloud compute instances stop my-wordpress-server-vm \
        --zone us-east1-b
    

    API スコープを介して新しい権限を適用するには、VM が停止状態になっている必要があります。

    サーバーのシャットダウンが完了するまで待ってから、次のステップに進みます。

  3. 新しいスコープを適用して、VM から Cloud Storage への書き込みを可能にします。

    gcloud beta compute instances set-scopes my-wordpress-server-vm \
        --scopes storage-rw \
        --zone us-east1-b
    
  4. VM を再起動します。

    gcloud compute instances start my-wordpress-server-vm \
        --zone us-east1-b
    

これで、VM から Cloud Storage に対する読み取りと書き込みが可能になりました。

WordPress 管理者として接続し、投稿を作成する

次の手順では、WordPress 管理インターフェースに接続して投稿を新規に作成し、アプリケーションとデータベースが正しく機能していることを確認します。サーバーを停止して再起動した際に IP アドレスが変更された可能性があるため、WordPress VM の現在のパブリック IP アドレスを確認する必要があります。

  1. WordPress を実行している VM のパブリック IP アドレスを確認します。

    1. Cloud Console で、[VM インスタンス] ページに移動します。

      [VM インスタンス] ページに移動

    2. my-wordpress-server-vm. の [外部 IP] の値をメモします。

  2. WordPress アプリケーションが実行されていることを確認します。メモした外部 IP アドレスを使用して、ブラウザで WordPress VM のパブリック IP アドレスに移動します。

    http://your-public-ip
    

    IP アドレスが正しい場合は、デフォルトの WordPress ページが再度表示されます。

  3. ブラウザで WordPress の管理ページに移動します。

    http://your-public-ip/wp-admin
    
  4. WordPress の管理者ユーザーと管理者パスワードを使用して、管理インターフェースにログインします。

  5. [投稿] をクリックし、[新規追加] をクリックします。

  6. 投稿に My First Post というタイトルを付け、なんらかのテキストを追加します。

  7. 完了したら [公開] をクリックし、もう一度 [公開] をクリックして確定します。

    最初の投稿の公開。

  8. [サイトのアドレス] をクリックすると、新しい投稿が表示されます。

これで、MySQL バージョン 5.7 データベースを実行する WordPress VM が作成されました。

Cloud SQL の移行の前提条件を確認する

Cloud SQL への移行を自動移行ワークフローを使用して行うには、事前にソース データベース サーバーの構成要件が満たされていることを確認しておく必要があります。以降のセクションでは、このプロセスを要件ごとに説明します。

SSH を使用して VM に接続する

WordPress が実行されている VM で前提条件を確認する必要があるため、まず VM インスタンスに接続します。

  1. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。

    SSH を使用した WordPress VM への接続。

    Cloud Shell が開き、VM へのコマンドライン アクセスが可能になります。

すべての前提条件を確認する

WordPress サーバーへのコマンドライン接続を確立できたので、MySQL の移行準備ができていることを確認します。

レプリケーション ユーザーを作成する

データベースのレプリケーションをサポートするため、MySQL でレプリケーション ユーザー アカウントを作成します。これにより、後の手順で root ユーザーを使用する必要がなくなります。

  1. WordPress VM で、root ユーザーとして MySQL データベースに接続します。

    mysql -u root -p -h localhost wordpress
    

    プロンプトが表示されたら、Deployment Manager でメモした root パスワードを入力します。

  2. MySQL データベースに接続した状態で、レプリケーション ユーザーを作成します。

    CREATE USER 'replication'@'%' IDENTIFIED BY 'mysupersecretpassword';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
    

    次のような出力が表示されます。

    mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'mysupersecretpassword';
    Query OK, 0 rows affected (0.00 sec)
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
  3. quit」と入力して、mysql インターフェースを終了します。

これで、Cloud SQL 自動移行ワークフローで使用するレプリケーション ユーザーが作成されました。

MySQL 構成ファイルを更新する

MySQL 構成ファイルで設定する必要がある変数は 4 つあります。構成ファイルは /etc/mysql/mysql.conf.d/mysqld.cnf にあります。追加する値は次のとおりです。

  • server-id。バイナリ ロギングを有効にするには、この値を設定する必要があります。値は 1~(2^32)-1 (4,294,967,295) の範囲で、各サーバーに固有である必要があります。このチュートリアルでは、値を 2 に設定します。
  • log-bin。この値を設定することで、バイナリ ロギングが有効になり、データベースがログの保存先として使用するファイル名を指定できます。このチュートリアルでは、値を mysql-bin に設定します。
  • gtid_mode。この値を設定することで、トランザクションの識別にグローバル トランザクション識別子(GTID)を使用できるようになります。この設定を使用するには、次のコマンドも含める必要があります。このチュートリアルでは、値を on に設定します。
  • enforce-gtid-consistency。この設定により、GTID を使用してログを記録できるステートメントのみが許可されるため、GTID の一貫性が保持されます。このチュートリアルでは、値を true に設定します。

次の手順では、4 つの MySQL 変数すべてに値を設定する方法について説明します。

  1. WordPress VM のターミナル ウィンドウで、前述の mysqld.cnf 構成を次のように設定します。

    sudo -s
    echo "server-id = 2" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    echo "log-bin = mysql-bin" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    echo "gtid_mode = ON" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    echo "enforce-gtid-consistency = true" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    exit
    
  2. コマンドを有効にするため、MySQL サーバーを再起動します。

    sudo service mysql restart
    
  3. mysql インターフェースに再度ログインします。

    mysql -u root -p -h localhost wordpress
    
  4. 再起動後に、すべての変数が正しく設定されたことを確認します。

    SELECT @@gtid_mode, @@enforce_gtid_consistency, @@server_id;
    

    次の出力が表示されます。

    mysql> select @@gtid_mode, @@enforce_gtid_consistency, @@server_id;
    +-------------+----------------------------+-------------+
    | @@gtid_mode | @@enforce_gtid_consistency | @@server_id |
    +-------------+----------------------------+-------------+
    | ON          | ON                         |           2 |
    +-------------+----------------------------+-------------+
    1 row in set (0.00 sec)
    
  5. quit」と入力して mysql インターフェースを閉じます。

データベースへの IPv4 アクセスを有効にする

Cloud SQL 自動移行ワークフローを使用するには、パブリック IPv4 アドレスを使用してソース データベースにアクセスできる必要があります。WordPress サーバーには自動的にパブリック IP アドレスが割り当てられているため、VPC ファイアウォール ルールを使用してこの接続を許可できます。

  1. Cloud Shell で、新しいネットワーク タグを WordPress VM に追加します。

    gcloud compute instances add-tags my-wordpress-server-vm \
        --tags allowmysql \
        --zone us-east1-b
    
  2. 公共のインターネットから VM への MySQL ネットワーク トラフィックを許可します。

    gcloud compute firewall-rules create "mysql-replication-access" \
        --allow tcp:3306 \
        --target-tags "allowmysql"
    

これで、公共のインターネットから WordPress VM への MySQL トラフィック(ポート 3306)を許可するファイアウォール ルールが作成されました。

本番環境のデータベースは、さまざまな方法で管理、保護されています。ネットワーク管理者とセキュリティ管理者に連絡して、自動移行ワークフローを使用した本番環境データベース移行に必要なアクセス権を調整してください。

クリック デプロイ WordPress サーバーは、ローカル ウェブサーバーからローカル データベースにアクセスできるように設計されています。移行のサポートにおいては他のデータベース接続を許可するため、localhost 以外のポートをリッスンするように、mysqld.cnf ファイルの MySQL bind_address エントリを更新する必要があります。

  1. WordPress VM のターミナル ウィンドウで、MySQL の bind_address 値を 0.0.0.0 に変更します。

    sudo sed -i 's|bind-address.*|bind-address = 0.0.0.0|' /etc/mysql/mysql.conf.d/mysqld.cnf
    

    これにより、利用可能なすべてのネットワーク インターフェースで MySQL 接続が可能になります。

  2. 変更を有効にするため、MySQL データベースを再起動します。

    sudo service mysql restart
    

データベースのバックアップ ファイルを作成する

次の手順として、Cloud SQL からレプリカを作成するために、データベースのバックアップ ファイルを作成する必要があります。これを行うには、MySQL の mysqldump コマンドを使用します。

基本的なデータを確認する

バックアップを作成する前に、WordPress データベースの投稿数を検証しておきます。これは、コンテンツが正常にバックアップされたことを確認するためです。

  1. SSH を使用して WordPress サーバーに接続します。
  2. wp_posts テーブルの行数をカウントします。

    mysql -u root -p -D wordpress -e "SELECT count(*) from wp_posts"
    

    次のような出力が表示されます。

    SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        6 |
    +----------+
    1 row in set (0.01 sec)
    

これで、開始時点のテーブルの行数がわかりました。

データベースのバックアップを作成して Cloud Storage にアップロードする

次のタスクでは、バックアップ プロセスの結果を Cloud Storage バケットにコピーします。

  1. Cloud Shell で、データベースのバックアップを保持する Cloud Storage バケットを新規作成します。

    gsutil mb gs://${DEVSHELL_PROJECT_ID}-mysqldump/
    

    これにより、プロジェクトに mysqldump ファイルを保存する一意の名前(Google Cloud プロジェクト ID に基づく名前)のバケットが作成されます。

  2. Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  3. 仮想マシン インスタンスのリストで、WordPress サーバーの行にある [SSH] をクリックして VM に接続します。

    SSH を使用した WordPress VM への接続。

  4. WordPress VM のターミナル ウィンドウで、mybackup1.sql という名前のバックアップを作成します。

    sudo mysqldump \
        -h localhost -P 3306 -u root -p \
        --databases wordpress \
        --hex-blob --skip-triggers --master-data=1 \
        --order-by-primary --compact --no-autocommit \
        --default-character-set=utf8 \
        --single-transaction --set-gtid-purged=on > mybackup1.sql
    
  5. MySQL root パスワードを入力します。

  6. mybackup1.sql ファイルを Cloud Storage バケットにコピーします。

    sudo gsutil cp ./mybackup1.sql gs://[your_project_name]-mysqldump
    

    次のような出力が表示されます。

    Copying file://./mybackup1.sql [Content-Type=application/x-sql]...
    / [1 files][510.4 KiB/510.4 KiB]
    Operation completed over 1 objects/510.4 KiB.
    

    これで、バックアップ ファイルが Cloud Storage にアップロードされました。

自動移行ワークフローを使用して Cloud SQL 外部レプリカを作成する

データベース内の行数を把握し、データベースの完全なバックアップを作成しました。これで、自動移行ワークフローを使用して Cloud SQL にレプリカ データベースを作成できます。

  1. Cloud Console で、[Cloud SQL] ページに移動します。

    [Cloud SQL] ページに移動

  2. [データを移行] をクリックします。

  3. [移行を開始] をクリックします。

  4. [データソースの詳細] セクションで、次の値を指定します。

    • データソース名: ソース データベースの名前。mywordpress を使用します。
    • ソースのパブリック IP アドレス: WordPress VM の外部 IP アドレス。この値は、Deployment Manager でサーバーを作成したときに取得したものです。
    • ソースのポート番号: 3306
    • MySQL レプリケーションのユーザー名: replication
    • MySQL レプリケーションのユーザー パスワード: mysupersecretpassword
    • データベースのバージョン: 5.7
  5. [次へ] をクリックします。

  6. [Cloud SQL リードレプリカの作成] セクションで、次の値を指定します。

    • リードレプリカ インスタンス ID: Cloud SQL サービス インスタンスの名前。mywordpress-cloudsql という名前を使用します。
    • ロケーション: WordPress VM が作成されたリージョンとゾーン。このチュートリアルでは、us-east1-b を使用します。
    • ストレージの種類: SSD
    • ストレージ容量: 10 GB
    • ストレージの自動増量を有効にする: このチェックボックスがオンになっていることを確認します。
    • SQL ダンプファイル: [参照] をクリックし、前の手順で作成したバケットと mysqldump ファイルを選択します。
  7. [詳細設定] をクリックします。

  8. [+ ネットワークを追加] をクリックして、次の操作を行います。

    • ネットワークに external という名前を付けます。
    • [ネットワーク] に「0.0.0.0/0」と入力します。
    • [完了] をクリックします。

    0.0.0.0/0 を追加すると、外部レプリカへの公開アクセスが許可されます。

  9. [データベース フラグ] で [+ 項目を追加] をクリックします。

  10. [フラグの選択] リストで、次の操作を行います。

    1. [sql_mode] を選択します。
    2. 右側に表示されるプルダウン リストで、[ALLOW_INVALID_DATES] を選択します。

    WordPress データベースを Cloud SQL に移行するには、sql_mode フラグが必要です。

  11. [作成] をクリックします。

    インスタンスがバックグラウンドで作成されます。

  12. [データの同期] セクションで、[送信 IP アドレス] フィールドの値をメモします。

    このフィールドの値が表示されるまで数分かかることがあります。ただし、IP アドレスが表示された時点で、Cloud SQL インスタンスはすでに作成されています。

  13. [次へ] をクリックします。

  14. [完了] をクリックします。

自動移行ワークフローにより、WordPress VM 上のソース データベースから Cloud SQL レプリカ データベースへのデータのレプリケーションが開始されます。データベースのサイズ、ソースと宛先の間の距離、プライマリ データベースとレプリカ データベース双方の IOPS に応じて、このプロセスが完了するまでに時間がかかることがあります。今回の場合はデータベースが小さいため、プロセスはすぐに完了します。

数分後、データベース名の横に緑色のチェックマークが表示されます。これは、レプリケーションが有効であることを示します。新しいデータベースをクリックすると、「レプリケーションは有効です。」というメッセージも表示されます。

コンソールでのレプリケーション有効の表示。

これにより、Cloud SQL のレプリケーション オペレーションが成功したことを確認できます。

レプリカ データベースに MySQL ユーザー アカウントを作成する

MySQL サーバーの一部として単一のデータベースを移行した場合、移行プロセスではデータベース自体のユーザー アカウントは移行されません。ユーザーとアプリケーションに対しての変更を制限するには、Cloud SQL レプリカ データベースに重要なアカウントを再作成する必要があります。

  1. Cloud Shell で、Cloud SQL データベースの root ユーザー アカウントを、プライマリの WordPress データベースと同じ root パスワードを使用するように再設定します。

    gcloud sql users set-password root --host=% \
        --instance=mywordpress-cloudsql \
        --password=primary-root-password
    
  2. プライマリの WordPress データベースと同じユーザー名とパスワードで wordpress ユーザー アカウントを作成します。

    gcloud sql users create wordpress --host=% \
        --instance=mywordpress-cloudsql \
         --password=your-wordpress-db-password
    

レプリカ データベースが Cloud SQL で実行されていることを確認する

Cloud SQL レプリケーションが有効になったので、データのレプリケーションを確認します。データのレプリケーションを確認するには、新しい Cloud SQL データベースに接続し、新しいコンテンツでプライマリ WordPress データベースを更新する必要があります。レプリケーションが機能していれば、Cloud SQL レプリカに更新したデータが表示されます。

Cloud SQL で基本的なデータを確認する

Cloud SQL レプリカ データベースに接続する手順は以下のとおりです。

  1. Cloud Console で、[Cloud SQL] ページに移動します。

    [Cloud SQL] ページに移動

  2. レプリカ データベースをクリックして、[インスタンスの詳細] ページを開きます。

  3. [このインスタンスに接続] で、[Cloud Shell を使用して接続] をクリックします。

    これにより、Cloud Shell が開き、接続 IP アドレスが自動的にファイアウォールに追加されます。

  4. ENTER キーを押してコマンドを実行します。

  5. パスワードの入力を求められたら、データベースの root ユーザーのパスワードを入力します。

    これにより、Cloud SQL レプリカへの MySQL 接続が確立します。

  6. データベースを選択します。

    USE wordpress
    
  7. データベースの wp_posts テーブルの行数をカウントするクエリを実行します。

    SELECT count(*) from wp_posts;
    

    出力された行数は、前の出力と一致しています。

    mysql> SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        6 |
    +----------+
    1 row in set (0.01 sec)
    

    これにより、データベースの作成中にレプリケーションが正常に完了したことを確認できます。

この Cloud Shell セッションは次の手順でも使用するため、開いたままにしておきます。

新しいデータベース コンテンツを作成する

ここでは、新しい WordPress 投稿を作成してデータベースにコンテキストを追加します。これにより、新しいデータが Cloud SQL に複製されていることを確認できます。

  1. ブラウザで、WordPress インスタンスの管理ページに移動します。

    http://your-public-ip/wp-admin
    
  2. WordPress の管理者ユーザーと管理者パスワードを使用して、管理インターフェースにログインします。

  3. [投稿] をクリックし、[新規追加] をクリックします。

  4. 投稿に My Second Post というタイトルを付け、なんらかのテキストを追加します。

  5. [公開] をクリックし、もう一度 [公開] をクリックして確定します。

    2 番目の投稿の公開。

  6. [サイトのアドレス] をクリックすると、新しい投稿が表示されます。

プライマリとレプリカの両方で行が増えていることを確認する

これで、データがプライマリ データベースとレプリカ データベースの両方に追加されたことを確認できます。

  1. SSH を使用して WordPress VM に接続します。
  2. wp_posts テーブルの行数をカウントするクエリを実行します。

    mysql -u root -p -D wordpress -e "SELECT count(*) from wp_posts"
    

    次のような出力が表示されます。

    SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        8 |
    +----------+
    1 row in set (0.01 sec)
    

    プライマリ データベースのデータ行の数が増えていることに注目してください。

  3. レプリカの Cloud SQL データベースに接続されている Cloud Shell セッションを開きます。

  4. クエリを実行してレプリカの wp_posts テーブルの行をカウントします。

    SELECT count(*) from wp_posts;
    

    次のような出力が表示されます。

    Mysql [wordpress]> SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        8 |
    +----------+
    1 row in set (0.01 sec)
    

    この出力で、元のデータベースのテーブルの行数とレプリカ データベースのテーブルの行数が同じであれば、データベースに新しいコンテンツを追加したときに適切に複製できたことを確認できます。

Cloud SQL データベースをレプリカからプライマリにプロモートする

レプリカを Cloud SQL で実行し、レプリケーションを確認したところで、レプリカをプライマリに昇格して、データベースの Cloud SQL への移行を完了します。

ダウンタイムに関する考慮事項

すべての MySQL 移行では、ある程度のデータベース ダウンタイムが発生します。自動移行ワークフローに付随するダウンタイムは非常に短いですが、少なくとも数分間は発生します。移行を開始する前に、アプリケーションの要件、サービスレベル目標、サービスレベル契約を理解しておいてください。

プライマリ データベースを停止する

まず、WordPress VM で実行されている MySQL サービスを停止します。これにより、データベースへのすべての書き込みが停止し、データベースとデータベースに接続されたアプリケーションのダウンタイムが開始します。

  1. WordPress VM のターミナル ウィンドウで、MySQL データベースを停止します。

    sudo service mysql stop
    

    これで、プライマリ MySQL データベースがオフラインになりました。

  2. ブラウザで WordPress サイトにアクセスします。

    エラー メッセージが表示され、アプリケーションがオフラインであることを確認できます。

    データベース接続確立でのエラー。

アプリケーション エンドポイントを更新する

プライマリ データベースが停止したら、Cloud SQL サーバーを使用するようにアプリケーションを更新する必要があります。こうすることで、レプリカをプライマリにプロモートする前に、アプリケーションと Cloud SQL データベースの基本的な接続を確認できます。

WordPress には簡単な構成ファイルがあり、これを、アプリケーションが Cloud SQL レプリカを指すように更新します。

  1. Cloud Console で、[Cloud SQL] ページに移動します。

    [Cloud SQL] ページに移動

  2. レプリカ データベースをクリックして、[インスタンスの詳細] ページを開きます。

  3. パブリック IP アドレスをコピーします。

  4. SSH を使用して WordPress VM に接続します。

  5. インスタンスのターミナルで、構成ファイル内の宛先データベースのアドレスを更新します。your-cloud-sql-ip は、Cloud SQL レプリカのパブリック IP アドレスに置き換えます。

    sudo sed -i -e 's/localhost/your-cloud-sql-ip/' /var/www/html/wp-config.php
    

レプリカをプロモートする

これで、新しい Cloud SQL データベースの場所をサポートするようにアプリケーション コードを更新できました。次の手順として、Cloud SQL レプリカをプライマリ データベースにプロモートする必要があります。Cloud SQL レプリカをプライマリ データベースにプロモートすれば、MySQL データベースの Cloud SQL への移行は完了です。

  1. Cloud Console で、[Cloud SQL] ページに移動します。

    [Cloud SQL] ページに移動

  2. レプリカ データベースをクリックして、[インスタンスの詳細] ページを開きます。

  3. [レプリカをプロモート] ボタンをクリックします。

    レプリカのプライマリへのプロモート。

  4. [OK] をクリックして、データベースのプロモートを開始します。

数分後、データベースが Cloud SQL インスタンス ページに有効なものとして表示されます。この時点で WordPress サイトを参照すれば、サイトがオンラインに戻ったことを確認できます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにする手順は次のとおりです。

プロジェクトの削除

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ