高级迁移是一种解决方案,可用于以较短的停机时间迁移大型数据库的数据。此功能仅适用于 AlloyDB Omni 和 PostgreSQL。
具有 Project DB Admin 角色的用户必须执行以下步骤。您可以使用 GDC 控制台或 Distributed Cloud CLI 来管理迁移:
控制台
- 在主菜单中,选择数据库服务。
- 点击创建迁移。
- 在开始对话框中,查看来源和连接的要求。
- 在指定源数据库对话框中,指定源数据库主机名或 IP 地址、用户名、密码、加密类型和证书。
- 在配置集群对话框中,指定目标数据库集群的集群 ID、密码、数据库版本、CPU、内存和存储容量。请确保您选择的内存足以容纳您的最大表。
- 点击创建。创建迁移和目标数据库集群可能需要几分钟的时间。
当集群准备就绪时,状态会从
Reconciling
更改为Ready
。成功设置迁移后,迁移状态会变为Unsynced
。您可以使用以下选项来管理迁移:- 开始:开始迁移,并将迁移状态更改为
Running
。 - 停止:此操作会停止迁移,并将迁移状态更改为
Stopped
。 - 提升:此操作会将目标数据库集群提升为独立数据库。
- 删除:此操作会删除为此迁移创建的迁移和目标数据库集群。
- 开始:开始迁移,并将迁移状态更改为
定期轮换源数据库复制用户密码,具体步骤如下:
- 前往源数据库,然后点击修改图标 修改。
- 进行更改以轮换复制用户密码。
- 点击保存以应用更改。
应用更改后,迁移后端会使用新密码。
gdcloud
创建迁移:
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
,新集群的管理员用户密码。
开始迁移:
gdcloud database migrations start MIGRATION_NAME
停止迁移:
gdcloud database migrations stop MIGRATION_NAME
提升迁移速度:
gdcloud database migrations promote MIGRATION_NAME
列出现有连接配置文件:
gdcloud database connection-profiles list DB_ENGINE_TYPE
列出现有迁移:
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
:数据库引擎的名称。这是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
,以提升迁移目标数据库集群。