greenplum gptransfer命令使用

目录

12.2 gptransfer命令使用

12.2.1 gptransfer 介绍

12.2.2 gptransfer 命令参数介绍

12.2.3 同集群之间同步数据

12.2.4 验证数据的准确性

12.2.5 使用gptransfer总结

12.2.6 不同集群之间同步数据


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]

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 -f source_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 即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒马coding

你的支持是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值