このページでは、Cloud SQL インスタンスのリードレプリカを作成する方法について説明します。
外部サブスクライバーのパブリッシャーとして機能する Cloud SQL インスタンスを設定するには、外部レプリカを構成するをご覧ください。
リードレプリカとは、プライマリ インスタンスのコピーのことで、プライマリへの変更が通常の状況下で、ほぼリアルタイムで反映されます。リードレプリカは、プライマリ インスタンスからの読み取りリクエストやアナリティクス トラフィックをオフロードするために使用します。
また、障害復旧では、リージョンを移行することもできます。レプリカがクロスリージョン レプリカの場合は、別のリージョンにフェイルオーバーできます。たとえば、レプリカをスタンドアロン インスタンスに昇格できます(この場合、このインスタンスは既存のレプリカのプライマリとは見なされません)。
レプリケーションの仕組みについて詳しくは、Cloud SQL のレプリケーションをご覧ください。
始める前に
このインスタンスのレプリカを初めて作成する場合は、インスタンスがプライマリ インスタンスの要件を満たしていることを確認してください。詳細
リードレプリカを作成する
プライマリ インスタンスごとに最大 8 つのリードレプリカを作成できます。リードレプリカを作成する手順は次のとおりです。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- レプリカを作成するインスタンスを探して、リストの右端にある [
more actions
] メニューを開きます。 - [リードレプリカを作成] を選択します。
この選択肢が表示されない場合、そのインスタンスはレプリカです。レプリカのレプリカを作成することはできません。
[インスタンスのカスタマイズ] セクションで、レプリカの設定を更新します。最初に [構成オプションを表示] をクリックして、設定のグループを表示します。次に、目的のグループを開いて設定を確認し、カスタマイズします。選択したすべてのオプションの [サマリー] が右側に表示されます。これらの設定のカスタマイズはオプションです。カスタマイズを行わない場合、デフォルト値が割り当てられます。
各設定の詳細については、インスタンスの設定ページをご覧ください。
- [レプリカを作成する] をクリックします。
Cloud SQL により、必要に応じてバックアップが作成され、レプリカが作成されます。プライマリのインスタンス ページに戻ります。
gcloud
レプリカを作成します。
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME
必要な場合は、--tier
パラメータを使用して異なる階層サイズを指定できます。
--region
パラメータを使用して別のリージョンを指定できます。
プライマリ インスタンスにプライベート IP アドレスしかない場合は、--no-assign-ip
パラメータをコマンドに追加します。
他のインスタンス設定のパラメータを追加することもできます。詳細については、gcloud sql インスタンスの作成をご覧ください。
レプリカは、プライマリ インスタンスと同じ VPC ネットワーク内に作成する必要があります。同じ VPC ネットワークで allocated-ip-range-name
を指定することもできます。範囲が指定されていない場合、レプリカはランダムな範囲で作成されます。
Terraform
リードレプリカを作成するには、Terraform リソースを使用します。
REST v1beta4
インスタンス リソースの insert
メソッドを使用してリードレプリカを作成します。リージョンと databaseVersion プロパティはマスターと同じにする必要があります。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- database-version: 列挙型のバージョン文字列(例: SQLSERVER_2017_ENTERPRISE)
- primary-instance-name: プライマリ インスタンスの名前
- primary-instance-region: プライマリ インスタンスのリージョン
- replica-region: レプリカ インスタンスのリージョン
- replica-name: レプリカ インスタンスの名前
- machine-type: マシンタイプの列挙型文字列。例: 「db-custom-1-3840」
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
リクエストの本文(JSON):
{ "masterInstanceName": "primary-instance-name", "project": "project-id", "databaseVersion": "database-version", "name": "replica-name", "region": "replica-region", "settings": { "tier": "machine-type", "settingsVersion": 0, } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
トラブルシューティング
問題 | トラブルシューティング |
---|---|
作成時にリードレプリカがレプリケーションを開始しなかった。 | ログファイルに、より具体的なエラーが記録されている可能性があります。Cloud Logging のログを調べて、実際のエラーを確認します。 |
リードレプリカを作成できない - invalidFlagValue エラー。 | リクエスト内のフラグのいずれかが無効です。これは、明示的に指定されたフラグか、デフォルト値に設定されたフラグである可能性があります。 まず、
|
リードレプリカを作成できない - 不明なエラー。 | ログファイルに、より具体的なエラーが記録されている可能性があります。Cloud Logging のログを調べて、実際のエラーを確認します。 エラーが |
ディスクに空きがない。 | レプリカの作成中にプライマリ インスタンスのディスクの空きがなくなる可能性があります。プライマリ インスタンスを編集して、より大きなディスクサイズにアップグレードします。 |
レプリカ インスタンスのメモリ使用量が多すぎる。 | レプリカは一時メモリを使用して頻繁にリクエストされる読み取りオペレーションをキャッシュに保存するため、プライマリ インスタンスより多くのメモリを使用する可能性があります。 レプリカ インスタンスを再起動して、一時メモリ領域を再利用します。 |
レプリケーションが停止した。 | ストレージの上限に達しており、ストレージの自動増量が有効になっていません。 インスタンスを編集して |
レプリケーション ラグが常に大きい。 | 書き込みの負荷が大きすぎてレプリカで処理できません。レプリケーション ラグは、レプリカの SQL スレッドで IO スレッドに対応できない場合に発生します。クエリやワークロードによっては、特定のスキーマで一時的または永続的に高いレプリケーション ラグが発生することがあります。レプリケーション ラグの一般的な原因は次のとおりです。
考えられる解決策は次のとおりです。
|
レプリカの作成がタイムアウトで失敗する。 | プライマリ インスタンスで長時間 commit されていないトランザクションが実行されると、リードレプリカの作成に失敗することがあります。 実行中のクエリをすべて停止してからレプリカを再作成します。 |
次のステップ
- レプリカの管理について学習します。
- クロスリージョン レプリカについて学習する。