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

greenplum gptransfer命令使用

原创
作者头像
小徐
修改2019-11-21 14:51:12
1K0
修改2019-11-21 14:51:12
举报
文章被收录于专栏:GreenplumGreenplum

12.2 gptransfer命令使用

12.2.1 gptransfer 介绍

代码语言:javascript
复制
详细请查看官网介绍:
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 命令参数介绍

代码语言:javascript
复制
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]

代码语言:javascript
复制
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 查看表的详细信息
代码语言:javascript
复制
查看表的大小
select pg_size_pretty(pg_relation_size('dim.xiaoxu_test1'));
-- 27 GB
查看表的行数
select count(*) from dim.xiaoxu_test1;
-- 182683056
12.2.3.2 进行表数据同步
代码语言:javascript
复制
查看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 验证数据的准确性

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

12.2.5 使用gptransfer总结

代码语言:javascript
复制
在执行命令的服务器上执行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,但不会存放数据

代码语言:javascript
复制
如果在执行的过程中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 不同集群之间同步数据

代码语言:javascript
复制
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 即可

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

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

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

如有侵权,请联系 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 归档