
点击“蓝字”关注我们
一、架构基础环境
主机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.09disk write tot bytes: 268517507072disk write tot bandwidth (MB/s): 601.00disk write min bandwidth (MB/s): 150.07 [sdw3]disk write max bandwidth (MB/s): 150.39 [sdw1]disk read avg time (sec): 425.65disk read tot bytes: 268517507072disk read tot bandwidth (MB/s): 601.61disk read min bandwidth (MB/s): 150.24 [sdw3]disk read max bandwidth (MB/s): 150.52 [sdw4]stream tot bandwidth (MB/s): 67542.73stream 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 testmdw -> smdw = 896.900000sdw1 -> sdw2 = 892.210000sdw3 -> sdw4 = 879.870000smdw -> mdw = 889.740000sdw2 -> sdw1 = 781.620000sdw4 -> sdw3 = 884.400000Summary:sum = 5224.74 MB/secmin = 781.62 MB/secmax = 896.90 MB/secavg = 870.79 MB/secmedian = 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.41disk write tot bytes: 268517244928disk write tot bandwidth (MB/s): 1403.82disk write min bandwidth (MB/s): 350.64 [sdw2bak]disk write max bandwidth (MB/s): 351.10 [sdw1bak]disk read avg time (sec): 181.99disk read tot bytes: 268517244928disk read tot bandwidth (MB/s): 1407.10disk read min bandwidth (MB/s): 351.35 [sdw2bak]disk read max bandwidth (MB/s): 351.97 [sdw4bak]stream tot bandwidth (MB/s): 69788.36stream 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 testmdwbak -> smdwbak = 788.660000sdw1bak -> sdw2bak = 889.240000sdw3bak -> sdw4bak = 790.290000smdwbak -> mdwbak = 728.640000sdw2bak -> sdw1bak = 793.870000sdw4bak -> sdw3bak = 780.970000Summary:sum = 4771.67 MB/secmin = 728.64 MB/secmax = 889.24 MB/secavg = 795.28 MB/secmedian = 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/hosts192.168.0.20 mdw192.168.0.21 smdw192.168.0.22 sdw1192.168.0.23 sdw2192.168.0.24 sdw3192.168.0.25 sdw4192.168.0.30 mdwbak192.168.0.31 smdwbak192.168.0.32 sdw1bak192.168.0.33 sdw2bak192.168.0.34 sdw3bak192.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;doscp /etc/hosts $ip:/etc;done
配置所有主机名到主机mdw上gpadmin用户下~/gpconfigs下的iplist文件中,如下:
[gpadmin@mdw ]$ cat ~/gpconfigs/iplistmdwsmdwsdw1sdw2sdw3sdw4mdwbaksmdwbaksdw1baksdw2baksdw3baksdw4bak
使用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]$ lstestdb.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.438132557s20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-Total transferred data 722.7MB, transfer rate 250.1GB/h20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-Copied 1 databases20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:- Database testdb: successfully copied 2000 tables, skipped 0 tables, failed 0 tables20210411:03:37:58 gpcopy:gpadmin:mdw:029561-[INFO]:-Copy completed successfully
最终结果
使用2000张表做模拟,每张表数据为10w,同步时间大约为50s。
推荐阅读

2021-04-13

2021-04-16





