大型 PostgreSQL 数据库迁移
大型 PostgreSQL 数据库迁移,可以不间断源数据库的业务,平滑的迁移到 PolonDB 集群中。
注意 |
---|
数据迁移期间,需暂停源数据库与 PolonDB 数据库,请在业务低峰期进行数据迁移,避免数据丢失。 |
约束限制
-
仅针对 PostgreSQL 10 及以上版本,或 PostgreSQL 9.4 以上版本,并安装 logical_decode 插件的数据库。
-
在迁移过程中源数据库不支持 DDL 操作,仅支持 DML 和 TRUNCATE 操作。
-
建议需要迁移的表拥有主键。
-
无主键的表在源数据中执行
alter table xx replica identity full
语句。
前提条件
操作步骤
-
在 PostgreSQL 源数据库,保存数据库结构。
$ pg_dump \ --format = plain \ --schema-only \ --file = schema.sql \ --schema = target_schema \ (可选) postgres:// user:password @ host_ip :5432 / db_name
-
在 PolonDB 集群,使用
psql
连接集群,并创建数据库结构。\ i schema.sql
-
在 PolonDB 集群,运行
create_distributed_table
和create_reference_table
语句,创建数据库对象。说明 若收到有关外键的错误,通常是由于操作顺序有误。可以先删除外键,再重新添加数据库对象。
-
在 PolonDB 集群获取
qingcloud_decoding.so
的动态库。注意 请提工单或联系技术支持获取动态库,技术支持将根据当前数据库环境,配备唯一标识的动态库供您使用。
-
在 PostgreSQL 源数据库,将动态库存储到 PostgreSQL 的 lib 目录中。
-
在 PostgreSQL 源数据库,设置源数据库参数,并重启数据库。
-- postgresql.conf wal_level=logical -- pg_hba.conf host all all 0.0.0.0/0 md5 host replication all 0.0.0.0/0 md5
-
在 AppPCenter 集群管理,启动 PostgreSQL 迁移。
-
登录管理控制台。
-
选择产品与服务 > 数据库与缓存 > 分布式数据库 PolonDB,进入集群管理页面。
-
点击目标集群 ID,进入集群详情页面。
-
在集群详情页,点击右上角更多操作。
-
展开下拉菜单,选择自定义服务 > 启动 PG 迁移。
-
根据页面提示,配置迁移信息。
参数 说明 角色
选择协调器。
需要同步的表
-
*
代表同步该库下所有的表。 -
public.*
代表同步 public 模式下所有的表。 -
public.aa, public.bb
代表同步这两个表。
源端数据库名
输入源端数据库名。
不需要同步的表
-
*
代表没有不需要同步的表。 -
public.*
代表不同步 public 模式下所有的表。 -
public.aa, public.bb
代表不同步这两个表。
源端数据库用户
用户需是超级用户或是拥有
replica
角色权限的用户。推荐使用超级用户。源端数据库用户密码
输入源端数据库用户密码。
源端数据库地址
输入源端数据库地址。
源端数据库端口
输入源端数据库端口。
此集群数据库名
迁移到 PolonDB 的数据库名。
-
-
确认配置信息无误后,点击确定,返回节点列表页面。
-
-
检验数据正确和完整性。
-
根据应用特征手动设置序列值。
-
测试应用,迁移完成,迁移应用,启动应用。
-
在 AppPCenter 集群管理,停止 PostgreSQL 迁移。
-
登录管理控制台。
-
选择产品与服务 > 数据库与缓存 > 分布式数据库 PolonDB,进入集群管理页面。
-
点击目标集群 ID,进入集群详情页面。
-
在集群详情页,点击右上角更多操作。
-
展开下拉菜单,选择自定义服务 > 停止 PG 迁移。
-
确认配置信息无误后,点击确定,返回节点列表页面。
-