一 架构基础环境
主机mdw和备机mdwbak节点对等,都采用2+4架构。
1.1 主机列表
主机 | IP地址 | 备机 | IP地址 |
mdw | 192.168.0.20 | mdwbak | 192.168.0.30 |
smdw | 192.168.0.21 | smdwbak | 192.168.0.31 |
sdw1 | 192.168.0.22 | sdw1bak | 192.168.0.32 |
sdw2 | 192.168.0.23 | sdw2bak | 192.168.0.33 |
sdw3 | 192.168.0.24 | sdw3bak | 192.168.0.34 |
sdw4 | 192.168.0.25 | sdw4bak | 192.168.0.35 |
1.2 CPU及内存
所有节点都采用华为云服务器,CPU核心数为16核心,内存为32G,节点总数为12。主机备机都采用内部万兆网络。磁盘为单独挂载磁盘,采用高性能IO磁盘,实际最高读写性能为350M/s。
1.3 计算节点和镜像节点
计算节点primary数量为主备机都为24,镜像节点mirror数量为主备机都为24,总节点数量为48。
1.4 数据库版本
数据库采用greenplum官方发布的5.27.1开源版本。
二 环境磁盘IO和网络IO性能基准测试
2.1 主机mdw磁盘和网络IO性能测试
磁盘IO:
[gpadmin@mdw ~]$ gpcheckperf -f gpconfigs/gp_seg_hosts -d /data1 -d /data2 -r ds
/usr/local/greenplum-db/./bin/gpcheckperf -f gpconfigs/gp_seg_hosts -d /data1 -d /data2 -r ds
--------------------
-- DISK WRITE TEST
--------------------
--------------------
-- DISK READ TEST
--------------------
--------------------
-- STREAM TEST
--------------------
====================
== RESULT
====================
disk write avg time (sec): 426.09
disk write tot bytes: 268517507072
disk write tot bandwidth (MB/s): 601.00
disk write min bandwidth (MB/s): 150.07 [sdw3]
disk write max bandwidth (MB/s): 150.39 [sdw1]
disk read avg time (sec): 425.65
disk read tot bytes: 268517507072
disk read tot bandwidth (MB/s): 601.61
disk read min bandwidth (MB/s): 150.24 [sdw3]
disk read max bandwidth (MB/s): 150.52 [sdw4]
stream tot bandwidth (MB/s): 67542.73
stream min bandwidth (MB/s): 15459.31 [sdw1]
stream max bandwidth (MB/s): 18507.68 [sdw2]
主机四个主机节点磁盘采用通用性磁盘,性能为150M/s。
网络IO:
[gpadmin@mdw ~]$ gpcheckperf -f gpconfigs/gp_all_hosts -r N -d /tmp
/usr/local/greenplum-db/./bin/gpcheckperf -f gpconfigs/gp_all_hosts -r N -d /tmp
-------------------
-- NETPERF TEST
-------------------
====================
== RESULT
====================
Netperf bisection bandwidth test
mdw -> smdw = 896.900000
sdw1 -> sdw2 = 892.210000
sdw3 -> sdw4 = 879.870000
smdw -> mdw = 889.740000
sdw2 -> sdw1 = 781.620000
sdw4 -> sdw3 = 884.400000
Summary:
sum = 5224.74 MB/sec
min = 781.62 MB/sec
max = 896.90 MB/sec
avg = 870.79 MB/sec
median = 889.74 MB/sec
内部网络采用万兆网络,由于是云上虚拟机环境,速率仅有800M/s左右。
2.2 备机mdwbak磁盘及网络IO性能测试
磁盘IO:
[gpadmin@mdwbak ~]$ gpcheckperf -f gpconfigs/gp_seg_hosts -d /data1 -d /data2 -r ds
/usr/local/greenplum-db/./bin/gpcheckperf -f gpconfigs/gp_seg_hosts -d /data1 -d /data2 -r ds
--------------------
-- DISK WRITE TEST
--------------------
--------------------
-- DISK READ TEST
--------------------
--------------------
-- STREAM TEST
--------------------
====================
== RESULT
====================
disk write avg time (sec): 182.41
disk write tot bytes: 268517244928
disk write tot bandwidth (MB/s): 1403.82
disk write min bandwidth (MB/s): 350.64 [sdw2bak]
disk write max bandwidth (MB/s): 351.10 [sdw1bak]
disk read avg time (sec): 181.99
disk read tot bytes: 268517244928
disk read tot bandwidth (MB/s): 1407.10
disk read min bandwidth (MB/s): 351.35 [sdw2bak]
disk read max bandwidth (MB/s): 351.97 [sdw4bak]
stream tot bandwidth (MB/s): 69788.36
stream min bandwidth (MB/s): 16867.88 [sdw4bak]
stream max bandwidth (MB/s): 17669.53 [sdw3bak]
备机磁盘采用超高IO磁盘,磁盘IO为350M/s左右。
网络IO:
[gpadmin@mdwbak ~]$ gpcheckperf -f gpconfigs/gp_all_hosts -r N -d /tmp
/usr/local/greenplum-db/./bin/gpcheckperf -f gpconfigs/gp_all_hosts -r N -d /tmp
-------------------
-- NETPERF TEST
-------------------
====================
== RESULT
====================
Netperf bisection bandwidth test
mdwbak -> smdwbak = 788.660000
sdw1bak -> sdw2bak = 889.240000
sdw3bak -> sdw4bak = 790.290000
smdwbak -> mdwbak = 728.640000
sdw2bak -> sdw1bak = 793.870000
sdw4bak -> sdw3bak = 780.970000
Summary:
sum = 4771.67 MB/sec
min = 728.64 MB/sec
max = 889.24 MB/sec
avg = 795.28 MB/sec
median = 790.29 MB/sec
备机节点内部网络带宽传输速率和主机一样。
三 gpcopy同步数据
3.1 主机mdw和备机mdwbak互信
gpcopy 方式加载数据,可以启用并行进行加载,并行数量范围为1-64512,默认并行数量为4,启用并行根据服务器内存资源分配,初始分配以60个做并行数。
3.2 主备机所有节点配置ssh互信
将主备机所有节点ip和主机名映射放置于/etc/hosts文件中,(请使用root用户添加),如下:
[root@mdw opt]# tail -12 /etc/hosts
192.168.0.20 mdw
192.168.0.21 smdw
192.168.0.22 sdw1
192.168.0.23 sdw2
192.168.0.24 sdw3
192.168.0.25 sdw4
192.168.0.30 mdwbak
192.168.0.31 smdwbak
192.168.0.32 sdw1bak
192.168.0.33 sdw2bak
192.168.0.34 sdw3bak
192.168.0.35 sdw4bak
将主机mdw上的/etc/hosts文件拷贝到其他所有节点(使用root用户操作)
[root@mdw opt]# for ip in mdw smdw sdw1 sdw2 sdw3 sdw4 mdwbak smdwbak sdw1bak sdw2bak sdw3bak sdw4bak;do
scp /etc/hosts $ip:/etc;
done
配置所有主机名到主机mdw上gpadmin用户下的~/gpconfigs下的iplist文件中,如下:
[gpadmin@mdw ]$ cat ~/gpconfigs/iplist
mdw
smdw
sdw1
sdw2
sdw3
sdw4
mdwbak
smdwbak
sdw1bak
sdw2bak
sdw3bak
sdw4bak
使用gpssh-exkeys配置所有节点互信(使用gpadmin用户)
[gpadmin@mdw ]$ gpssh-exkeys -f ~/gpconfigs/iplist
3.3 主机mdw导出全局数据和数据库对象结构
[gpadmin@mdw ~]$ #创建备份目录
[gpadmin@mdw ~]$ mkdir -p /data/pg_dump
[gpadmin@mdw ~]$ #导入临时主机mdw和备机smdw环境变量
[gpadmin@mdw ~]$ export OLD_PORT=5432
[gpadmin@mdw ~]$ export OLD_HOST=mdw
[gpadmin@mdw ~]$ export DBNAME=testdb
[gpadmin@mdw ~]$ export OLD_PORT=5432
[gpadmin@mdw ~]$ export OLD_HOST=mdwbak
[gpadmin@mdw ~]$ export DBNAME=testdb
[gpadmin@mdw ~]$ cd /data/pg_dump/
[gpadmin@mdw pg_dump]$ pg_dumpall -p $OLD_PORT -h $OLD_HOST -s -g --resource-queues -f $DBNAME.global.ddl
[gpadmin@mdw pg_dump]$ pg_dump -p $OLD_PORT -h $OLD_HOST -s testdb -f $DBNAME.ddl
[gpadmin@mdw pg_dump]$ ls
testdb.ddl testdb.global.ddl
使用psql远程恢复DDL数据到备机mdwbak
[gpadmin@mdw ~]$ psql -h mdwbak -p 5432 -d postgres -f testdb_global.ddl
[gpadmin@mdw ~]$ psql -h mdwbak -p 5432 -d postgres -f testdb.ddl
3.4 使用 gpcopy 将主机mdw数据同步到备机 mdwbak
并行数量取决于内存资源限制,此环境服务器32G内存资源,使用60个并发传输数据,如果服务器资源大于64G,可以使用初始化100个并发做同步,如果出现无法分配内存资源,按照初始化并发数乘以80%的方式配置并发数。如,100*80%=80,如果还无法分配内存资源,那么以此迭代,即80*80%=64个。
[gpadmin@mdw ~]$ time gpcopy -d testdb -D testdb --dest-host mdwbak --dest-port 5432 --dest-user gpadmin --truncate --source-host mdw --source-port 5432 --source-user gpadmin --jobs 60
.....忽略部分.....
20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-[testdb] Finished copying database "Progress: (1/1) DBs, (2000/2000) tables done"
20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-------------------------------------------------
20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-Total elapsed time: 30.438132557s
20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-Total transferred data 722.7MB, transfer rate 250.1GB/h
20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-Copied 1 databases
20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:- Database testdb: successfully copied 2000 tables, skipped 0 tables, failed 0 tables
20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-Copy completed successfully
最终结果
使用2000张表做模拟,每张表数据为10w,同步时间大约为50s。
- 还没有人评论,欢迎说说您的想法!