前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >greenplum gptransfer命令使用

greenplum gptransfer命令使用

作者头像
小徐
发布2019-08-05 14:50:07
4890
发布2019-08-05 14:50:07
举报
文章被收录于专栏:GreenplumGreenplumGreenplum

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 河马coding 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 12.2 gptransfer命令使用
    • 12.2.1 gptransfer 介绍
      • 12.2.2 gptransfer 命令参数介绍
        • 12.2.3 同集群之间同步数据
          • 12.2.3.1 查看表的详细信息
          • 12.2.3.2 进行表数据同步
          • 12.2.3.3 查看硬件详细信息
        • 12.2.4 验证数据的准确性
          • 12.2.5 使用gptransfer总结
            • 12.2.6 不同集群之间同步数据
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档