GaussDB

网友投稿 705 2022-05-29

Gauss DB A 容量调整

扩容概述

扩容场景

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

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

节点扩容,然后在新添节点上添加业务组件实例。

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

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

添加MPPDB服务实例。

何时进行服务扩容

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

扩容期间禁止的操作

扩容(重分布阶段)支持用户进行本地表的DROP、TRUNCATE、TRUNCATE-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,再新扩128个DN,则应该在扩容前把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.x、CentOS 6.x系统下执行vi /etc/sysconfig/i18n命令,按“Insert”键开始编 辑。将“LANG”的值修改为“en_US.UTF-8”,“SYSFONT”的值修改为“latarcyrheb-sun16”, 按“Esc”键退出编辑,并输入:wq保存退出,重启操作系统后配置生效。

lRedHat 7.x、CentOS 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=1和g_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节点,将allhostfile、oldhostfile文件上传到/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现场实施人员知会并确认用户已完成数据库业务停止操作。

步骤 2用PuTTY以omm用户登录后台任一个安装有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/\(.*\)/#@#@#/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/\(.*\)/#@#@#/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "

步骤 3如果存在Database Manager应用,则进入Database Manager应用主页,点击Database Manager主页小卡片右上角的停止监控,暂时关闭Database Manager监控功能。

步骤 4用PuTTY以omm用户登录后台任一个安装有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"

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

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

cm_ctl stop && cm_ctl start

----结束

2、关闭所有定时任务(pg_job)

操作场景

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

操作步骤

步骤 1使用WinSCP工具以集群用户将以下脚本包上传至集群任意一个状态正常的CN节点的该集群用户具有执行权限的目录下,如“/home/集群用户名”目录。

步骤 2使用PuTTY以root用户登录该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的方式直接停止重分布脚本,这样会导致后台执行的重分布工具无法正常中止。

不支持数据重分布的回滚,一旦数据重分布开始,系统不能再回滚到扩容前。

不支持重分布有外键的表。

在重分布执行过程中,用户应当避免执行长时间的查询。否则可能导致重分布出现等待加锁超时失败的问题。

操作步骤

步骤 1在FusionInsight Manager首页,单击“集群 > 待操作集群的名称 > 服务> MPPDB”,进入MPPDB服务页面,选择“更多 > 重分布”。

步骤 2在弹出的“重分布”页面,根据实际情况,填写重分布信息。

步骤 3单击“确定”,开始数据重分布。

步骤 4在MPPDB服务右上角选择“更多 > 重分布历史”,可查看重分布进度。

步骤 5在查询历史页面观察重分布过程中的数据的分布进度,当页面显示进度为100%,则代表此次重分布任务结束,单击“确定”。

----结束

2、查看重分布进度

操作场景

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

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

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

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

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

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

其中的redis_progress、pgxc_redistb只存在于重分布过程中,重分布结束后会清除,只有redis_status、redis_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使用PuTTY以root用户登录上传“job_broken_restore.zip”脚本包的CN节点,执行如下命令切换到扩容前上传“job_broken_restore.zip”脚本包的集群用户。

su - 集群用户名

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

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

sh restore_job.sh

----结束

4、恢复集群通信白名单

操作场景

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

操作步骤

步骤 1用PuTTY以omm用户登录后台任一个安装有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/#@#@#\(.*\)//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支持导入和导出的文件格式有csv,text,fixed(每一行的数据等长)。

关键技术

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

CN节点只负责任务的规划及下发,把数据导入的工作交给了DN节点,释放了CN节点的资源,使其有能力处理外部请求。

GDS进程负责数据文件的切分,然后分发给各个DN实例。

各DN实例接受到数据分片后解析数据,而后根据表的分布列计算hash值,确定该条数据属于哪个DN;如果属于自身则缓冲到本地,如果属于别的DN则通过网络发送给相应的DN。

GDS导入数据

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

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

导入流程:

开始→准备源数据→启动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;

GaussDB

-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)支持的导出模式有Local和Remote模式。

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

支持多个GDS服务并发导出,但1各GDS在同一时刻,只能为1各集群提供导出服务。

配置与集群节点处于统一内网的GDS服务,导出速率受网络带宽影响,推荐的网络配置为10GE。

支持数据文件格式:TEXT,CSV和FIXED。单行数据大小需<1GB。

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

数据将均匀切割并生成到集群节点上指定的文件夹下,需占用集群节点的磁盘空间。

支持数据文件格式:TEXT、CSV和FIXED。单行数据大小需<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 导出文件的记录字段分隔符。推荐使用不可用字符,如0x07,0x08等,写法为delimited E’\x08’;

write only 外表只写属性,该属性只供数据导出使用;

执行导出

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

Insert into t1_foreign_output select * from t1;

GDS增量数据导入

GDS导入还有一个场景,就是定时将增量数据导入至GaussDB(DWS)。

可以通过写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驱动为GaussDB(DWS)对应的JDBC驱动;

在CN端配置对ETL工具所在机器IP的认证;

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

用ETL工具直接抽取。

先用源端数据库的相关工具把数据导出为文本,然后用GaussDB(DWS)的GDS工具导入;

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

用开源ETL工具KETTLE直接抽取,速度大概几百KB/S。

先用oracle的sqluldr2工具导出为文本(速度大概是15MB/S),然后用GaussDB(DWS)的GDS工具导入。

Migration工具

背景

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

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

概述

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

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

目标数据库

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

GaussDB(DWS)

DWS

源数据库

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

Teradata

Oracle

迁移对象

Migration Tool支持迁移Oracle和Teradata数据库的对象有:

Oracle和Teradata支持的通用对象:SQL模式,SQL查询。

仅Oracle支持的对象:PL/SQL查询。

仅Teradata支持的对象:包含BTEQ和SQL_LANG脚本的Perl文件。

迁移流程

从Teradata或Oracle数据库中导出要迁移的sql脚本,并将Teradata或Oracle待迁移sql脚本放置在已安装并配置了Migration Tool的Linux或Windows服务器中。

执行Migration Tool命令进行语法迁移,命令中指定输入文件路径、输出文件归档路径和日志归档路径。

工具自动将迁移后的sql脚本和日志信息归档在指定路径中。

约束和限制

通用

Migration Tool仅用于语法迁移,不支持数据迁移。

如果在将IN/NOT IN操作符转换为EXISTS/NOT EXISTS时,子查询的SELECT子句包含聚合函数,则迁移的脚本可能发生问题。

Teradata

Migration Tool 无法区分SQL语句中的mod是否是关键字,当mod并非关键字时也会被替换为%。

如果含有FORMAT参数的case语句未用半角括号”()”,该语句不会处理。

如果Teradata查询中同时使用SELECT * 和QUALIFY子句,迁移的查询会为QUALIFY子句多返回一列。

子查询或函数内不支持对表的命名引用。

数据仓库服务 GaussDB(DWS)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Deduplication(重复数据删除)技术
下一篇:OSG-获取OSG的源代码和第三方库并编译
相关文章