greenplum使用gpcopy数据传输方案

您所在的位置:网站首页 mdw数据库 greenplum使用gpcopy数据传输方案

greenplum使用gpcopy数据传输方案

2023-03-10 21:43| 来源: 网络整理| 查看: 265

更多精彩内容,请登录ke.sandata.com.cn一 架构基础环境

主机mdw和备机mdwbak节点对等,都采用2+4架构。

1.1 主机列表主机IP地址备机IP地址mdw192.168.0.20mdwbak192.168.0.30smdw192.168.0.21smdwbak192.168.0.31sdw1192.168.0.22sdw1bak192.168.0.32sdw2192.168.0.23sdw2bak192.168.0.33sdw3192.168.0.24sdw3bak192.168.0.34sdw4192.168.0.25sdw4bak192.168.0.351.2 CPU及内存

所有节点都采用华为云服务器,CPU核心数为16核心,内存为32G,节点总数为12。主机备机都采用内部万兆网络。磁盘为单独挂载磁盘,采用高性能IO磁盘,实际最高读写性能为350M/s。

1.3 计算节点和镜像节点

计算节点primary数量为主备机都为24,镜像节点mirror数量为主备机都为24,总节点数量为48。

1.4 数据库版本

数据库采用greenplum官方发布的5.27.1开源版本。

greenplum使用gpcopy数据传输方案—PostgreSQL数据库技术文章—晟数_SQL

二 环境磁盘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

备机节点内部网络带宽传输速率和主机一样。

greenplum使用gpcopy数据传输方案—PostgreSQL数据库技术文章—晟数_晟数学院_02

三 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;doscp /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

greenplum使用gpcopy数据传输方案—PostgreSQL数据库技术文章—晟数_晟数学院_03

最终结果

使用2000张表做模拟,每张表数据为10w,同步时间大约为50s。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3