专栏首页Greenplumgreenplum gptransfer命令使用
原创

greenplum gptransfer命令使用

12.2 gptransfer命令使用

12.2.1 gptransfer 介绍

详细请查看官网介绍:
https://gpdb.docs.pivotal.io/510/utility_guide/admin_utilities/gptransfer.html
或查看中文文档:
https://gp-docs-cn.github.io/docs/admin_guide/managing/gptransfer.html

12.2.2 gptransfer 命令参数介绍

gptransfer参数详细介绍请查看:
https://blog.csdn.net/xfg0218/article/details/90233815
$ gptransfer --help
gptransfer
   { --full |
   { [-d <database1> [ -d <database2> ... ]] |
   [-t <db.schema.table> [ -t <db1.schema1.table1> ... ]] |
   [-f <table-file> [--partition-transfer | --partition-transfer-non-partition-target]]
   [-T <db.schema.table> [ -T <db1.schema1.table1> ... ]]
   [-F <table-file> ] } }
   [--skip-existing | --truncate | --drop]
   [--analyze] [--validate=<type> ] [-x] [--dry-run]
   [--schema-only ]
   [--no-final-count]
   [--source-host=<source_host> [--source-port=<source_port>]
   [--source-user=<source_user>] ]
   [--base-port=<base_gpfdist_port>]
   [--dest-host=<dest_host> --source-map-file=<host_map_file>
   [--dest-port=<dest_port>] [--dest-user=<dest_user>] ]
   [--dest-database=<dest_database_name>]
   [--batch-size=<batch_size>] [--sub-batch-size=<sub_batch_size>]
   [--timeout <seconds>]
   [--max-line-length=<length>]
   [--work-base-dir=<work_dir>] [-l <log_dir>]
   [--delimiter=<delim> ]
   [--format=[CSV|TEXT] ]
   [--quote=<character> ]
   [-v | --verbose]
   [-q | --quiet]
   [--gpfdist-verbose]
   [--gpfdist-very-verbose]
   [-a]

1、为了最快的传输率,使用 gptransfer 传输数据到尺寸相同或者更大的目标数据库。
2、避免使用--full 或--schema-only 选项。而是使用不同的方法将模式复制到目标数据库中,然后传输表数据。
3、在传输表之前删除索引并且在传输完成后重建它们。
4、使用 SQL 的 COPY 命令传输较小的表到目标数据库。
5、使用 gptransfer 批量传输较大的表。
6、在执行生产迁移之前,先测试运行 gptransfer。用--batch-size 和--sub-batch-size 选项进行实验以得到最大并行性。为迭代运行 gptransfer 确定合适的表批次。
7、只使用完全限定的表名称。表名中的点号(.)、空格、引号(')和双引号(")都可能造成问题。
8、如果使用--validation 选项在传输后验证数据,确定也使用-x 选项在源表上放置排他锁。
9、确保在目标数据库上创建每一个角色、函数和资源队列。当使用 gptransfer -t 选项时,这些对象不会被会传输。

12.2.3 同集群之间同步数据

12.2.3.1 查看表的详细信息

查看表的大小
select pg_size_pretty(pg_relation_size('dim.xiaoxu_test1'));
-- 27 GB
查看表的行数
select count(*) from dim.xiaoxu_test1;
-- 182683056

12.2.3.2 进行表数据同步

查看source_host_map_file文件的配置
$ cat source_host_map_file
gpdev152,192.168.***.**
gpdev153,192.168.***.**
gpdev154,192.168.***.**
gpdev155,192.168.***.**
查看source_tb_list 文件的配置,如果是多个表请一行一行的追加
$ cat source_tb_list
test.dim.test1
test : 数据库的名字
dim:schema的名字
test1:表的名字
$ gptransfer --source-host=192.168.***.** --source-port=5432 --source-user=gpadmin -fsource_tb_list  --source-map-file=source_host_map_file -a --dest-host=192.168.***.** --dest-port=5432 --dest-database=stagging --drop
20190515:15:21:04:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Starting gptransfer with args: --source-host=192.168.***.** --source-port=5432 --source-user=gpadmin -t test.dim.test1 --source-map-file=source_host_map_file -a --dest-host=192.168.***.** --dest-port=5432 --dest-database=stagging --drop
20190515:15:21:04:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Validating options...
20190515:15:21:04:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Retrieving configuration of source Greenplum Database...
20190515:15:21:05:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Retrieving configuration of destination Greenplum Database...
20190515:15:21:06:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Retrieving source tables...
20190515:15:21:06:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Checking for gptransfer schemas...
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Retrieving list of destination tables...
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Reading source host map file...
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Building list of source tables to transfer...
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Number of tables to transfer: 1
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-gptransfer will use "fast" mode for transfer.
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Validating source host map...
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Validating transfer table set...
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Using batch size of 2
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Using sub-batch size of 24
20190515:15:21:07:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Creating work directory '/home/gpadmin/gptransfer_143245'
20190515:15:21:08:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Creating schema dim in database stagging...
20190515:15:21:09:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Starting transfer of test.dim.test1 to stagging.dim.test1...
20190515:15:21:09:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Creating target table stagging.dim.test1...
20190515:15:21:09:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Retrieving schema for table test.dim.test1...
20190515:15:21:12:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Transfering data test.dim.test1 -> stagging.dim.test1...
20190515:15:30:00:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Finished transferring table test.dim.test1, remaining 0 of 1 tables
20190515:15:30:00:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Running final table row count validation on destination tables...
20190515:15:30:09:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Validation of stagging.dim.test1 successful
20190515:15:30:09:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Removing work directories...
20190515:15:30:10:143245 gptransfer:gpdev152:gpadmin-[INFO]:-Finished.
在以上的日志可以看出执行的顺序是
1、先校验参数的正确性
2、检验数据源与目标源的数据库配置
3、校验源数据库中的表
4、检查gptransfer是否存在,如果存在回报gptransfer schema already exists on the source system 警告,在源数据库的schema手动删除掉即可
5、检验源数据库集群映射文件
6、把原始文件加载到转换器
7、统计加载的数据源文件
8、在本地磁盘创建转换目录
9、在目标数据库中创建schema
10、开启数据库员表到目标表的任务
11、创建目标表
12、开始到数据到目标表中
13、统计导到目标表的详细信息
任务是从20190515:15:21:04到20190515:15:30:10用时大概9分钟,大概27G / 9m ≈ 3G/m
大约51.2m/s,速度还可以

12.2.3.3 查看硬件详细信息

查看master节点的详细信息

查看master节点的cpu使用率

查看数据节点一的网卡信息

查看数据节点一的cpu使用率

12.2.4 验证数据的准确性

查看表的大小
select pg_size_pretty(pg_relation_size('dim.xiaoxu_test1'));
-- 27 GB
查看表的行数
select count(*) from dim.xiaoxu_test1;
-- 182683056
在以上可以看出数据都准确无误

12.2.5 使用gptransfer总结

在执行命令的服务器上执行ps -ef|grep gptransfer 会看到以下日志信息,表示在机器上启动gpfdist服务,供外表查询数据提供服务
$ ps -ef|grep gptransfer
gpadmin  143245  98695  2 15:21 pts/1    00:00:00 python /usr/local/greenplum-db/./bin/gptransfer --source-host=192.168.***.** --source-port=5432 --source-user=gpadmin -t test.dim.test1 --source-map-file=source_host_map_file -a --dest-host=192.168.***.** --dest-port=5432 --dest-database=stagging --drop
gpadmin  144007      1 13 15:21 ?        00:00:01 gpfdist -d /home/gpadmin/gptransfer_143245/test.dim.test1 -p 8000 -P 9000 -m 10485760 -t 300
gpadmin  144039      1 12 15:21 ?        00:00:01 gpfdist -d /home/gpadmin/gptransfer_143245/test.dim.test1 -p 8000 -P 9000 -m 10485760 -t 300
gpadmin  144048      1 13 15:21 ?        00:00:01 gpfdist -d /home/gpadmin/gptransfer_143245/test.dim.test1 -p 8000 -P 9000 -m 10485760 -t 300
gpadmin  144077      1 13 15:21 ?        00:00:01 gpfdist -d /home/gpadmin/gptransfer_143245/test.dim.test1 -p 8000 -P 9000 -m 10485760 -t 300
gpadmin  144079      1 13 15:21 ?        00:00:01 gpfdist -d /home/gpadmin/gptransfer_143245/test.dim.test1 -p 8000 -P 9000 -m 10485760 -t 300
gpadmin  144097      1 12 15:21 ?        00:00:01 gpfdist -d /home/gpadmin/gptransfer_143245/test.dim.test1 -p 8000 -P 9000 -m 10485760 -t 300
gpadmin  144118 143610  0 15:21 ?        00:00:00 sh -c GP_MASTER_HOST='192.168.***.**' && export GP_MASTER_HOST && GP_MASTER_PORT='5432' && export GP_MASTER_PORT && GP_SEG_PG_CONF='/data/gpsegment/p6/gpseg5/postgresql.conf' && export GP_SEG_PG_CONF && GP_SEG_DATADIR='/data/gpsegment/p6/gpseg5' && export GP_SEG_DATADIR && GP_DATABASE='test' && export GP_DATABASE && GP_USER='gpadmin' && export GP_USER && GP_DATE='20190515' && export GP_DATE && GP_TIME='152112' && export GP_TIME && GP_XID='1556272948-0002059298' && export GP_XID && GP_CID='2' && export GP_CID && GP_SN='0' && export GP_SN && GP_SEGMENT_ID='5' && export GP_SEGMENT_ID && GP_SEG_PORT='40005' && export GP_SEG_PORT && GP_SESSION_ID='30883' && export GP_SESSION_ID && GP_SEGMENT_COUNT='24' && export GP_SEGMENT_COUNT && GP_HADOOP_CONN_JARDIR='lib//hadoop' && export GP_HADOOP_CONN_JARDIR && GP_HADOOP_CONN_VERSION='' && export GP_HADOOP_CONN_VERSION && cat > /home/gpadmin/gptransfer_143245/test.dim.test1/test.dim.test1.pipe.$GP_SEGMENT_ID
************************
在同步的schema的下会创建一个gptransfer的schema,但不会存放数据

如果在执行的过程中kill掉进程请先在目标的schema下删除gptransfer否则回报以下的错误
***************
20190515:10:42:22:106113 gptransfer:gpdev152:gpadmin-[WARNING]:-The gptransfer schema already exists on the source system.
20190515:10:42:22:106113 gptransfer:gpdev152:gpadmin-[WARNING]:-This is likely due to a previous run on gptransfer
20190515:10:42:22:106113 gptransfer:gpdev152:gpadmin-[WARNING]:-being forcefully terminated and not properly cleaned up.
20190515:10:42:22:106113 gptransfer:gpdev152:gpadmin-[WARNING]:-Removing existing gptransfer schema on source system.

12.2.6 不同集群之间同步数据

gptransfer --source-host=192.168.***.** --source-port=5432 --source-user=gpadmin -f source_tb_list  --source-map-file=source_host_map_file -a --dest-host=192.168.***.** --dest-port=5432 --dest-database=stagging --truncate
只需要修改: --source-host 与--source-map-file 即可

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL之父与企鹅的故事

    近日,MySQL 之父、MariaDB 公司创始人兼 CTO Michael Widenius(又名Monty)、MariaDB 基金会主席 Kaj 来到中国...

    腾讯云数据库 TencentDB
  • 免费报名 | 腾讯云自研数据库CynosDB交流会

    All in 云+时代,数据库的高可用性、按需付费、按需扩展等属性解放了大批开发者。腾讯发布的自研数据库CynosDB作为国内首款同时兼容MySQL和PG的云原...

    腾讯技术工程官方号
  • oracle数据同步到Greenplum的shell脚本

    此脚本在运行时会先把oracle数据按照指定的分隔符下载到磁盘的目录下,再用替换脚本替换需要的分隔符和ascii字符,具体的替换方法请查看fileAsciiRe...

    小徐
  • 邀您参加 | 腾讯云自研数据库CynosDB技术交流会

    点击上方蓝字关注每天学习数据库 All in 云+时代,数据库的高可用性、按需付费、按需扩展等属性解放了大批开发者。腾讯发布的自研数据库CynosDB作为国内...

    腾讯云数据库 TencentDB
  • 0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决

    通过上篇文章《0573-5.16.1-如何将CDSW从1.4.2升级到1.5》升级CDSW服务后,启动CDSW服务在Cloudera Manager上显示服务启...

    Fayson
  • 邀您参加 | 腾讯云自研数据库CynosDB技术交流会

    点击上方蓝字关注每天学习数据库 All in 云+时代,数据库的高可用性、按需付费、按需扩展等属性解放了大批开发者。腾讯发布的自研数据库CynosDB作为国内...

    腾讯数据库技术
  • MySQL之父与企鹅的故事

    近日,MySQL 之父、MariaDB 公司创始人兼 CTO Michael Widenius(又名Monty)、MariaDB 基金会主席 Kaj 来到中国,...

    腾讯技术工程官方号
  • 2019年2月数据库流行度排行: PostgreSQL攀至历史新高

    2019年2月,DB-Engines 数据库流行度排行出炉,在本月排行上,主要数据库都呈现出小幅增长或收窄跌幅的情形。

    数据和云
  • Oracle和PG的count

    曾经测试过Oracle 11g下count(*)、count(1)、count(主键列)和count(包含空值的列)这几种操作,究竟有何区别,结论如下,

    bisal
  • 微软官宣收购PostgreSQL初创公司Citus Data

    上图从左到右: Sudhakar Sannakkayala, 微软开源关系数据库general manager, Ozgun Erdogan, Citus Da...

    用户1564362

扫码关注云+社区

领取腾讯云代金券