跳转到主要内容

文档 v1.5.1 版本已不再积极维护,你当前浏览的是一份归档快照。 最新文档请参阅 最新版本

数据库迁移教程

从 Pigsty v1.5.1 标签恢复的历史文档。

Pigsty内置了一个 数据库在线迁移的辅助脚本:pgsql-migration.yml ,提供了一个开箱即用的基于逻辑复制的不停机数据库迁移方案。

填入源集群与宿集群相关信息,该剧本即会自动创建出迁移中所需的脚本,在数据库迁移时只需要依次执行即可,包括:

activate                          # 激活迁移上下文,注册环境变量
check-replica-identity            # 准备阶段:检查源集群所有表是否都具有复制身份(主键,或非空唯一候选键)
check-replica-identity-solution   # 准备阶段:针对没有合理复制身份表,生成修复SQL语句
check-special-object              # 准备阶段:检查物化视图,复合类型等特殊对象
compare                           # 比较:对源宿集群中的表进行快速比较(行数计算)
copy-schema                       # 存量迁移:将源集群中的模式复制到宿集群中(可以幂等执行)
create-pub                        # 存量迁移:在源集群中创建发布
create-sub                        # 存量迁移:在宿集群中创建订阅,建立源宿集群之间的逻辑复制
progress                          # 存量迁移:打印逻辑复制的进度
copy-seq                          # 存量/增量迁移:将源集群中的序列号复制到宿集群中(可以幂等执行,在切换时需要再次执行)
next-seq                          # 切换时刻:将宿集群的所有序列号紧急步进1000,以避免主键冲突。
remove-sub                        # 移除宿集群中的逻辑订阅

准备工作

准备源宿集群

现在假设我们希望迁移沙箱中的pg-meta集群(包含Pigsty元数据库与pgbench测试表)至pg-test集群。

pg-meta-1	10.10.10.10  --> pg-test-1	10.10.10.11 (10.10.10.12,10.10.10.13)

首先,新创建好空的目标集群pg-test,然后编辑pgsql-migration.yml 中的变量清单部分,填入相关信息(原宿集群主库的连接信息)

#--------------------------------------------------------------#
#                   MIGRATION CONTEXT                          #
#--------------------------------------------------------------#

# src cluster (the old cluster)
src_cls: pg-meta                       # src cluster name
src_db: meta                           # src database name
src_ip: 10.10.10.10                    # ip address of src cluster primary
src_list: [ ]                          # ip address list of src cluster members (non-primary)

#--------------------------------------------------------------#
# dst cluster (the new cluster)
dst_cls: pg-test                       # dst cluster name
dst_db: test                           # dst database name
dst_ip: 10.10.10.11                    # dst cluster leader ip addressh
dst_list: [ 10.10.10.12, 10.10.10.13 ] # dst cluster members (non-primary)

# dst cluster access information
dst_dns: pg-test                       # dst cluster dns records
dst_vip: 10.10.10.3                    # dst cluster vip records

#--------------------------------------------------------------#
# credential (assume .pgpass viable)
pg_admin_username: dbuser_dba          # superuser @ both side
pg_replicatoin_username: replicator    # repl user @ src to be used
migration_context_dir: ~/migration     # this dir will be created
#--------------------------------------------------------------#

执行pgsql-migration.yml,该脚本默认会在元节点上创建 ~/migration/pg-meta.meta 目录,包含有迁移使用的资源与脚本。

迁移模板

公告

准备工作

存量迁移

切换时刻