greenplum迁移(VirtualBox)

版本信息

  • greenplum:5.14.0
  • vagrant box: centos/7:1804.02
  • 集群一:
    • gpstage1(master)
    • gpstage2
    • gpstage3
  • 集群二:
    • gppro1(master)
    • gppro2
    • gppro3
1
2
目标:集群一是数据源,也就是创建了数据库的greenplum集群,现在的目标是把集群一上的greenplum完全的迁移到集群二上
注意点:保持集群二和集群一的greenplum配置信息一致。

修改数据库网络配置

postgres默认会阻止其它网络对其的访问和操作,所以需要添加信任网络

集群一上添加信任网络方法

1
2
3
4
5
6
进入postgres安装目录,也就是greenplum安装时,master节点data所在的位置

$ vi pg_hba.conf

添加
host all gpadmin ipv4address/32 trust

参数说明

  • ipv4address: 目标数据库ip地址(在集群一中配置信任集群二网络,让集群二可以访问到集群一,从而实现数据迁移操作)
  • /32 : 完全匹配地址
    • 例如:
    • 172.16.1.2/32 : 只有172.16.1.2是受信任的
    • 172.16.1.2/24 : 受信任的是172.16.1.1 ~ 172.16.1.255
    • 计算方式是 8位.8位.8位.8位/相加得出结果

迁移

官方文档
https://gpdb.docs.pivotal.io/590/utility_guide/admin_utilities/gpcopy.html

1
nohup gpcopy --source-host gpstage1 --source-port 5432 --source-user gpadmin --dest-host gppro1 --dest-port 5432 --dest-user gpadmin --full --truncate --no-distribution-check --jobs 1 --validate count > gpcopy.20181219.1008.log &

简单说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# nohup: 不间断运行命令,即使关闭窗口也没问题
# gpcopy: 迁移指令,高版本
# --source-host: 源数据库hostname(集群一的master节点)
# --source-port: 源数据库端口号
# --source-user: 源数据库用户名(greenplum安装时指定的用户)
# --dest-host: 迁移目标数据库的hostname(集群二的master节点)
# --dest-port: 目标数据库端口号
# --dest-user: 目标数据库用户名,与集群一一致
# --full: 指定迁移greenplum里所有数据库对象(其它类似迁移某个表等操作请查阅官方文档)
# 如果遇到目标数据库中已经存在某个相同的表,可执行一下操作
# --skip-existing: 跳过
# --truncate: 清空表数据
# --drop: 删除表并重新创建
# --append: 在原来的基础上添加数据
# --no-distribution-check: 禁用表数据分布检查
# --jobs: 指定gpcopy并行进程数,默认为4,产生 2 * n + 1 个数据库连接(默认是9个)
# --validate: copy之后对数据进行验证,验证类型:
1、count: 比较源数据库和目标数据库的行数
2、md5xor: 所有行MD5验证,然后对MD5执行XOR
# > ... &: nohup命令 ... 打印日志的文件名; & 后台运行

使用tail指令查看gpcopy进程

1
$ tail -f gpcopy.20181219.1008.log