管理高级迁移

高级迁移是一种解决方案,可用于以较短的停机时间迁移大型数据库的数据。此功能仅适用于 AlloyDB Omni 和 PostgreSQL。

具有 Project DB Admin 角色的用户必须执行以下步骤。您可以使用 GDC 控制台或 Distributed Cloud CLI 来管理迁移:

控制台

  1. 在主菜单中,选择数据库服务
  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,迁移的数据库引擎类型。支持的值为:postgresqlalloydbomni
    • 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. 列出现有连接配置文件:

    gdcloud database connection-profiles list DB_ENGINE_TYPE
    
  7. 列出现有迁移:

    gdcloud database migrations list --destination DESTINATION_DBCLUSTER
    

API

对于 AlloyDB 或 PostgreSQL 源数据库:

创建 Secret 以存储源数据库 CA 证书:

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

创建一个 Secret 来存储源数据库迁移用户密码:

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:表示源数据库的外部服务器的名称。
  • USER_PROJECT:要在其中创建外部服务器的用户项目的名称。
  • DBENGINE_NAME:数据库引擎的名称。这是 alloydbomnipostgresql 中的一个。
  • SOURCE_DB_CA_CERT:源数据库的 CA 证书。
  • SOURCE_DB_USER_PASSWORD:源数据库的迁移用户密码。
  • SOURCE_DB_USERNAME:源数据库的迁移用户名。
  • SOURCE_DB_HOST:源数据库的迁移宿主地址。
  • MIGRATION_NAME:迁移操作的名称。
  • DBCLUSTER_NAME:迁移目标数据库集群的名称。
  • MIGRATION_CONTROL:迁移操作的控制变量。创建迁移时,它应该是 startstop。应为 promote,以提升迁移目标数据库集群。