如何通过GCP数据库迁移服务迁移Cloud SQL PostgreSQL指定数据库
仅迁移Cloud SQL PostgreSQL单个数据库的解决方案
GCP Database Migration Service本身不支持直接选择单个数据库迁移,默认会同步源实例除template0、template1外的所有库。要实现只迁特定库,你可以试试这几种方法:
方法1:清理源实例后再迁移
这种方式适合可以临时修改源实例的场景:
- 先给源Cloud SQL实例做全量备份,防止误操作丢数据
- 登录源实例,删除所有不需要迁移的数据库(别碰
template0和template1) - 用Database Migration Service正常执行迁移,此时只会同步剩下的目标数据库
- 迁移完成后,从之前的备份恢复源实例里被删除的其他数据库
方法2:用pg_dump/pg_restore手动迁移(推荐)
这种方式不需要改动源实例,灵活性更高:
- 在本地机器或GCE实例上,用
pg_dump导出目标数据库:pg_dump -h <源实例公网IP> -U <数据库用户名> -d <要迁移的数据库名> -f target_db_dump.sql - 把导出的
target_db_dump.sql上传到Cloud Storage(本地可以用gsutil cp target_db_dump.sql gs://你的存储桶路径/) - 在目标Cloud SQL实例上,通过命令行或控制台导入备份文件:
gcloud sql import sql <目标实例名称> gs://你的存储桶路径/target_db_dump.sql --database=<目标数据库名> --user=<数据库用户名> - 如果需要后续增量同步,可以启用PostgreSQL的逻辑复制:在源库创建针对目标数据库的发布,目标库创建订阅,实现实时同步
方法3:全量迁移后清理目标实例
如果可以接受先同步所有库再清理:
- 先用Database Migration Service完成全量迁移
- 登录目标Cloud SQL实例,删除不需要的数据库:
DROP DATABASE <多余的数据库名>; - 要是有增量同步任务,先暂停DMS任务,删完再重启,避免后续同步又重建这些多余的库
内容的提问来源于stack exchange,提问作者marian.vladoi
相关产品推荐
相关产品推荐

