暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

gpcopy数据传输方案

晟数学院 2021-04-20
1224

点击“蓝字”关注我们


一、架构基础环境


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


1.1 主机列表


主机
IP地址
备机
IP地址
mdw
192.168.0.20
mdwbak
192.168.0.30
smdw
192.168.0.21smdwbak
192.168.0.31
sdw1
192.168.0.22sdw1bak192.168.0.32
sdw2192.168.0.23sdw2bak192.168.0.33
sdw3192.168.0.24sdw3bak192.168.0.34
sdw4192.168.0.25sdw4bak192.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。


                        推荐阅读

                        【晟数学院】最新职位推荐

                        2021-04-13

                        Greenplum数据同步方案

                        2021-04-16

                        文章转载自晟数学院,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论