华为云用户手册

  • 操作步骤 登录CAE控制台。选择“组件配置”。 在“组件配置”页面上方的下拉框中选择待操作的组件。 图1 选择待操作的组件 如图2和图3所示分别配置启动探针与存活探针,并生效配置,具体操作步骤请参考配置健康检查。 图2 配置存活探针 图3 配置启动探针 启动探针会在实例创建后10秒钟进行检查,每5秒检测一次,且连续失败5次后进行容器重启的操作。在启动探针检测到实例健康后,存活探针将进行启动检测,可以避免程序启动过慢,导致实例一直重启。 请保证程序启动时间在“延迟时间”+ “检测周期”* “最大失败次数”秒内能启动,否则启动探针会一直重启实例。如果不确定程序启动时间,建议调大“最大失败次数”以及“延迟时间”。 如图3所示,程序需要在10 + 5 * 5 = 35秒内启动。 单击“组件事件”,在“组件事件”页面中可以看到启动探针探测一次失败后,程序成功启动,切换到了存活探针,并检测实例健康。 图4 查看事件信息 图5 启动探针探测情况
  • 参数说明 表1 参数说明 参数名称 是否必须 参数类型 描述 bucket_name 是 String obs桶名称,CAE发布插件中选择的区域和obs桶所在的区域保持一致。 file_name 是 String 上传到obs桶中的软件包名称。 file_dir 是 String 软件包上传到obs桶中的存放目录,目录需要以/结尾,如果obs桶中没有这个目录,会自动创建出该目录。如根目录是“/”,根目录下面的test目录“/test/”。 obs_address 是 String 值的格式为:obs.区域项目名称.myhuaweicloud.com,区域项目名称就是region,参考参数值获取。 软件包地址 是 String 上传到obs的软件包地址,值填写: https://${bucket_name}.${obs_address}${file_dir}${file_name}。
  • 配置流水线脚本 流水线脚本是构建时运行的构建命令,脚本参数说明见表1。 表1 流水线脚本参数说明 参数 是否必须 参数类型 描述 git_url 是 String Gitlab代码仓库地址。 credentials_id 是 String 使用账号密码配置的Gitlab凭据id,参考创建Gitlab凭证。 branch_name 是 String Gitlab代码仓库分支名称。 maven 是 String maven安装的可执行文件路径,示例:/root/app/maven/apache-maven-3.8.6/bin/mvn。 deploy_shell 是 String deploy.sh脚本在Jenkins所在虚拟机上存放的路径,示例:/root/jar/deploy.sh,内容请参见deploy.sh脚本说明。 build_target_name 是 String 构建产物名称:软件包名称或镜像名称:版本号,通过执行脚本时传入该参数,软件包部署场景为软件包名称,镜像部署场景为构建出来的镜像名称:版本号。 完成“构建触发器”配置之后,在“流水线”页签,在下拉框选择“Pipeline script”。 图10 流水线配置 配置流水线脚本,示例中使用的是构建jar包场景,脚本如下: node { // 定义代码仓地址 def git_url = 'http://100.**.**.207:8090/test/test-demo.git' // Gitlab凭据id def credentials_id = '133b7c9a-eb6a-4484-84b3-c3509ed63df8' // git代码仓库分支名称 def branch_name = 'main' // maven安装的可执行文件路径 def maven = '/root/app/maven/apache-maven-3.8.6/bin/mvn' // deploy.sh 脚本存放路径,需要设置可执行权限 def deploy_shell = '/root/jar/deploy.sh' // 构建产物名称:软件包名称或镜像名称,必须参数,通过执行脚本时传入该参数 def build_target_name = "cae-demo-1.0-SNAPSHOT.jar" stage('Clone sources') { git branch: branch_name, credentialsId: credentials_id, url: git_url } stage('Build') { // 构建jar包 sh "'$maven' clean package -Dmaven.test.failure.ignore=true" } stage('deploy') { // 执行脚本,使用构建产物升级CAE组件,超时时间5分钟 sh "timeout 300s '$deploy_shell' '$build_target_name'" } } 流水线脚本运行时会调用deploy.sh,该脚本详细说明参见deploy.sh脚本说明。 设置脚本文件deploy.sh为可执行文件。
  • 配置构建触发器 这里介绍两种构建方式: 在Jenkins中手动触发构建,手动单击任务右边的“立即构建”从而触发流水线任务。 通过Gitlab提交代码后自动触发Jenkins构建,这种方式同时支持手动触发构建。 此处以第二种方式为例。 配置Jenkins构建触发器。 勾选“Build when a change is pushed to GitLab”,保存图示中的GitLab webhook URL(配置Gitlab webhook时需使用),然后单击右下角“高级”。 图6 获取GitLab webhook URL 选择“Filter branches by regex ”,配置指定分支变更后触发构建任务,示例中的分支名称为main,单击右下角“Generate”生成Secret token并保存,在配置Gitlab webhook时需使用。 图7 获取Secret token 配置Gitlab webhook 登录Gitlab,进入代码仓库,示例中的仓库名称是“test-demo”。 选择settings中的“Webhooks”,URL和Secret token填写1获取到的GitLab webhook URL和Secret token。 图8 webhooks配置 取消勾选SSL verification的“Enable SSL verification”,单击“Add webhook”。 图9 完成webhook配置
  • 手动构建验证 在浏览器地址栏输入http://{安装Jekins的Linux虚拟机IP}:8080,登录Jenkins。 左侧导航栏单击“我的视图”。 选择对应的构建任务,单击构建任务名称进入详情界面,示例为“test-demo”。 单击右侧,在左侧构建执行状态中会生成一个构建任务,单击任务编号,选择“Console Output”,如图1,查看构建输出日志。 图1 手动构建验证 查看构建输出日志,构建出来的是jar包,部署成功。 图2 构建输出日志 登录CAE控制台。 导航栏单击“组件列表”,查看对应组件的版本号已更新,如图3。 图3 查看组件版本号 父主题: 构建验证
  • 操作步骤 登录CAE控制台。选择“组件配置”。 在“组件配置”页面上方的下拉框中选择待操作的组件。 图1 选择组件 如图2所示配置停止前处理,具体操作请参考配置生命周期。 分别输入以下命令: /bin/bash -c nginx -s quit;while killall -0 nginx;do sleep 1;done 图2 配置生命周期 单击“确定”,保存配置。 单击页面上方“生效配置”。在右侧弹框中确认配置信息,并单击“确定”,使配置生效。
  • 概述 健康检查用于检测您的应用实例是否正常工作,是用来保障业务正常运行的一种机制。CAE提供三种健康检查机制:存活探针、就绪探针和启动探针。 存活探针用于检测应用程序是否存活。如果检测实例异常,k8s将会删除当前运行的实例并重新检测,直到检测返回实例正常。 单独使用存活探针时,如出现网络波动或程序启动过慢的情况,会导致实例持续被重启,且实例一直处于未就绪的状态。 有如下解决方案: 与启动探针配合使用,具体操作请参见启动探针与存活探针配合工作。 使用时将“最大失败次数”调大,增加容错率,并增大“延迟时间”,保证程序在启动后再接受存活探针的检测。 检查成功:对于在健康检查中设置的请求返回状态码200。 检查失败:对于在健康检查中设置的请求返回状态码非200,且连续失败次数达到设置的“最大失败次数”。 就绪探针用于检测应用是否完成启动,并准备好开始接受请求。如果检查到实例已经健康,则进行流量的切换。 例如:以组件的实例从2个伸缩到3个为例,说明设置就绪探针前后对比。 未设置就绪探针时,实例已创建完成,但由于程序原因,并未准备好开始接受流量,此时如图1所示,部分流量仍然会进入实例3中。 图1 未配置就绪探针 设置就绪探针后,就绪探针会进行检测,发现实例3并未启动完成或就绪,则使实例3不接收流量,保证所有流量都会流入健康的实例1和实例2中。 图2 就绪探针检测健康前,流量不放通 当就绪探针检查到实例3为健康时,则放通流量,停止本次检测。 图3 就绪探针健康后,放通流量 启动探针在运行时会禁用其他探测(就绪探针以及存活探针),如果启动探针检查失败,则实例会被重启。 启动探针建议搭配存活探针一起使用。 父主题: 健康检查
  • 相关软件下载及安装 Jenkins下载链接: https://mirrors.jenkins.io/war-stable/ 安装git用于拉取代码进行构建: yum install git –y jdk安装包下载链接: https://www.oracle.com/cn/java/technologies/downloads/#java11 maven安装包下载链接: https://maven.apache.org/download.cgi docker安装用于打包镜像并上传到镜像仓库: yum install docker
  • 安装后检查 检查git: 检查git: [root@ecs-jenkins ~]# git version git version 1.8.3.1 检查JDK: [root@ecs-jenkins jar]# java -version openjdk version "1.8.0_345" OpenJDK Runtime Environment (build 1.8.0_345-b01) OpenJDK 64-Bit Server VM (build 25.345-b01, mixed mode) 检查Maven: [root@ecs-jenkins jar]# mvn -v Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63) Maven home: /root/app/maven/apache-maven-3.8.6 Java version: 11.0.8, vendor: Huawei Technologies Co., LTD, runtime: /root/app/jdk11/jdk-11.0.8 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1160.76.1.el7.x86_64", arch: "amd64", family: "unix" 检查Docker: [root@ecs-jenkins jar]# docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Wed Mar 2 15:25:43 2022 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Wed Mar 2 15:25:43 2022 OS/Arch: linux/amd64 Experimental: false 图1 版本查验
  • 环境信息说明 如果已安装好jenkins环境,请跳过本章节。 在linux虚拟机上安装好Jenkins,本实践使用的具体环境信息如下所示。如果使用镜像部署,需要在虚拟机中安装docker。 虚拟机:Centos7.9 Jenkins:2.331 git:yum安装 jdk:11.0.8 Apache Maven :3.8.6 部署的Jenkins启动时需添加如下参数: -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_ CS RF_PROTECTION=true 否则Gitlab对接Jenkins会失败,报错信息如下: HTTP Status 403 - No valid crumb was included in the request
  • 参数说明 表1 参数说明 参数名称 是否必须 参数类型 描述 org_name 是 String 镜像上传到SWR的组织名称,可以登录SWR控制台查看。 image_name 是 String 上传到SWR的镜像名称。 image_tag 是 String 上传到SWR的镜像版本。 swr_address 是 String 值的格式:swr.区域项目名称.myhuaweicloud.com,区域项目名称就是region,参考参数值获取。 镜像地址 是 String 上传到SWR的镜像地址,值填写: ${swr_address}/${org_name}/${image_name}:${image_tag}。
  • 创建用户组并授权 在左侧导航栏中选择“用户组”,单击“创建用户组”。 图3 创建用户组 输入“用户组名称”,例如cae-test,单击“确定”,完成用户组创建。 在用户组列表中单击创建完成的用户组名称“cae-test”,进入用户组概览页面。 在“授权记录”页签中单击“授权”,选择创建自定义策略中创建的自定义策略。 图4 授权自定义策略 单击“下一步”,选择授权范围方案为“所有资源”。 单击“确定”,完成授权。 待授权完成后,单击“完成”,返回用户组概览页面。 图5 完成用户组授权 单击“用户管理”,进入“用户组管理”页面。 在用户列表中勾选需要控制权限的子用户,单击“确定”。 图6 配置用户管理
  • 参数说明 表1 参数说明 参数名称 是否必须 参数类型 描述 release_version 是 String 发布版本号,取值使用时间戳变量:${TIMESTAMP}。 软件包地址 是 String 编译构建出来的软件包上传到软件发布库中的地址。 例如:复制图9中下载地址,下载地址为https://devrepo.devcloud.cn-east-3.huawei.com/DevRepoServer/v1/files/download?filename=39d25a3cc6ee48678533020abcfbf941/cae-backend/20231028200733/cae-backend.jar,将软件包的目录发布版本号20231028200733改为${release_version},则软件包地址的值为https://devrepo.devcloud.cn-east-3.huawei.com/DevRepoServer/v1/files/download?filename=39d25a3cc6ee48678533020abcfbf941/cae-backend/${release_version}/cae-backend.jar。
  • Nginx默认配置 查询nginx默认配置方法: Nginx默认配置如图3所示。 此版本的Nginx配置文件(nginx.conf)地址为“/etc/nginx/nginx.conf”。 图3 nginx.conf Nginx默认的default.conf如图4所示。“/usr/share/nginx/html”为静态文件存放的路径,该路径下存在两个默认文件分别为“50x.html”和“index.html”。 图4 default.conf 如需替换页面显示,则将需替换的html文件放入“/usr/share/nginx/html”目录下。替换的html文件可以通过获取静态文件提供的链接中直接下载。
  • 解决方案 新建一条jenkins流水线来编排多个组件,自动按照依赖顺序构建升级,并使用参数化构建的方式,同时支持单个或多个组件的升级。 下面以一个示例说明流水线执行流程。 有4个组件分别是componentA、componentB、componentC和componentD,其中componentD依赖componentB和componentC,componentB和componentC依赖componentA。 流水线执行流程:
  • 操作步骤 登录CAE控制台。选择“组件配置”。 在“组件配置”页面上方的下拉框中选择待操作的组件。 图1 选择待操作的组件 如图2所示配置就绪探针,并生效配置,具体操作步骤请参考配置健康检查。 图2 配置就绪探针 对组件进行升级操作,具体操作请参考升级组件。 升级时,在左侧导航栏中选择“组件列表”,进入“组件列表”页面,单击对应组件“访问地址”列的ip地址,查看应用页面。如图3所示服务并无中断。 图3 访问应用页面 在“组件事件”页面,查看组件事件,可以看到实例存在不健康的请求,此时检测到新实例还未准备好进行流量切换,则继续使用旧实例提供服务。 图4 查看组件事件
  • 示例 示例一:执行gs_dump,导出gaussdb数据库全量信息,并对导出文件进行压缩,导出文件格式为sql文本格式。 gs_dump -W password -U jack -f /home//backup/postgres_backup.sql -p 8000 -h 10.10.10.100 gaussdb -Z 8 -F p gs_dump[port=''][gaussdb][2017-07-21 15:36:13]: dump database gaussdb successfully gs_dump[port=''][gaussdb][2017-07-21 15:36:13]: total time: 3793 ms 示例二:执行gs_dump,仅导出gaussdb数据库中的数据,不包含数据库对象定义,导出文件格式为自定义归档格式。 gs_dump -W Password -U jack -f /home//backup/postgres_data_backup.dmp -p 8000 -h 10.10.10.100 gaussdb -a -F c gs_dump[port=''][gaussdb][2017-07-21 15:36:13]: dump database gaussdb successfully gs_dump[port=''][gaussdb][2017-07-21 15:36:13]: total time: 3793 ms 示例三:执行gs_dump,仅导出gaussdb数据库所有对象的定义,导出文件格式为sql文本格式。 --导出前,表nation有数据 select n_nationkey,n_name,n_regionkey from nation limit 3; n_nationkey | n_name | n_regionkey -------------+---------------------------+------------- 0 | ALGERIA | 0 3 | CANADA | 1 11 | IRAQ | 4 (3 rows) gs_dump -W password -U jack -f /home//backup/postgres_def_backup.sql -p 8000 -h 10.10.10.100 gaussdb -s -F p gs_dump[port=''][gaussdb][2017-07-20 15:04:14]: dump database gaussdb successfully gs_dump[port=''][gaussdb][2017-07-20 15:04:14]: total time: 472 ms 示例四:执行gs_dump,仅导出gaussdb数据库的所有对象的定义,导出文件格式为文本格式,并对导出文件进行加密。 gs_dump -W password -U jack -f /home//backup/postgres_def_backup.sql -p 8000 -h 10.10.10.100 gaussdb --with-encryption AES128 --with-key 1234567812345678 -s -F p gs_dump[port=''][gaussdb][2018-11-14 11:25:18]: dump database gaussdb successfully gs_dump[port=''][gaussdb][2018-11-14 11:25:18]: total time: 1161 ms
  • 示例 示例一:执行gs_dumpall,导出所有数据库全量信息(dbadmin用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 gs_dumpall[port=''][2017-07-21 15:57:31]: dumpall operation successful gs_dumpall[port=''][2017-07-21 15:57:31]: total time: 9627 ms 示例二:执行gs_dumpall,仅导出所有数据库定义(dbadmin用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -s gs_dumpall[port=''][2018-11-14 11:28:14]: dumpall operation successful gs_dumpall[port=''][2018-11-14 11:28:14]: total time: 4147 ms 示例三:执行gs_dumpall,仅导出所有数据库中数据,并对导出文件进行加密,导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -a --with-encryption AES128 --with-key 1234567812345678 gs_dumpall[port=''][2018-11-14 11:32:26]: dumpall operation successful gs_dumpall[port=''][2018-11-14 11:23:26]: total time: 4147 ms
  • 示例 示例一:执行gs_dump,导出hr模式全量信息,并对导出文件进行压缩,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup.sql -p 8000 -h 10.10.10.100 human_resource -n hr -Z 6 -F p gs_dump[port=''][human_resource][2017-07-21 16:05:55]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 16:05:55]: total time: 2425 ms 示例二:执行gs_dump,仅导出hr模式的数据,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_data_backup.tar -p 8000 -h 10.10.10.100 human_resource -n hr -a -F t gs_dump[port=''][human_resource][2018-11-14 15:07:16]: dump database human_resource successfully gs_dump[port=''][human_resource][2018-11-14 15:07:16]: total time: 1865 ms 示例三:执行gs_dump,仅导出hr模式的定义,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_def_backup -p 8000 -h 10.10.10.100 human_resource -n hr -s -F d gs_dump[port=''][human_resource][2018-11-14 15:11:34]: dump database human_resource successfully gs_dump[port=''][human_resource][2018-11-14 15:11:34]: total time: 1652 ms 示例四:执行gs_dump,导出human_resource数据库时,排除hr模式,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup.dmp -p 8000 -h 10.10.10.100 human_resource -N hr -F c gs_dump[port=''][human_resource][2017-07-21 16:06:31]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 16:06:31]: total time: 2522 ms 示例五:执行gs_dump,同时导出hr和public模式,且仅导出模式定义,并对导出文件进行加密,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup1.tar -p 8000 -h 10.10.10.100 human_resource -n hr -n public -s --with-encryption AES128 --with-key 1234567812345678 -F t gs_dump[port=''][human_resource][2017-07-21 16:07:16]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 16:07:16]: total time: 2132 ms 示例六:执行gs_dump,导出human_resource数据库时,排除hr和public模式,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup2.dmp -p 8000 -h 10.10.10.100 human_resource -N hr -N public -F c gs_dump[port=''][human_resource][2017-07-21 16:07:55]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 16:07:55]: total time: 2296 ms 示例七:执行gs_dump,导出public模式下所有表(视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_backup3.dmp -p 8000 -h 10.10.10.100 human_resource -t public.* -t hr.staffs -F c gs_dump[port=''][human_resource][2018-12-13 09:40:24]: dump database human_resource successfully gs_dump[port=''][human_resource][2018-12-13 09:40:24]: total time: 896 ms
  • 安装dws-kettle-plugin自定义插件 下载dws-client相关插件。 dws-kettle-plugin.jar:访问下载地址,获取最新版本使用。 dws-client.jar:访问下载地址,获取最新版本使用。 caffeine.jar:访问下载地址,选择与dws-client对应依赖的版本,例如dws-client为1.0.10,则获取1.0.10下对应的caffeine.jar。 必须选择dws-client对应依赖的版本,使用其他版可能会出现不兼容问题。 huaweicloud-dws-jdbc.jar:访问下载地址,选择与dws-client对应依赖的版本,例如dws-client为1.0.10,则获取1.0.10下对应的huaweicloud-dws-jdbc.jar。 在kettle的安装目录data-integration\plugins下新建目录,如dws-plugin。 将dws-kettle-plugin.jar放在data-integration\plugins\dws-plugin目录下。 将dws-client.jar、caffeine.jar放在data-integration\plugins\dws-plugin\lib目录下。 将huaweicloud-dws-jdbc.jar放在data-integration\lib目录下。
  • 下载DSC SQL语法迁移工具 登录 GaussDB (DWS) 管理控制台。 在左侧导航栏中,单击“连接管理”。 在“下载客户端和驱动”区域,单击“这里”即可下载DSC迁移工具。 如果同时拥有不同版本的集群,系统会弹出对话框,提示您选择“集群版本”然后下载与集群版本相对应的客户端。在“集群管理”页面的集群列表中,单击指定集群的名称,再选择“基本信息”页签,可查看集群版本。 图1 下载工具 下载客户端软件。 表1 DSC下载地址 适用操作系统 下载地址 校验文件 请参见DSC SQL语法迁移工具操作指导 DSC.zip DSC.zip.sha256 下载到本机后,使用WinSCP工具,将DSC工具上传到一个需安装工具的Linux主机上。 执行上传操作的用户需要对Linux主机的目标存放目录有完全控制权限。
  • 示例 示例一:执行gs_dump导出数据,用户jack不具备导出数据库human_resource的权限,而角色role1具备该权限,要实现导出数据库human_resource,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "password"; gs_dump -U jack -W password -f /home//backup/MPPDB_backup11.tar -p 8000 -h 10.10.10.100 human_resource --role role1 --rolepassword password -F t gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfully gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 4239 ms 示例二:执行gs_dump导出数据,用户jack不具备导出模式public的权限,而角色role1具备该权限,要实现导出模式public,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "1234@abc"; gs_dump -U jack -W password -f /home//backup/MPPDB_backup12.tar -p 8000 -h 10.10.10.100 human_resource -n public --role role1 --rolepassword password -F t gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfully gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 3278 ms 示例三:执行gs_dumpall导出数据,用户jack不具备导出所有数据库的权限,而角色role1具备该权限,要实现导出所有数据库,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为文本归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "password"; gs_dumpall -U jack -W password -f /home//backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 --role role1 --rolepassword password gs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: dumpall operation successful gs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: total time: 6437 ms
  • 导出流程 图2 并行导出流程 表1 流程说明 流程 说明 子任务 规划导出数据。 根据所选模式,准备需要导出的数据并规划导出路径。 详细内容请参见规划导出数据 - 启动GDS。 若规划的导出模式为Remote模式,需在数据服务器上安装配置并启动GDS。 详细内容请参见安装配置和启动GDS。 - 创建外表。 创建外表用于帮助GDS指定导出的数据文件。外表中保存了导出数据文件的位置、文件格式、编码格式、数据间的分隔符等信息。 详细内容请参见创建GDS外表。 - 执行导出数据。 在创建好外表后,通过INSERT语句,将数据快速、高效地导出到数据文件中。 详细内容请参见执行导出数据。 - 停止GDS。 数据导出完成后,停止GDS。 详细请参见停止GDS。 -
  • 相关概念 数据文件:存储有数据的TEXT、CSV或FIXED文件。文件中保存的是从GaussDB(DWS)数据库导出的数据。 外表:用于规划导出数据文件的数据文件格式、存放位置、编码格式等信息。 GDS:数据服务工具。在导出数据时,需要将此工具部署到数据文件所在的服务器上,使DN可以通过该工具导出数据。 表:数据库中的表,包括行存表和列存表。数据文件中的数据从这些表中导出。 Remote导出模式:将集群中的业务数据导出到集群之外的主机上。
  • 概述 通过外表导出数据:通过GDS外表设置的导出模式、导出数据格式等信息来指定待导出的数据文件,利用多DN并行的方式,将数据从数据库导出到数据文件中,从而提高整体导出性能。不支持直接导出文件到HDFS文件系统。 CN只负责任务的规划及下发,把数据导出的工作交给了DN,释放了CN的资源,使其有能力处理外部请求。 通过让各个DN都参与数据导出,充分利用各个设备的计算能力及网络带宽。 图1 通过外表导出数据
  • 示例 示例一:执行gs_dump,导出表hr.staffs的定义和数据,并对导出文件进行压缩,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -Z 6 -F p gs_dump[port=''][human_resource][2017-07-21 17:05:10]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 17:05:10]: total time: 3116 ms 示例二:执行gs_dump,只导出表hr.staffs的数据,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_data_backup.tar -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -a -F t gs_dump[port=''][human_resource][2017-07-21 17:04:26]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 17:04:26]: total time: 2570 ms 示例三:执行gs_dump,导出表hr.staffs的定义,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_def_backup -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -s -F d gs_dump[port=''][human_resource][2017-07-21 17:03:09]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 17:03:09]: total time: 2297 ms 示例四:执行gs_dump,不导出表hr.staffs,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup4.dmp -p 8000 -h 10.10.10.100 human_resource -T hr.staffs -F c gs_dump[port=''][human_resource][2017-07-21 17:14:11]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 17:14:11]: total time: 2450 ms 示例五:执行gs_dump,同时导出两个表hr.staffs和hr.employments,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup1.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -t hr.employments -F p gs_dump[port=''][human_resource][2017-07-21 17:19:42]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 17:19:42]: total time: 2414 ms 示例六:执行gs_dump,导出时,排除两个表hr.staffs和hr.employments,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup2.sql -p 8000 -h 10.10.10.100 human_resource -T hr.staffs -T hr.employments -F p gs_dump[port=''][human_resource][2017-07-21 17:21:02]: dump database human_resource successfully gs_dump[port=''][human_resource][2017-07-21 17:21:02]: total time: 3165 ms 示例七:执行gs_dump,导出表hr.staffs的定义和数据,只导出表hr.employments的定义,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup3.tar -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -t hr.employments --exclude-table-data hr.employments -F t gs_dump[port=''][human_resource][2018-11-14 11:32:02]: dump database human_resource successfully gs_dump[port=''][human_resource][2018-11-14 11:32:02]: total time: 1645 ms 示例八:执行gs_dump,导出表hr.staffs的定义和数据,并对导出文件进行加密,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup4.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs --with-encryption AES128 --with-key 1212121212121212 -F p gs_dump[port=''][human_resource][2018-11-14 11:35:30]: dump database human_resource successfully gs_dump[port=''][human_resource][2018-11-14 11:35:30]: total time: 6708 ms 示例九:执行gs_dump,导出public模式下所有表(包括视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup5.dmp -p 8000 -h 10.10.10.100 human_resource -t public.* -t hr.staffs -F c gs_dump[port=''][human_resource][2018-12-13 09:40:24]: dump database human_resource successfully gs_dump[port=''][human_resource][2018-12-13 09:40:24]: total time: 896 ms 示例十: 执行gs_dump,仅导出依赖于t1模式下的test1表对象的视图信息,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_view_backup6 -p 8000 -h 10.10.10.100 human_resource -t t1.test1 --include-depend-objs --exclude-self -F d gs_dump[port=''][jack][2018-11-14 17:21:18]: dump database human_resource successfully gs_dump[port=''][jack][2018-11-14 17:21:23]: total time: 4239 ms
  • 使用 CDM 迁移数据到GaussDB(DWS) 使用 云数据迁移 服务(Cloud Data Migration,简称CDM),可以将其他数据源(例如MySQL)的数据迁移到GaussDB(DWS) 集群的数据库中。 使用CDM迁移数据到GaussDB(DWS)的典型场景,请参见云数据迁移服务(简称CDM)的如下章节: 入门:该入门场景为使用CDM迁移本地MySQL数据库到GaussDB(DWS) 父主题: 整库迁移
  • 示例 示例一:执行gs_dumpall,导出所有数据库的公共全局表空间信息和用户信息(dbadmin用户为管理员用户),导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_globals.sql -p 8000 -h 10.10.10.100 -g gs_dumpall[port=''][2018-11-14 19:06:24]: dumpall operation successful gs_dumpall[port=''][2018-11-14 19:06:24]: total time: 1150 ms 示例二: 执行gs_dumpall,导出所有数据库的公共全局表空间信息(dbadmin用户为管理员用户),并对导出文件进行加密,导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_tablespace.sql -p 8000 -h 10.10.10.100 -t --with-encryption AES128 --with-key 1212121212121212 gs_dumpall[port=''][2018-11-14 19:00:58]: dumpall operation successful gs_dumpall[port=''][2018-11-14 19:00:58]: total time: 186 ms 示例三:执行gs_dumpall,导出所有数据库的公共全局用户信息(dbadmin用户为管理员用户),导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_user.sql -p 8000 -h 10.10.10.100 -r gs_dumpall[port=''][2018-11-14 19:03:18]: dumpall operation successful gs_dumpall[port=''][2018-11-14 19:03:18]: total time: 162 ms
  • 迁移数据到GaussDB(DWS) GaussDB(DWS)提供了灵活的数据入库方式,可以将多种数据源的数据导入到GaussDB(DWS)中,如图1所示。各导入方式具有不同的特点,如表1所示,用户可以根据其特点自行选择。建议用户配合 数据复制服务 (Data Replication Service,简称DRS)、云数据迁移(Cloud Data Migration,简称CDM)和 数据治理中心 DataArts Studio )一起使用,DRS用于数据实时同步,CDM用于批量数据迁移,DataArts Studio可以对整个ETL过程进行编排调度,同时提供可视化的开发环境。 图1 数据迁移示意图 DRS、CDM、OBS、 MRS DLI 为云服务。 GDS、DSC、gs_restore、gs_dump为内部工具。 表1 数据导入方式说明 数据导入方式 数据源 说明 优势 从OBS并行导入数据 OBS 支持将存储在OBS上的TXT、CSV、ORC及CARBONDATA格式的数据并行导入到GaussDB(DWS),支持导入后查询数据,也支持远程读OBS上的数据。 GaussDB(DWS)优先推荐的导入方式。 并行拉取方式,性能好,横向扩展。 使用GDS从远端服务器导入数据 Servers(即远端服务器) 使用GaussDB(DWS)提供的GDS工具,利用多DN并行的方式,将数据从远端服务器导入到GaussDB(DWS)。这种方式导入效率高,适用于大批量数据入库。 从MRS导入数据到集群 MRS(HDFS) 配置一个GaussDB(DWS)集群连接到一个MRS集群,然后将数据从MRS的HDFS中读取到GaussDB(DWS)。 并行拉取方式,性能好,横向扩展。 从GaussDB(DWS)集群导入数据到新集群 - 支持两个GaussDB(DWS)集群之间的数据互访互通。通过Foreign Table方式实现跨DWS集群的数据访问和导入。 适用于多套GaussDB(DWS)集群之间的数据同步。 基于GDS的跨集群互联互通 - 通过GDS进行数据中转,实现多个集群之间的数据同步。 适用于多套GaussDB(DWS)集群之间的数据同步。 使用开源Kettle导入数据 MySQL、Oracle、BigQuery、Redshift等 支持使用开源Kettle工具配合dws-client插件完成数据入库。 适用于使用开源Kettle工具入库场景,数据入库速度在22000条/秒左右。 使用gsql元命令\COPY导入数据 本地文件 与直接使用SQL语句COPY不同,该命令读取/写入的文件只能是gsql客户端所在机器上的本地文件。 操作简单,适用于小批量数据入库。 使用COPY FROM STDIN导入数据 其他文件或数据库 使用Java语言开发应用程序时,通过调用JDBC驱动的CopyManager接口,从文件或其他数据库向GaussDB(DWS)写入数据。 从其他数据库直接写入GaussDB(DWS)的方式,具有业务数据无需落地成文件的优势。 Kafka实时入库到GaussDB(DWS) Kafka 使用DLI Flink作业实现Kafka实时入库GaussDB(DWS)。 适用Kafka实时入库。 使用DRS将数据导入GaussDB(DWS) MySQL DDM PostgreSQL(公测) Oracle(公测) GaussDB分布式版(公测) 通过DRS实时同步功能,将数据从一个数据源拷贝到GaussDB(DWS) 数据仓库 ,实现关键业务的数据实时流动。主要聚焦于表和数据的同步导入。 数据源丰富,操作简单。 使用CDM迁移数据到GaussDB(DWS) 数据库、NoSQL、文件系统、大数据平台 CDM提供同构/异构数据源之间批量数据迁移的功能,帮助用户实现从多种类型的数据源迁移数据到GaussDB(DWS)。CDM在迁移数据到GaussDB(DWS)时,采用的是COPY方式和GDS并行导入方式。 数据源丰富,操作简单。 使用DSC工具迁移SQL脚本 数据库、NoSQL、文件系统、大数据平台 请参考第三方ETL工具的相关文档。 GaussDB(DWS)提供了DSC工具,可以将Teradata/Oracle脚本迁移到GaussDB(DWS)。 通过OBS中转,数据源丰富,数据转换能力强。 使用gs_dump和gs_dumpall命令导出元数据 纯文本格式 自定义归档格式 目录归档格式 tar归档格式 gs_dump支持导出单个数据库或其内的对象,而gs_dumpall支持导出集群中所有数据库或各库的公共全局对象。 通过导入工具将导出的元数据信息导入至需要的数据库,可以完成数据库信息的迁移。 适用于元数据迁移。 使用gs_restore导入数据 sql/tmp/tar文件格式 在数据库迁移场景下,支持使用gs_restore工具将事先使用gs_dump工具导出的文件格式,重新导入GaussDB(DWS)集群,实现表定义、数据库对象定义等元数据的导入。导入数据主要包括以下内容: 所有数据库对象定义。 单个数据库对象定义。 单个Schema定义。 单张表定义。
  • GUC参数 表8 GUC参数 变更类型 序号 名称 变更描述 新增 1 enable_wlm_internal_memory_limit 控制是否打开wlm内部的限制,如:作业估算内存不超过80%/90%/40%的限制。 2 enable_strict_memory_expansion 控制作业是否在DN上做内存扩展。 3 allow_zero_estimate_memory 控制作业在没有统计信息情况下,是否允许将估算内存设置为0。 4 max_process_memory_auto_adjust 控制CM在主备切换情况下是否对max_process_memory做动态调整。 5 wlm_memory_feedback_adjust 控制CCN的动态负载管理中的内存负反馈功能是否开启,支持:on、off、on(50,40) 三种设置方式。 6 autoanalyze_mode 新增系统级autoanalyze模式的控制参数(默认normal与前向行为一致,设置为light则启用动态采样)。 7 enable_redactcol_computable 用于设置是否开启数据脱敏可算功能,默认关闭。 8 windowagg_pushdown_enhancement 控制窗口函数和group by同时出现时是否将partition by 和 group by的交集下推。 9 enable_from_collapse_hint 控制是否启用优先选择hint的计划,默认启用,并支持语句级hint参数。 10 enable_value_redistribute 用于设置是否使用value partition stream优化windowagg。 11 setop_optmode 控制setop操作的各个子查询分支是否做去重操作,默认值disable,即不去重,跟8.2.0之前版本保持一致;配置值force:强制走去重;配置值cost,基于cost选择是否去重。(注:setop分支的底层为stream算子的时候才会尝试去重)。 12 security_enable_options 表示安全模式下部分操作解禁,默认为空。 13 audit_object_name_format 控制审计日志中object_name字段显示对象名的格式,默认single,显示单对象。 14 enable_redactcol_equal_const 用于限制新版本脱敏下允许常量套取的行为,默认关闭,禁止脱敏列与常量做等值比较。 15 enable_mixedagg 用于控制是否生成Mixed Agg执行计划,默认关闭。 16 max_streams_per_query 用于控制对stream数量过多的plan在优化器阶段报错,避免stream建连占用过多连接,默认值10000。 17 agg_max_mem 用于控制Agg算子聚集列超过5个时,最大的估算内存,防止估算内存过大导致CCN排队。 18 max_volatile_memory volatile临时表相关内存context的最大量,单位kb,取值范围1024-INT_MAX,默认1GB。 19 max_volatile_tables 单个session中volatile临时表(包括创建时的附属表,如toast、cudesc)的个数限制,默认300。 20 enable_hashfilter 用来控制是否可以生成hashfilter。 21 volatile_shipping_version 控制8.2.0版本sequence下推增强能力,默认1。 22 smp_thread_cost 用于控制生成的query_dop值。默认值为1000。 23 enable_wal_decelerate 用于带索引导入时的流控限速的总开关。 24 wal_decelerate_policy 用于表示触发限速后的行为策略。 25 wal_write_speed 用于表示单DN每个query每秒最大允许触发wal写入动作的速度Byte/s。 26 wal_decelerate_trigger_threshold 用于表示单DN每个query触发wal写入限速的门限。 27 enable_cstore_ring_buffer 控制是否开启列存RingBuffer。 28 enable_tsdb_multi_temperature 控制是否开启时序表的obs冷热功能,默认为关闭。 29 enable_tsdb_multi_temperature 控制是否开启时序表的obs冷热功能,默认为关闭。 30 ddl_lock_timeout 用于单独指定阻塞DDL语句等锁的时间,让DDL拿不到锁快速终止,只对八级锁有效,默认值为0,表示不生效。 31 build_backup_param 控制增量build过程中用于磁盘备份的最小满足规格。 修改 32 comm_tcp_mode 参数类型从POSTMASTER修改为SIGHUP。 33 max_process_memory 进程的最大内存,由POSTMASTER类型修改为SIGHUP;最小阈值为2G,不推荐设置为最小阈值。 34 rewrite_rule 新增eager_magicset枚举值控制magic set增强功能。 35 behavior_compat_options behavior_compat_options新增normal_session_id取值,用于控制是否session id是否拼接node_name,默认关闭,session id拼接node_name。 36 behavior_compat_options merge_into_with_trigger新增behavior_compat_options,开启后支持对有触发器的表执行MERGE INTO,默认关闭 37 behavior_compat_options 增加选项disable_jsonb_exact_match,控制操作符匹配规则,默认关闭; 参数关闭时,仅支持jsonb相关类型的精确匹配;若精确匹配失败,则会在剩余不含jsonb类型的备选中匹配; 参数打开时,行为回退,操作符匹配不区分类型; 38 hashjoin_spill_strategy 新增两种策略5,6。行为与原来0、1相同。原来0、1行为修改。从内表较大内存放不下,外表较小时进行内外表交换,改成内表较大内存放不下,继续划分内表,直到无法划分。在尝试内外表交换, 39 sql_use_spacelimit 对sql_use_spacelimit参数初始值进行设置。将其修改为当前实例所在磁盘的10%(上限),不足10G(下限)时,设置为10G 40 temp_file_limit 对temp_file_limit参数初始值进行设置。将其修改为当前实例所在磁盘的10%(上限),不足10G(下限)时,设置为10G。 删除 41 enable_grant_public 表示安全模式下不支持grant to public语法。 42 enable_grant_option 表示安全模式下不支持grant with grant option语法。
共100000条