移行ツールのオプションを特定する

完了

PostgreSQL サーバーから Azure Database for PostgreSQL フレキシブル サーバーへの移行を実行するには、多くのオプションがあります。 pg_dump、pgadmin、pg_restoreなどのネイティブ PostgreSQL ツールがあります。 Azure Database for PostgresSQL - フレキシブル サーバーには、データベース移行サービスや移行オプションなどの Microsoft Azure クラウド サービスがあり、ソースからターゲットへの全体的なデータ転送プロセスを主に自動化できます。

Azure Database for PostgreSQL フレキシブル サーバー - 移行

Azure Database for PostgreSQL - フレキシブル サーバー サービス内には、他の PostgreSQL インスタンスから Azure ベースのサービスへのデータベースの移行をサポートするネイティブ機能があります。 このオプションは、ソースからターゲットへのデータベースのオフライン移行を目的とします。 このオプションを使用するには、前に説明した pg_dumpall および psql ツールを使用して、フレキシブル サーバーに移行するサーバー レベルのオブジェクト データベースを移行する必要があります。

この機能は、移行元として外部 PostgreSQL インスタンスを使用し、移行プロジェクトがターゲットとして作成されたフレキシブル サーバーを使用して設計されています。 基本的には、フレキシブル サーバーにデータをプルします。 手動ダンプと復元プロセスを実行するよりもこのサービスを使用する利点は、移行の管理された性質です。 構成が完了すると、フレキシブル サーバーに移行されるすべてのテーブルのプロセスが監視されるため、アプリケーション レベルでカットオーバーをいつ実行できるかを簡単に確認できます。

移行プロジェクト

接続を並べ替えたら、新しいサーバーに移行するデータベースを選択するだけです。 次のスクリーンショットでは、大規模なシステムの一部を形成する複数のサービスをバックアップする複数のデータベースがある場合は、一度に 1 つではなくグループとして移行することを選択できます。 このデータベースグループ化は、移行を高速化するだけでなく、移行アクティビティ中に論理的な一貫性を維持するのにも役立ちます。

移行プロジェクト データベースの選択を示す Azure portal のスクリーンショット。

検証と移行のプロセスを開始すると、プロジェクト ダッシュボードを使用してプロセスの全体的な進行状況を確認できます。 このダッシュボードには、データベースが検証され、新しいサーバーに移行されると表示されます。

移行プロジェクト データベースの検証と移行の状態を示す Azure portal のスクリーンショット。

この情報は移行後も保持され、全体的な進行状況を追跡できます。 また、この情報は、実施された作業の成功と期間に関する制御プロセスを変更するために必要な証拠も提供します。

PostgreSQL ツール

ここでは、PostgreSQL サーバーから Azure Database for PostgreSQL フレキシブル サーバーにデータを移行するために使用できる主なツールについて説明します。

pgcopydb

Pgcopydb は、PostgreSQL サーバー間でデータベースをコピーするプロセスを自動化できるオープン ソース プロジェクトです。 PostgreSQL のインストール時に提供されるネイティブ ツールよりも pgcopydb を使用する利点がいくつかあります。これらの利点は次のとおりです。

  • pg_backupとpg_restoreを使用した中間ファイルの必要性を取り除く。
  • PostgreSQL 内のsynchronize__seqscans機能を使用して、テーブルでのインデックスの作成を並列化するインデックスコンカレンシーを作成します。
  • パーティション データへのマルチスレッド テーブルのコピーと、より大きなテーブルの並列転送。
  • データ同期のデータ キャプチャを変更して、長時間のダウンタイム期間の必要性を最小限に抑えます。

pgcopydb には、ソース サーバーからターゲットへのデータベースとデータの移行に使用できる主なオプションが 2 つあります。 これらのオプションは複製とコピーです。

pgcopydb クローン

Clone は、ソース サーバーからターゲットにデータベース全体をコピーするための主要なオプションです。 このコマンドには、移行のダウンタイムを最小限に抑えるためにデータを同期する変更データ キャプチャの構成を自動化するための基本的な複製操作を構成できるいくつかのスイッチがあります。 テーブルによるデータ転送を並列化するオプションと、テーブル、インデックス、およびラージ オブジェクトの並列転送オプションを指定することもできます。

pgcopydb copy

コピーは、データベースまたはその一部の移行に関して、より細かく制御できるオプションです。 このコマンド オプションを使用して、ソース サーバー データベースからターゲット サーバーとデータベースに転送するスキーマ、テーブル、ロールなどを選択できます。 このコマンドは、アプリケーションの最新化移行アクティビティの一環として、1 つの大規模なデータベースが小さいデータベースに分解されるシナリオで役立ちます。 また、統合移行アクティビティを使用すると、あるデータベースのコンテンツを別のデータベース内のスキーマに移行できます。

これらのオプションは、pgcopydb がデータベースを Azure Database for PostgreSQL フレキシブル サーバーに移行するプロセスの改善に役立ついくつかの方法にすぎません。 このプロセスは、リスクを最小限に抑え、成功の可能性を最大化する移行方法を提供します。

pgAdmin

pgAdmin は、PostgreSQL データベースとの対話に使用できる広く使用されている管理ツールです。 このツールを使用すると、pgsql スクリプトを作成して実行できます。 このツールには、PostgreSQL データベースの構成、バックアップ、復元に使用できる便利な GUI ツールの配列が含まれています。 通常は、pgAdmin を管理ワークステーションにインストールします。 このツールを使用すると、複数の PostgreSQL サーバーを登録して接続できるため、移行ツール セットの重要な部分になります。

さまざまな管理者オプションを示すメニューを含む pgAdmin のスクリーンショット。

pg_dump、pg_restore、および psql

pg_dump は、PostgreSQL インスタンスと共にインストールされ、必要に応じて管理ワークステーションにインストールできるコマンド ライン ツールです。 同時ワークロードが発生している場合でも、PostgreSQL から一貫したデータベース バックアップを作成できます。 個々のデータベースで動作し、データベース全体またはその一部をバックアップできます。

pg_dumpを使用してスキーマ オブジェクトをエクスポートする場合は、psql を使用してターゲット データベースで結果の.sql ファイルを実行してオブジェクトを作成できます。 この手順の後、ソースからターゲット システムにデータを移動する方法を確認できます。 1 つのデータベースからデータベース スキーマをエクスポートし、別のデータベースで作成するために使用するコマンドを次の例に示します。


pg_dump -O --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks --schema-only > adventureWorks.sql

psql --host=MyFlexibleServer --username=demo --dbname=AdventureWorks < adventureWorks.sql

ソース データベースの完全ダンプを作成する場合は、pg_restoreを使用して結果のファイルを読み取り、データベースをターゲット PostgreSQL インスタンスに復元します。 バックアップと復元をダンプへの行う際に、これらのアクティビティにかかる時間を左右するいくつかの要因があります。 特に、データベースのサイズ、ストレージ サブシステムのパフォーマンス、および処理コンポーネント間のネットワーク帯域幅と待機時間。

次の例は、データベース ダンプをカスタムに作成し、別のサーバーに復元する方法を示しています。


pg_dump -Fc --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks > db.dump

pg_restore -Fc --host=MyServerName --port=5432 --create --username=adminuser --dbname=AdventureWorks db.dump

pg_dumpall

pg_dumpは単一のデータベースをダンプするために使用されますが、pg_dumpall は、psql が PostgreSQL の新しいインスタンスに読み込む単一のスクリプト ファイルにすべてのデータベースをダンプするために使用されます。

さらに、pg_dumpallを使用して、サーバー間の移行時にデータベースが依存できるロールなどのグローバル サーバー レベル オブジェクトのスクリプト ファイルを生成できます。