- Database Migration Service とは何ですか?
- サポートされているソースはどれですか?
- サポートされているリンク先
- クロス バージョンのサポートはありますか?
- 移行されるデータ、スキーマ、メタデータ コンポーネント
- 継続的な移行中に複製される変更
- 移行されないデータ
- 使用されるネットワーク方法
- 既知の制限事項
- Database Migration Service とは何ですか?
- Database Migration Service は、 Google Cloudにデータを簡単に移行できるサービスです。Database Migration Service は、PostgreSQL ワークロードを Cloud SQL にリフト&シフトするのに役立ちます。
- サポートされているソース
-
- Amazon RDS 9.6.10 以降、10.5 以降、11.1 以降、12、13、14、15、16、17。
- Amazon Aurora 10.11 以降、11.6 以降、12.4 以降、13.3 以降、14.6 以降、15.2 以降、16、17。
- セルフマネージド PostgreSQL(オンプレミスまたはお客様が完全に管理するクラウド VM 上)9.4、9.5、9.6、10、11、12、13、14、15、16、17。
- Cloud SQL for PostgreSQL 9.6、10、11、12、13、14、15、16、17。
- Microsoft Azure Database for PostgreSQL Flexible Server: 11 以降
- サポートされているリンク先
-
- Cloud SQL for PostgreSQL 9.6、10、11、12、13、14、15、16、17。
- クロス バージョンのサポートはありますか?
- Database Migration Service は、移行元データベースと同じバージョンまたはそれ以降のバージョンの PostgreSQL から Cloud SQL への移行をサポートしています。
- 移行されるデータ、スキーマ、メタデータ コンポーネント
- Database Migration Service は、移行元から移行先にスキーマ、データ、メタデータを移行します。データベース移行の一環として、以下のデータ、スキーマ、メタデータ コンポーネントがすべて移行されます。
データの移行
- 選択したデータベースのすべてのスキーマとテーブル。
- 命名
- 主キー
- データ型
- 序数
- デフォルト値
- null 可能性
- 自動増分属性
- セカンダリ インデックス
- ストアド プロシージャ
- 関数
- トリガー
- ビュー
- 外部キー制約
- 継続的な移行中に複製される変更
-
DML の変更のみが移行中に自動更新されます。移行元と移行先のデータベースの互換性を保つように DDL を管理する責任はユーザーにあります。これは次の 2 つの方法で実現できます。
- 移行元への書き込みを停止し、移行元と移行先の両方で DDL コマンドを実行します。移行先で DDL コマンドを実行する前に、DDL 変更を適用する Cloud SQL ユーザーに
cloudsqlexternalsync
ロールを付与します。データのクエリや変更を有効にするには、該当する Cloud SQL ユーザーにcloudsqlexternalsync
ロールを付与します。 pglogical.replicate_ddl_command
を使用して、移行元と移行先の一貫したポイントで DDL を実行します。このコマンドを実行するユーザーは、ソースと宛先の両方で同じユーザー名を使用し、移行されるアーティファクト(テーブル、シーケンス、ビュー、データベースなど)のスーパーユーザーまたはオーナーである必要があります。pglogical.replicate_ddl_command
の使用例をいくつか示します。データベース テーブルに列を追加するには、次のコマンドを実行します。
select pglogical.replicate_ddl_command('ALTER TABLE [schema].[table] add column surname varchar(20)', '{default}');
データベース テーブルの名前を変更するには、次のコマンドを実行します。
select pglogical.replicate_ddl_command('ALTER TABLE [schema].[table] RENAME TO [table_name]','{default}');
データベース テーブルを作成するには、次のコマンドを実行します。
select pglogical.replicate_ddl_command(command := 'CREATE TABLE [schema].[table] (id INTEGER PRIMARY KEY, name VARCHAR);', replication_sets := ARRAY['default'']);
select pglogical.replication_set_add_table('default', '[schema].[table]');
- 移行元への書き込みを停止し、移行元と移行先の両方で DDL コマンドを実行します。移行先で DDL コマンドを実行する前に、DDL 変更を適用する Cloud SQL ユーザーに
- 移行されないデータ
-
Cloud SQL の移行先インスタンスにユーザーを追加するには、インスタンスに移動し、[ユーザー] タブからユーザーを追加するか、PostgreSQL クライアントからユーザーを追加します。詳細については、PostgreSQL ユーザーの作成と管理をご覧ください。
PostgreSQL の論理デコード機能は、ラージ オブジェクトに対する変更のデコードをサポートしていないため、ラージ オブジェクトは複製できません。大きなオブジェクトを参照する 列タイプ oid を持つテーブルの場合、行は引き続き同期され、新しい行が複製されます。ただし、宛先データベースの大きなオブジェクトにアクセスしようとすると(lo_get を使用して読み取る、lo_export を使用してエクスポートする、指定された OID のカタログ
pg_largeobject
を確認する)、大きなオブジェクトが存在しないというメッセージが表示されて失敗します。主キーのないテーブルの場合、Database Migration Service は、変更データ キャプチャ(CDC)フェーズでの初期スナップショットと
INSERT
ステートメントの移行をサポートします。UPDATE
ステートメントとDELETE
ステートメントは手動で移行する必要があります。Database Migration Service は、マテリアライズド ビューからデータを移行しません。移行するのはビュー スキーマのみです。ビューにデータを入力するには、
REFRESH MATERIALIZED VIEW view_name
コマンドを実行します。新しい Cloud SQL の宛先の
SEQUENCE
状態(last_value
など)は、ソースのSEQUENCE
状態と異なる場合があります。 - 使用されているネットワーク方法
- Database Migration Service で移行を作成するには、移行元と Cloud SQL の移行先インスタンスの間に接続を確立する必要があります。サポートされている方法はさまざまです。特定のワークロードに最適なものを選択します。
ネットワーキングの方式 説明 長所 短所 IP 許可リスト Cloud SQL インスタンスのパブリック IP からの接続を受け入れるようにソース データベース サーバーを構成することで機能します。この方法を選択すると、Database Migration Service が移行の作成中に設定プロセスを案内します。 - 簡単に構成できる。
- 短期的な移行シナリオ(POC または小規模なデータベース移行)に推奨されます。
- ファイアウォールの構成で IT のサポートが必要になる場合がある。
- ソース データベースをパブリック IP に公開します。
- 接続がデフォルトで暗号化されない。接続を暗号化するには、ソース データベースで SSL を有効にする必要があります。
クラウドでホストされている VM を経由するリバース SSH トンネル 安全なリバース SSH トンネルを介して、宛先からソースへの接続を確立します。 Google Cloud プロジェクトのバスティオン ホスト VM と、ソースに接続しているマシン(ネットワーク上のノートパソコンなど)が必要です。Database Migration Service は、移行の作成時に必要な情報を収集し、設定用のスクリプトを自動生成します。 - 簡単に構成できる。
- カスタム ファイアウォールの構成は必要ありません。
- 短期的な移行シナリオ(POC または小規模なデータベース移行)に推奨されます。
- Bastion VM はお客様が所有して管理します。
- 追加費用が発生する場合があります。
VPC ピアリング この方法では、VPC が相互に通信するように構成します。これは、移行元と移行先の両方が Google Cloudでホストされている場合にのみ適用されます。長時間実行または大規模な移行に推奨されます。 - Google Cloud ソリューション。
- 簡単に構成できる。
- 高帯域幅
ソースが Google Cloudでホストされている場合にのみ使用できます。 VPN 内部ネットワークと Google Cloud VPC をパブリック インターネット経由の安全な接続で接続する IPsec VPN トンネルを設定します。 Google Cloud VPN または内部ネットワーク用に設定された任意の VPN ソリューションを使用してください。 - 堅牢でスケーラブルな接続ソリューション。
- 中程度から高い帯域幅。
- 組み込みのセキュリティ機能。
- Google Cloud ソリューションとして、または他のサードパーティから提供されます。
- 追加料金が発生します。
- 複雑な構成(すでに配置されている場合を除く)。
Cloud Interconnect オンプレミス ネットワークと Google Cloud間の高可用性で低レイテンシの接続を使用します。 帯域幅が最も大きく、長時間実行される大規模な移行に最適です。 - 追加料金が発生します。
- 接続はデフォルトで安全ではありません。
- 簡単ではない構成(すでに配置されている場合を除く)。
- 既知の制限事項
- 既知の制限事項をご覧ください。