GaussDB

举报
Frederic 发表于 2021/05/12 16:24:36 2021/05/12
【摘要】 Gauss DB A 容量调整

Gauss DB A 容量调整

扩容概述

扩容场景

安装完成后的GaussDB A集群能力无法满足业务需求,需要对MPPDB服务进行扩容。

  • 在现有集群规模上进行服务扩容,即在当前集群中安装更多的业务组件实例,提升服 务能力。
  • 节点扩容,然后在新添节点上添加业务组件实例。

综上,从操作上可将扩容场景划分成两类:

  • 扩容节点,即往集群中添加更多服务器。
  • 添加MPPDB服务实例。

何时进行服务扩容

随着业务量的增长,集群存储容量、计算能力或服务能力无法满足业务需求时,需要考虑对服务进行扩容。

扩容期间禁止的操作

扩容(重分布阶段)支持用户进行本地表的DROPTRUNCATETRUNCATE-PARTITION业务。重分布read-only模式下正在重分布的表不支持更新、插入和删除数据,insert模式下支持本地表的插入、删除、更新。重分布阶段不允许执行性能统计查询。

容量调整规划

扩容规划

扩容分析,确定扩容场景:

  • 安装新组件。
  • 现有集群中添加服务实例。
  • 添加节点后添加服务实例。

 

环境检查

检查服务状态

步骤 1登录FusionInsight Manager

步骤 2单击集群 > 待操作集群的名称 > 服务,查看“MPPDB”“KrbServer”“LdapServer”    的运行状态。

步骤 3请确保“MPPDB”“KrbServer”“LdapServer”运行状态为良好

 

检查告警

步骤 1登录FusionInsight Manager

步骤 2单击运维 > 告警 > 告警,查看是否存在“MPPDB”的相关告警。

步骤 3若存在,请参照故障处理步骤清除告警。

 

检查参数

扩容前,需要检查老集群的comm_max_datanode参数值(使用gsql连接CN执行show comm_max_datanode;查看)。

如果comm_max_datanode的值小于扩容后集群的DN数,请先使用如下命令设置comm_max_datanode参数:

例如老集群DN数为128,再新扩128DN,则应该在扩容前把comm_max_datanode参数设置为256

准备新节点

使用配置规划工具(LLD)生成配置文件

步骤 1打开LLD工具,启用宏:

步骤 2进入基础配置界面,选择产品类型“GaussDBA”,安装模式选择为集群扩容,认证   模式和原集群保持一致:

步骤 3选择用户名,如果集群安装时使用的是root用户,这里就要选择为“root”,如果集   群安装时使用的是非root用户,这里就要选择为“omm”

步骤 4输入扩容节点数量,如果需要手动修改实例部署,需要将是否自定义套餐修改为   “Yes”

步骤 5进入选择服务界面,选择服务,需要和原集群中安装的服务保持一致。

步骤 6进入“IP规划与进程部署界面,配置机架名称管理IP”业务IP”,如果扩容节   点的默认部署不满足规划,可以修改扩容节点的实例部署。

步骤 7进入节点信息界面,填写“CPU虚拟核数内存主机逻辑磁盘数量最小数   据盘容量主机名

步骤 8跳过浮动IP”界面。

步骤 9进入磁盘配置界面,对扩容节点数据盘数进行配置。

步骤 10跳过集群参数配置界面,扩容场景下,该界面填入扩容集群对应参数的配置值。

步骤 11进入实例参数配置界面,该界面配置时需要保证整个GaussDB A集群的CN个数    不超过10,如有特殊需求,请在SA指导下修改。

步骤 12进入生成配置文件界面,单击生成配置文件按钮,生成如下文件:扩容模板    expandTemplet.xml)、preinstall配置文件、precheck配置文件。

步骤 13使用“PuTTY”工具,以root用户登录主管理节点。

步骤 14执行以下命令,防止“PuTTY”超时退出。

TMOUT=0

步骤 15检查OMS上的安装包解压目录是否存在,如果该目录已经被删除,则需要重新下    SetupTool软件包,并上传到主OMS节点,并进行校验和解压操作。可参考 GaussDB A 8.0.0 产品文档》的配置软件包章节。

步骤 16检查扩容节点OS的编码格式是否符合要求。

使用“PuTTY”工具,以root用户登录任意节点。执行locale命令,查看OS的编码格式是否为“en_US.UTF-8”“POSIX”

l 是,执行步骤18

否,执行步骤17

步骤 17使用“PuTTY”工具,以root用户登录所有要扩容的节点,更改OS编码格式。以更改 “en_US.UTF-8”格式为例进行说明。

l RedHat 6.xCentOS 6.x系统下执行vi /etc/sysconfig/i18n命令,按“Insert”键开始编 辑。将“LANG”的值修改为“en_US.UTF-8”“SYSFONT”的值修改为“latarcyrheb-sun16” “Esc”键退出编辑,并输入:wq保存退出,重启操作系统后配置生效。

lRedHat 7.xCentOS 7.x、麒麟、EulerOS系统下执行vi  /etc/locale.conf命令,将 “LANG”的值修改为“en_US.UTF-8”,并保存退出,重启操作系统后配置生效。

lSUSE系统下执行vi /etc/sysconfig/language,将“RC_LANG”的值修改为“en_US.UTF-8” 并保存退出,重启操作系统后配置生效。

步骤 18是否使用omm用户进行扩容。

l 是,执行步骤19

l否,执行步骤21

步骤 19使用“PuTTY”工具,以root用户登录主管理节点。

步骤 20将主管理节点上的“/opt/ FusionInsight_SetupTool /preset”文件夹拷贝至所有要扩容 节点的“/opt”目录下并在这些节点上执行sh /opt/preset/preset.sh命令。

在集群内多个节点上执行同一命令或者存取文件,可以使用软件安装包中的脚本工具快速完成,详细操作请参考《GaussDB A 8.0.0 产品文档》软件安装 > 附录 > 常见问题 > 如何在集群内多个节点上执行命令或者存取文件章节。

步骤 21使用“WinSCP”工具,把步骤12生成的配置文件目录中的整个software目录拷贝到 OMS节点解压后软件中的目录“/opt/FusionInsight_SetupTool/”下。

----结束

对新节点做preinstall

步骤 1使用“WinSCP”工具,以root用户登录主管理节点。将操作系统镜像文件上传至主管 理节点目录下,例如“/opt”

步骤 2使用PuTTY工具,以root用户登录主管理节点(如使用omm用户安装集群,请使 omm用户登录),执行以下命令,防止“PuTTY”超时退出。

TMOUT=0

步骤 3执行以下命令进行挂载:

mount 虚拟光盘文件名 /media/ -o loop

例如Red Hat系统,假设虚拟光盘文件在“/opt”下,执行:mount /opt/rhel-server-6.4-x86_64-dvd.iso /media/ -o loop

步骤 4进入解压目录,例如“/opt/FusionInsight_SetupTool/preinstall”,检查配置规划工具生 成的preinstall.ini是否已上传到此目录。请确保“g_parted_conf”节点中要格式化的 分区中没有数据。

cd /opt/FusionInsight_SetupTool/preinstall

cat preinstall.ini

preinstall.ini(举例)

步骤 5(可选)开启core dump功能。

如扩容前集群已开启core dump功能,请执行此步骤。

1.打开“preinstall.ini”文件。

vi preinstall.ini

2.在配置文件增加两个参数g_core_dump=1g_core_dump_dir="/var/log/core"

3.“Esc”键退出编辑,并输入:wq保存退出。

步骤 6执行安装前配置命令。输入root用户的密码(如使用omm用户安装集群,请使用 omm用户登录),等待执行完毕。

cd /opt/FusionInsight_SetupTool/preinstall

./preinstall.sh

步骤 7“preinstall”过程结束后,默认会自动继续进行“precheck”过程。如下所示:

===========FusionInsight PreCheck is starting...===========   

[INFO] start checking each hosts.   

[INFO] localhost: start parsing the configuration file.   

[INFO] localhost: parse the configuration file success.   

...

步骤 8如下例所示,若执行结果没有“ERROR”提示,则检查通过。

==========Summary Output============   

Environment check success.

----结束

扩容前巡检

步骤 1获取FusionInsight Tool软件包。

用户可通过一下方法获取最新版本软件包,本文以6.5.2版本为例。

企业用户:使用Support账号登录http://support.huawei.com/enterprise/。选择技术支 ,搜素关键词“FusionInsight Tool Prober”

l 运营商用户:使用Support账号登录http://support.huawei.com/。选择产品软件,搜 素关键词“FusionInsight Tool Prober”

获取巡检服务安装包SysChecker_6.5.2.zip及巡检指导书。

步骤 2部署巡检工具。

  • 1.将巡检服务安装包上传至某个cn节点的/opt目录,并执行unzip SysChecker_6.5.2.zip 命令进行解压。
  • 2.准备节点的万兆网IP地址文件,保证各节点root密码一致。

准备一个名为allhostfile的文本文件,文件内容为集群所有数据节点和新节点的IP 表(一 行一个节点IP)。例如,

10.12.15.100

10.12.15.101

10.12.15.102

10.12.15.103

...

准备一个名为oldhostfile的文本文件,文件内容为原集群的所有数据节点的IP列表(一 行一个节点IP)。例如,

10.12.15.101

10.12.15.102

10.12.15.103

...

  • 3.登录该CN节点,将allhostfileoldhostfile文件上传到/tmp目录下,执行以下命令 (将Suto@123 替换为root密码):

chown -R omm:wheel /opt/SysChecker/SysCheck_C80/ClientScripts/17_MPPDB/Lib/

chmod +x -R /opt/SysChecker/SysCheck_C80/ClientScripts/17_MPPDB/Lib/

for i in `cat /tmp/allhostfile`; do python /opt/SysChecker/SysCheck_C80/ClientScripts/17_MPPDB/Lib/inspection/remoteExec.py "ssh -n -q root@$i \" hostname;rm -rf /tmp/test_check\"" 'Suto@123';done

for i in `cat /tmp/allhostfile`;do python /opt/SysChecker/SysCheck_C80/ClientScripts/17_MPPDB/Lib/inspection/remoteExec.py "ssh -n -q root@$i \" hostname;mkdir -p /tmp/test_check; chmod -R 777 /tmp/test_check/ \"" 'Suto@123' ;done

  • 4.分发巡检工具并修改文件权限。

cp -r /opt/SysChecker/SysCheck_C80/ClientScripts/17_MPPDB/Lib/* /tmp/test_check/

for i in `cat /tmp/allhostfile`;do python /opt/SysChecker/SysCheck_C80/ClientScripts/17_MPPDB/Lib/inspection/remoteExec.py "scp -r /tmp/test_check root@$i:/tmp/" 'Suto@123';done

for i in `cat /tmp/oldhostfile`;do python /opt/SysChecker/SysCheck_C80/ClientScripts/17_MPPDB/Lib/inspection/remoteExec.py "ssh -n -q root@$i \" hostname;chown -R omm:wheel /tmp/test_check" 'Suto@123';done

  • 5.执行命令进行巡检。

su - omm

cd /tmp/test_check/

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

进行扩容前新老节点检查,使用如下命令。每次执行命令的时候,都要指定一个新的 check.log文件,文件格式是xxx.log

./gs_check -e expand -U omm --hosts=/tmp/allhostfile -l ./check.log

进行扩容前需要进行网速检查,使用如下命令。每次执行命令的时候,都要指定一个新 check.log文件,文件格式是xxx.log

./gs_check -i CheckNetSpeed --hosts=/tmp/allhostfile -l ./check.log

进行扩容前需要数据倾斜检查。每次执行命令的时候,都要指定一个新的check.log 件,文件格式是xxx.log

./gs_check -i CheckTableSkew -l ./check.log

进行扩容前需要进行剩余容量检查。所有剩余可用空间均是最大单表大小的1.5倍以上。

./gs_check -i CheckBiggestTable -L -l ./check.log

步骤 3分析检查结果与信息收集。

/tmp/test_check/Check/inspection/output目录下找到本次检查结果的压缩包,从压缩 包中取出CheckResult*文件、CheckReport*.xlsx文件、collector文件夹进行分析。

步骤 4巡检不合格项修复。

在巡检指导书中检索检查项ID,按照巡检指导书中的修复建议进行修复。

----结束

扩容实施方法

1、关闭集群通信白名单

操作场景

离线升级或扩容在操作前需要用户先停止数据库相关业务,从而避免因数据库业务干扰而产生升级失败问题。

 

操作步骤

  • 步骤 1现场实施人员知会并确认用户已完成数据库业务停止操作。
  • 步骤 2PuTTYomm用户登录后台任一个安装有MPPDB实例的节点,执行如下命令注释用户白名单

 

以默认CN实例目录/srv/BigData/mppdb/data1/coordinator为示例,现场需根据实际情况进行调整。

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then cp -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf /srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment; fi "

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then sed -i '/^[^#].*sha256.*/s/\(.*\)/#@#@#\1/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then sed -i '/^[^#].*md5.*/s/\(.*\)/#@#@#\1/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "

  • 步骤 3如果存在Database Manager应用,则进入Database Manager应用主页,点击Database Manager主页小卡片右上角的停止监控,暂时关闭Database Manager监控功能。
  • 步骤 4PuTTYomm用户登录后台任一个安装有MPPDB实例的节点,关闭MPPDB实例节点下的后台访问连接和应用连接。具体操作如下:

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "ps ux |grep -w gsql |grep -v grep |awk '{print \$2}' |xargs -r kill -9"

gs_ssh -c "ps ux |grep -w ap_agent |grep -v grep |awk '{print \$2}' |xargs -r kill -9"

  • 步骤 5PuTTYomm用户登录后台任一个安装有MPPDB实例的节点,执行如下命令重启集群。

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

cm_ctl stop && cm_ctl start

----结束

2关闭所有定时任务(pg_job

操作场景

扩容新增节点操作前,需要停止内部定时任务,避免定时任务对扩容操作影响。

 

操作步骤

  • 步骤 1使用WinSCP工具以集群用户将以下脚本包上传至集群任意一个状态正常的CN节点的该集群用户具有执行权限的目录下,如“/home/集群用户名目录。
  • 步骤 2使用PuTTYroot用户登录该CN节点,执行如下命令解压脚本压缩包,并赋予脚本执行权限。

su - 集群用户名

cd /home/集群用户名

unzip job_broken_restore.zip

cd job_broken_restore

chmod +x *.sh

  • 步骤 3执行如下命令修改脚本中CNPORT字段值。

1.执行vim broken_job.sh命令,修改CNPORT字段值为当前节点CN端口号,如:

CNPORT='25308'

2.执行vim restore_job.sh命令,修改CNPORT字段值为当前节点CN端口号,如:

CNPORT='25308'

  • 步骤 4执行如下命令停止所有定时任务。

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

sh  broken_job.sh

----结束

3集群规模与组网规划

见第七页 集群网络规划

4添加新节点至集群

操作步骤

  • 步骤 1登录FusionInsight Manager
  • 步骤 2(可选)如需执行在线扩容,需单击“集群 > 待操作集群的名称 > 服务 > MPPDB > 配置”,搜索“mppdb.insert.expand”参数并将其修改为true,单击“保存”,开启在线扩容模式。
  • 步骤 3单击“集群 > 待操作集群的名称 > 主机”。单击“添加”。
  • 步骤 4选择“模板添加主机”,选择2.3.1 方式一(推荐):使用配置规划工具(LLD)生成配置文件生成的扩容模板。
  • 步骤 5填写各节点操作系统root用户(或omm用户)的密码,单击“查找”:

 

  • 步骤 6导入模板后会自动跳转至“确认”页面,此时若发现配置规划数据有误,可单击“上一步”回到各配置项检查或更改参数值。
  • 步骤 7单击“提交”,进入扩容进度界面,等待扩容完成。

----结束

5添加组件实例

操作场景

MPPDB服务添加至系统中的没有安装MPPDB服务的节点。

 

操作步骤

  • 步骤 1登录FusionInsight Manager
  • 步骤 2单击“集群 > 待操作集群的名称 > 服务”。单击MPPDB服务。
  • 步骤 3单击“实例”。单击“添加”。
  • 步骤 4根据扩容规划,勾选需要增加的实例。单击“下一步”。如图3-3所示。
  • 步骤 5根据扩容规划,配置添加实例的参数。单击下一步
  • 步骤 6对照扩容规划内容,确认信息无误,单击提交
  • 步骤 7添加实例后,部分服务的配置状态可能由于新加实例配置而出现配置状态处于过期状态。此时需要重启相关配置过期状态服务,进行配置同步生效。

----结束

1、扩容后需要做数据重分布

注意事项

  • 只有在界面显示操作成功后才能进行数据重分布操作。
  • 业务相对空闲时执行,因为数据重分布操作会占用很长的时间。
  • 需要注意不能使用kill -9的方式直接停止重分布脚本,这样会导致后台执行的重分布工具无法正常中止。
  • 不支持数据重分布的回滚,一旦数据重分布开始,系统不能再回滚到扩容前。
  • 不支持重分布有外键的表。
  • 在重分布执行过程中,用户应当避免执行长时间的查询。否则可能导致重分布出现等待加锁超时失败的问题。

 

操作步骤

  • 步骤 1FusionInsight Manager首页,单击“集群 > 待操作集群的名称 > 服务> MPPDB”,进入MPPDB服务页面,选择“更多 > 重分布”。
  • 步骤 2在弹出的重分布页面,根据实际情况,填写重分布信息。
  • 步骤 3单击确定,开始数据重分布。
  • 步骤 4MPPDB服务右上角选择更多 > 重分布历史,可查看重分布进度。
  • 步骤 5在查询历史页面观察重分布过程中的数据的分布进度,当页面显示进度为100%,则代表此次重分布任务结束,单击确定

----结束

2、查看重分布进度

操作场景

重分布过程中会创建以下几张表或视图,包括redis_progress视图、redis_progress_detail表、pgxc_redistb表和redis_status表。

它们各自的作用如下,管理员通过对应的视图或表可以查看重分布的进度。

管理员可以通过redis_progress视图查看重分布总体进度。

redis_progress_detail表记录了数据库中每张表重分布所耗时间。

pgxc_redistb表会在每个数据库中创建,记录了对应数据库中需要重分布的表。

redis_status表记录了重分布目前所处状态。

其中的redis_progresspgxc_redistb只存在于重分布过程中,重分布结束后会清除,只有redis_statusredis_progress_detail 在重分布结束后会保留。

 

重分布中创建的几张表

  • pgxc_redistb:创建pgxc_redistb表,该表不参与重分布,此表中记录了本次重分布所有需要进行重分布的表,用户可指定表里的redis_order字段来决定表的重分布顺序。
  • redis_progress:重分布过程中可以通过该视图查询重分布总体进度,该速率是一个估算值。
  • redis_progress_detail:记录每个表的重分布执行时间(生命周期:结束分布后依旧存在)。
  • redis_status:记录了重分布目前所处状态,各状态含义如表所示。

status

描述

REDISTRIBUTION SETUP

重分布初始化完成

REDISTRIBUTION STARTED

开始进行重分布

REDISTRIBUTION COMPLETE

数据重分布已完成

REDISTRIBUTION SHUTDOWN

重分布任务已完成

 

3、开启所有定时任务(pg_job

操作场景

扩容新增节点操作成功后,需要恢复内部定时任务。

 

操作步骤

  • 步骤 1使用PuTTYroot用户登录上传“job_broken_restore.zip”脚本包的CN节点,执行如下命令切换到扩容前上传“job_broken_restore.zip”脚本包的集群用户。

su - 集群用户名

  • 步骤 2执行如下命令启动所有定时任务。

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

sh restore_job.sh

----结束

4、恢复集群通信白名单

操作场景

恢复升级或扩容前注释掉的通信连接白名单内容。

 

操作步骤

  • 步骤 1PuTTYomm用户登录后台任一个安装有MPPDB实例的节点,执行如下命令恢复用户白名单。

 

以默认CN实例目录/srv/BigData/mppdb/data1/coordinator为示例,现场需根据实际情况进行调整。

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment ]; then  sed -i '/^#@#@#.*/s/#@#@#\(.*\)/\1/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf && rm -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment; fi "

  • 步骤 2如果存在Database Manager应用,则进入Database Manager应用主页,点击Database Manager主页小卡片右上角的开始监控,恢复Database Manager监控功能。

----结束

扩容验证

检查新节点状态

步骤 1登录FusionInsight Manager

步骤 2单击集群 > 待操作集群的名称 > 主机,查看新增节点的运行状态是否为良好

----结束

检查新服务实例状态

步骤 1登录FusionInsight Manager

步骤 2单击集群 > 待操作集群的名称 > 服务,查看“MPPDB”“KrbServer”“LdapServer”的状态;

步骤 3请确保“MPPDB”“KrbServer”“LdapServer”运行状态良好

步骤 4请确保“MPPDB”“KrbServer”“LdapServer”等的配置状态已同步

----结束

检查告警

步骤 1登录FusionInsight Manager

步骤 2单击运维 > 告警 >  告警,查看是否存在新的“MPPDB”的相关告警;

步骤 3若存在,请参照故障处理步骤清除告警。如果是新扩容节点的故障告警,则可以手动清除。

----结束

检查监控

步骤 1登录FusionInsight Manager

步骤 2单击集群 > 待操作集群的名称 > 服务 > MPPDB”,查看MPPDB监控数据是否正常显示。

----结束

数据迁移

场景分类

适用工具

性能

大批量数据导入/导出

GDS

集群单节点几十MB/S

小批量数据导入/导出

Copy to/from

整个集群15MB/S

查询结果集导出

COPY TO

整个集群15MB/S

其他数据库小数据导入/导出

ETL

整个集群几百KB/S

数据库元数据备份/恢复

Gs_dump/gs_restore

-

 

Migration

-

GDS迁移物理数据

GDS工具适用场景:

大数据量以文本数据作为来源导入

大数据量表的导出

 

GDS工具原理介绍

GDS(GaussDB DATA SERVER)数据服务器位于数据库系统外部,通过网络与系统相连。数据服务器上部署GDS管理数据源数据,提供数据服务功能,分发数据文件给DataNode。各DataNode并行收到数据分片,进行数据的入库。数据导出流程刚好反过来。GDS支持导入和导出的文件格式有csvtextfixed(每一行的数据等长)。

 

关键技术

传统数据库单节点导入性能低,GaussDBDWS)充分利用多节点并行导入,提高整体导入性能:

  • CN节点只负责任务的规划及下发,把数据导入的工作交给了DN节点,释放了CN节点的资源,使其有能力处理外部请求。
  • GDS进程负责数据文件的切分,然后分发给各个DN实例。
  • DN实例接受到数据分片后解析数据,而后根据表的分布列计算hash值,确定该条数据属于哪个DN;如果属于自身则缓冲到本地,如果属于别的DN则通过网络发送给相应的DN

GDS导入数据

GDS进行数据导数时候,GDS的数量尽量小于扽分与DN的数量,防止出现多个GDS同时向一个DN导数,导致出现其他意想不到的问题。

GDS导入支持将存储在服务器普通文件系统中的数据导入到GaussDBDWS)数据库中,暂时不支持将存储在HDFS文件系统上的数据导入GaussDBDWS)数据库。

 

导入流程:

开始→准备源数据→启动GDS→创建GDS外表→执行导入数据→处理错误表→优化查询效率→停止GDS→结束

 

启动GDS服务

Gds -d /input_data/ -p 192.168.0.90:5000 -H 10.10.0.1/24 -l /log/gds_log.txt -D -t 2

常用参数说明:

  • -d 待导入数据文件目录
  • -p 设置GDS监听IP和端口。未指定时,IP的默认值为127.0.0.1,端口的默认值为8098
  • -H 设置允许连接到GDS的主机(参数为CIDR格式,仅支持linux系统);
  • -l 设置GDS日志文件;
  • -enable-ssl  ssl的认证方式;
  • -D 设置GDS后台运行,一般都指定该选项;

 

创建外表

Create foreign table t1_foreign(a1 varchar2(10), a2 int)

  SERVER gasmpp_server OPTIONS (location gsfs://192.168.0.90:5000/t1.txt,

Format text’ , encoding utf8’ , delimiter ^’ , null ‘’)per node reject limit value

With error_t1_foreign;

 

执行导入

Insert into t1 select * from t1_foreign;

 

分析错误表

数据导入过程中发生的错误,一般分为数据格式错误和非数据格式错误。

数据格式错误:

在创建外表时,通过设置参数LOG INTO error_table_name,将数据导入过程中出现的出局格式错误信息写入指定的错误信息表error_table_name中,数据格式错误是指缺少或者多出字段值,数据类型错误或者编码错误。

非数据格式错误:

对于非数据格式错误,一旦发生将导致整个数据导入失败。可以根据执行数据导入过程中界面提示的错误信息,定位问题,处理错误表。

字段

说明

Nodeid

datanode编号

Begintime

错误数据写入错误表的时间

Filename

错误数据行所在文本名

Rownum

错误数据行在文本的行数

Rawrecord

错误原始数据行

Detail

错误原因说明

GDS导出数据

 

GaussDB(DWS)支持的导出模式有LocalRemote模式。

Remote模式:将集群中的业务数据导出到集群节点所在主机上。

  • 支持多个GDS服务并发导出,但1GDS在同一时刻,只能为1各集群提供导出服务。
  • 配置与集群节点处于统一内网的GDS服务,导出速率受网络带宽影响,推荐的网络配置为10GE
  • 支持数据文件格式:TEXTCSVFIXED。单行数据大小需<1GB

Local模式:将集群中的业务数据导出到集群节点所在主机上。一种专门为大量小文件而定制的一种策略。

  • 数据将均匀切割并生成到集群节点上指定的文件夹下,需占用集群节点的磁盘空间。
  • 支持数据文件格式:TEXTCSVFIXED。单行数据大小需<1GB

启动GDS服务

参考GDS导入数据

创建外表

Create foreign table t1_foreign_output(a1 varchar2(10), a2 int)

  SERVER gsmpp_server OPTIONS (location gsfs://10.185.240.41:8000/,

  Format text, encoding utf8, delimiter ^, null ‘’)

  Write only;

  • delimiter 导出文件的记录字段分隔符。推荐使用不可用字符,如0x070x08等,写法为delimited E\x08;
  • write only 外表只写属性,该属性只供数据导出使用;

执行导出

导出的文本命名格式为t1_foreign_output.dat.0

Insert into t1_foreign_output select * from t1;

GDS增量数据导入

  • GDS导入还有一个场景,就是定时将增量数据导入至GaussDBDWS)。
  • 可以通过写shell脚本并加入到crontab定时器中进行增量数据导入。
  • 脚本中要包含备份/删除上一次增量导入后的源数据文件,启动本次源数据文件同步,启动本次增量数据导入。
  • 启动GDS服务。
  • 创建外表。
  • 创建定时增量导入一级数据文件备份/删除脚本。
  • 将脚本加入至定时器调度。

 

 

 

 

 

 

 

 

 

学习日期:2021-4-28

gs_dump/gs_resotre迁移元数据

适用场景

导出单个表定义。

导出整个数据库对象定义。

恢复整个数据库定向定义。

 

Gs_dump导出数据库对象

导出表定义

Gs_dump postgres -p 1600 -t public.test -s -f /data/all.sql

  • -U 数据库用户名;
  • -W 数据库用户密码;
  • -p 数据库CN连接端口号;
  • -s 只导出对象定义,不导出对象数据;
  • -t 只导出指定的该表;
  • -f 将输出发送至指定文件;

 

导出整个数据库对象

Gs_dump postgres -p 16000 -s -f /data/all.sql

 

导出数据库所有对象和数据

Gs_dump postgres -p 16000 -f /data/all.sql

Gs_resotre恢复数据库对象

postgres 数据库中导出所有对象定义

Gs_dump postgres -p 16000 -s -f /data/all.sql -F c

 

db1库中恢复上一步导出的对象定义

Gs_dump postgres -p 1600 -f /data/all.sql

ETL工具使用说明

适用场景

  • 与其他数据库进行小数据量的导入和导出;
  • 增量数据的导入和导出;

适用方法

  • 需要修改ETL工具的JDBC驱动为GaussDBDWS)对应的JDBC驱动;
  • CN端配置对ETL工具所在机器IP的认证;

 

GaussDBDWS)与异构数据库之间的数据迁移方案,如果数据从其他数据库导入到GaussDB(DWS)中,有以下两种方式。第一种方式适用比较简单,但是性能较差;第二种方式需要多步操作,但是性能好。

  • ETL工具直接抽取。
  • 先用源端数据库的相关工具把数据导出为文本,然后用GaussDBDWS)的GDS工具导入;

例如从oracle把数据迁移到GaussDBDWS),有以下两种方式:

  • 用开源ETL工具KETTLE直接抽取,速度大概几百KB/S
  • 先用oraclesqluldr2工具导出为文本(速度大概是15MB/S),然后用GaussDBDWS)的GDS工具导入。

Migration工具

背景

当客户选择切换到华为数据库后可能回面临数据库的迁移任务,数据库迁移包括用户数据迁移和应用程序sql脚本迁移。

其中,应用程序sql脚本迁移是一个复杂、高风险且耗时的过程。

概述

Migration Tool是一款运行在linuxwindows操作系统上的命令行工具,致力于向客户提供简单、快速、可靠的应用程序sql脚本迁移服务,通过内置的语法迁移逻辑解析源数用程序sql脚本。

Migration Tool不需要链接数据库,可在离线模式下实现零停机迁移,迁移过程中还会显示迁移过程状态,并用日志记录操作过程中发生的错误,便于快速定位问题。

目标数据库

Migration Tool支持迁移的应用程序sql脚本适用于以下目标数据库:

  • GaussDBDWS
  • DWS

源数据库

Migration Tool支持迁移的源数据库:

  • Teradata
  • Oracle

迁移对象

Migration Tool支持迁移OracleTeradata数据库的对象有:

  • OracleTeradata支持的通用对象:SQL模式,SQL查询。
  • Oracle支持的对象:PL/SQL查询。
  • Teradata支持的对象:包含BTEQSQL_LANG脚本的Perl文件。

迁移流程

  • TeradataOracle数据库中导出要迁移的sql脚本,并将TeradataOracle待迁移sql脚本放置在已安装并配置了Migration ToolLinuxWindows服务器中。
  • 执行Migration Tool命令进行语法迁移,命令中指定输入文件路径、输出文件归档路径和日志归档路径。
  • 工具自动将迁移后的sql脚本和日志信息归档在指定路径中。

 

约束和限制

通用

  • Migration Tool仅用于语法迁移,不支持数据迁移。
  • 如果在将IN/NOT IN操作符转换为EXISTS/NOT EXISTS时,子查询的SELECT子句包含聚合函数,则迁移的脚本可能发生问题。

Teradata

  • Migration Tool 无法区分SQL语句中的mod是否是关键字,当mod并非关键字时也会被替换为%
  • 如果含有FORMAT参数的case语句未用半角括号(),该语句不会处理。
  • 如果Teradata查询中同时使用SELECT * QUALIFY子句,迁移的查询会为QUALIFY子句多返回一列。
  • 子查询或函数内不支持对表的命名引用。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。