高度な移行を管理する

高度な移行は、ダウンタイムを短縮して大規模なデータベースのデータを移行するためのソリューションです。この機能は、AlloyDB Omni と PostgreSQL でのみ使用できます。

プロジェクト DB 管理者のロールを持つユーザーは、次の手順を行う必要があります。GDC コンソールまたは Distributed Cloud CLI を使用して移行を管理します。

コンソール

  1. メインメニューから [Database Service] を選択します。
  2. [移行を作成] をクリックします。
  3. [開始] ダイアログで、移行元と接続の要件を確認します。
  4. [移行元データベースを指定] ダイアログで、移行元データベースのホスト名または IP アドレス、ユーザー名、パスワード、暗号化のタイプ、証明書を指定します。
  5. [クラスタを構成する] ダイアログで、ターゲット データベース クラスタのクラスタ ID、パスワード、データベース バージョン、CPU、メモリ、ストレージ容量を指定します。最も大きなテーブルを保持するのに十分なメモリを選択してください。
  6. [作成] をクリックします。移行とターゲット データベース クラスタの作成には数分かかることがあります。クラスタの準備が完了すると、ステータスが Reconciling から Ready に変わります。移行が正常に設定されると、移行ステータスが Unsynced に変わります。移行を管理するには、次のオプションを使用します。
    1. 開始: 移行を開始し、移行ステータスを Running に変更します。
    2. 停止: 移行を停止し、移行ステータスを Stopped に変更します。
    3. プロモート: ターゲット データベース クラスタをスタンドアロン データベースにプロモートします。
    4. 削除: この移行用に作成された移行とターゲット データベース クラスタを削除します。

次の手順で、ソース データベースのレプリケーション ユーザーのパスワードを定期的にローテーションします。

  1. [ソース データベース] に移動し、[編集] 編集 をクリックします。
  2. レプリケーション ユーザーのパスワードをローテーションする変更を行います。
  3. [保存] をクリックして変更を適用します。

変更が適用されると、移行バックエンドは新しいパスワードを使用します。

gdcloud

  1. Distributed Cloud CLI を使用する前に、インストールして初期化します。次に、組織で認証します。

  2. 移行を作成するには:

    gdcloud database connection-profiles create DB_ENGINE_TYPE SOURCE_CONNECTION_PROFILE \
        --username REPLICATION_USERNAME \
        --password REPLICATION_PASSWORD \
        --ca-certificate CA_CERT_FILE_PATH
    
    gdcloud database migrations create MIGRATION_NAME \
        --source SOURCE_CONNECTION_PROFILE \
        --destination DESTINATION_DBCLUSTER
    
    gdcloud database clusters create DESTINATION_DBCLUSTER \
        --database-version DB_VERSION \
        --admin-password ADMIN_PASSWORD
    

    次の変数を置き換えます。

    • DB_ENGINE_TYPE: 移行のデータベース エンジン タイプ。サポートされている値は postgresql または alloydbomni です。
    • SOURCE_CONNECTION_PROFILE: 新しい接続プロファイルの名前。
    • REPLICATION_USERNAME: ソース データベースのレプリケーション ユーザーの名前。
    • REPLICATION_PASSWORD: ソース データベースのレプリケーション ユーザーのパスワード。
    • CA_CERT_FILE_PATH: ソース データベースの CA 証明書のパス。
    • MIGRATION_NAME: 新しい移行の名前。
    • DESTINATION_DBCLUSTER: ターゲット データベース クラスタの名前。
    • DB_VERSION: 新しいクラスタのバージョン文字列。例: POSTGRESQL_13
    • ADMIN_PASSWORD: 新しいクラスタの管理者ユーザー パスワード。
  3. 移行を開始します。

    gdcloud database migrations start MIGRATION_NAME
    
  4. 移行を停止する:

    gdcloud database migrations stop MIGRATION_NAME
    
  5. 移行をプロモートする:

    gdcloud database migrations promote MIGRATION_NAME
    
  6. 既存の connection-profiles を一覧表示します。

    gdcloud database connection-profiles list DB_ENGINE_TYPE
    
  7. 既存の移行を一覧表示します。

    gdcloud database migrations list --destination DESTINATION_DBCLUSTER
    

API

AlloyDB または PostgreSQL の移行元データベースの場合:

ソース データベースの CA 証明書を保存する Secret を作成します。

apiVersion: v1
data:
  ca.crt:  SOURCE_DB_CA_CERT
kind: Secret
metadata:
  annotations:
    propagation.gdch.gke.io/target-namespace:  USER_PROJECT
  name: es-crt-EXTERNAL_SERVER_NAME
  namespace: USER_PROJECT
type: Opaque

ソース データベース移行ユーザーのパスワードを保存するシークレットを作成します。

apiVersion: v1
data:
  password: SOURCE_DB_USER_PASSWORD
kind: Secret
metadata:
  annotations:
    propagation.gdch.gke.io/target-namespace: USER_PROJECT
  name: es-pw-EXTERNAL_SERVER_NAME
  namespace: USER_PROJECT
type: Opaque

externalserver を作成します。

apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
metadata:
  name: EXTERNAL_SERVER_NAME
  namespace: USER_PROJECT
spec:
  host: SOURCE_DB_HOST
  port: 5432
  username: SOURCE_DB_USERNAME
  password:
    name: es-pw-EXTERNAL_SERVER_NAME
    namespace: USER_PROJECT
  certRef:
    name: es-crt-EXTERNAL_SERVER_NAME
    namespace: USER_PROJECT

移行を作成します。

apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: Migration
metadata:
  name: MIGRATION_NAME
  namespace: USER_PROJECT
spec:
  source:
    reference:
      apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
      kind: ExternalServer
      name: EXTERNAL_SERVER_NAME
  target:
    reference:
      apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
      kind: DBCluster
      name: DBCLUSTER_NAME
  control: MIGRATION_CONTROL

次の変数を置き換えます。

  • EXTERNAL_SERVER_NAME: ソース データベースを表す externalserver の名前。
  • USER_PROJECT: externalserver が作成されるユーザー プロジェクトの名前。
  • DBENGINE_NAME: データベース エンジンの名前。alloydbomni または postgresql のいずれかです。
  • SOURCE_DB_CA_CERT: ソース データベースの CA 証明書。
  • SOURCE_DB_USER_PASSWORD: ソース データベースの移行ユーザー パスワード。
  • SOURCE_DB_USERNAME: ソース データベースの移行ユーザー名。
  • SOURCE_DB_HOST: ソース データベースの移行ホストアドレス。
  • MIGRATION_NAME: 移行オペレーションの名前。
  • DBCLUSTER_NAME: 移行先のデータベース クラスタの名前。
  • MIGRATION_CONTROL: 移行オペレーションの制御。移行が作成されると、start または stop のいずれかになります。移行先データベース クラスタをプロモートするには、promote にする必要があります。