华为云用户手册

  • 命令结构 health get workflow ID [flags] 表1 参数说明 参数 简写 是否必选 说明 ID 无 否 不选此参数时,列出当前所在项目的所有流程信息。 指定workflow-id或workflow-name:version:srcproject,列出具体应用的信息,srcproject为源项目名称,可选。不指定srcproject时,默认为当前项目。 --sample -s 否 获取流程模板,模板为yaml格式。 --downloadPath -d 否 获取workflow详情时,将内容下载到的指定文件夹路径(文件夹需要存在)。 --project 无 否 指定项目名。未填写则使用配置文件中的项目名。 --label -l 否 根据label标签搜索workflow
  • 命令示例 获取task列表 health nextflow get task -j "7991e0b4-bffe-4166-ac2e-45a261592dcc" { "tasks": [ { "task_id": "1", "process": "readfile", "hash": "f2/a0f16c", "status": "RUNNING", "container": "swr.xxx/eihealth-0659ea54-5ae6-4e9d-b014-a2b041a26f62/admet:2.0.0.1659942728536", "pod_name": "nf-f2a0f16c66bbe8e28824e8ccabbddd25", "submit": "2023-03-09T08:50:37Z" } ], "count": 1 } 获取task详情 health nextflow get task 1 -j "7991e0b4-bffe-4166-ac2e-45a261592dcc" { "id": "1", "command": "\n echo /test;sleep 1000;echo \"end /test\";\n ", "status": "RUNNING", "exit": 2147483647, "work_dir": "/nextflow/__nextflow_work__/e6dcd289-dadb-48d9-b53b-e0c6c256932e/mb79e5e6-1b14-41b4-ac3b-e8fb0122d64d/f2/a0f16c66bbe8e28824e8ccabbddd25", "module": [], "container": "swr.xxx/eihealth-0659ea54-5ae6-4e9d-b014-a2b041a26f62/admet:2.0.0.1659942728536", "attempt": 1, "execution_time": { "submit": "2023-03-09T08:50:37Z", "start": "2023-03-09T08:50:40Z" }, "resource_requested": { "container": "swr.xxx/eihealth-0659ea54-5ae6-4e9d-b014-a2b041a26f62/admet:2.0.0.1659942728536", "cpus": 1 }, "resource_usage": {} } 获取task日志 health nextflow get task 1 -j "7991e0b4-bffe-4166-ac2e-45a261592dcc" -t logs { "count": 1, "logs": [ "2023-03-09T08:50:44Z /test\n" ] }
  • 命令示例 本节以Windows为例介绍eihealth-toolkit的使用过程,Linux和macOS环境使用方法基本相同,可参考。 修改消息的保留数目 health edit retention message --number 10000 # 执行成功返回结果如下 set the retention of message successfully! 修改已完成作业的保留数目 health edit retention completed-jobs --number 10000 # 执行成功返回结果如下 set the retention of completed-jobs successfully!
  • 命令结构 health get job ID [flags] 表1 参数说明 参数 简写 是否必选 说明 ID 无 否 不选此参数时,列出当前所在项目的所有作业信息。 指定job-id时,列出具体作业的信息。可以同时指定多个job-id。 不带--detail参数,以yaml格式展示作业基本信息。 带--detail参数,以json格式展示作业基本信息。 --detail -d 否 配合ID使用,返回作业的详细信息。 --sample -s 否 获取作业模板,模板为yaml格式。 --limit -l 否 代表当次请求获取的最大查询条数(默认为10)。 --offset -o 否 偏移量,从第几条数据开始查询,默认为0。 --event -e 否 获取作业事件或者作业某一task事件,单独使用表示获取作业事件;与--task一起使用表示获取某一个task事件,并同时输出task实例列表。 --log -g 否 本地存放task日志的路径,必须与--task一起使用以获取作业某一task的日志。 --task -a 否 task名称。如果是并发的task,那么默认获取索引号为0的task实例,如果要查看别的实例,格式: --task task名称;实例索引,如--task task-1;1。 --finish-from-time -x 否 查询任务完成起始时间。例如,2006-01-02 15:04:05。 --finish-to-time -y 否 查询任务完成结束时间。例如,2006-01-02 15:04:05。 --create-from-time -c 否 询任务创建起始时间,例子:--create-from-time="2006-01-02 15:04:05"。 --create-to-time -m 否 询任务创建结束时间,例子:--create-to-time="2006-01-02 15:04:05"。 --labels -k 否 作业标签列表。以","分隔,如:"a,b"。 --status -q 否 作业状态(用于获取作业列表),取值:Succeeded、Running、Pending、Failed、Cancelling、Cancelled、Unknown。 --workflow-name -t 否 流程名。 --user-name -u 否 用户名。 --job-name -j 否 任务名。
  • 命令示例 本节以Windows为例介绍eihealth-toolkit的使用过程,Linux和macOS环境使用方法基本相同,可参考。 使用health get job -s命令获取模板,详细的模板介绍和使用请参见获取作业模板。 获取作业详情,以模板方式展示。 health get job 000c6057-cc6c-11ed-bbec-fa163ef30f89 job: id: 000c6057-cc6c-11ed-bbec-fa163ef30f89 name: job-7402 description: "" priority: 0 timeout: 1440 output_dir: /job-7402-de91a3e0-076c-4327-a41c-8e88c7aec6ae workflow_id: f1af14bb-cc69-11ed-bbec-fa163ef30f89 io_acc_id: "" node_labels: [] tasks: - task_name: task-1-test-echo inputs: [] resources: cpu: 0.1C memory: 0.1G gpu: "0" tool_type: workflow tool_id: f1af14bb-cc69-11ed-bbec-fa163ef30f89 labels: [] 获取作业详情,以json方式展示。 health get job f17a3542-3f7c-11eb-868a-fa163e3ddba1 --detail { "jobs": [{ "id": "2", "name": "zx-1030-mkdir", "description": "测试文件创建", "priority": 0, "timeout": 1440, "output_dir": "", "status": "SUCCEEDED", "create_time": "2021-01-20T03:38:14Z", "finish_time": "2021-01-20T03:43:23Z", "tool_info": { "tool_id": "", "tool_name": "", "tool_version": "", "tool_type": "" }, "tasks": [{ "task_name": "task0", "display_name": "", "output_dir": "", "whole_output_dir": "", "resources": { "cpu": "0.1C", "memory": "0.1G", "gpu_type": "", "gpu": "0" }, "inputs": [{ "name": "in-dir", "values": [ "ei_eihealth_x00356764_02:/zx-1030/" ] }, { "name": "in-str", "values": [ "mkdir1030" ] } ], "app_info": { "app_id": "2", "app_name": "zx-1030-mkdir", "app_version": "1.0.0", "app_src_project_name": "", "app_labels": [], "app_summary": "", "app_description": "", "app_image": "ei_eihealth_x00356764_02/modelarts-base-cpu-py3:custom-2.0.2", "app_commands": [ "mkdir ${in-dir}${in-str}" ], "app_input_parameters": [{ "name": "in-dir", "pattern": "", "type": "DIRECTORY", "required": true, "description": "" }, { "name": "in-str", "pattern": "", "type": "STRING", "required": true, "description": "" } ], "app_output_parameters": [] } }], "task_runtime_info": [{ "task_name": "task0", "status": "SUCCEEDED", "create_time": "2021-01-20 11:38:22", "finish_time": "2021-01-20 11:43:22", "run_time": "5m0s" }], "dag": { "task0": {} }, "io_acc_expected_usage": 10, "io_acc_info": { "id": "35673038-d57b-4dab-942a-72cf3e11e7df", "type": "IO_PERFORMANCE_BANDWIDTH", "space": 500, "free_space": 500.0 } }], "count": 1 } 获取作业列表。 health get job #不带任何参数默认获取100条 job_id job_name tool_name tool_version tool_type status user_name create_time finish_time labels 4b682e15-ab92-11ee-a057-fa163ef319da cli-demo-job cp-test 2.0.0 workflow PENDING wwx-test-admin 2024-01-05 14:18:51 -- e7e55c6e-aaf6-11ee-a057-fa163ef319da cli-demo-job-import cli-demo-workflow 4.0.0 workflow FAILED wwx-test-admin 2024-01-04 19:46:32 2024-01-04 19:47:50 aee9e91a-aaf6-11ee-a057-fa163ef319da job-6685 cli-demo-workflow 4.0.0 workflow FAILED wwx-test-admin 2024-01-04 19:44:56 2024-01-04 19:45:50 58a8f13b-aaf3-11ee-a057-fa163ef319da job cp-test 2.0.0 workflow FAILED wwx-test-admin 2024-01-04 19:21:03 2024-01-04 19:23:54 35ff73b3-aaf3-11ee-a057-fa163ef319da job cp-test 2.0.0 workflow SUCCEEDED wwx-test-admin 2024-01-04 19:20:05 2024-01-04 19:24:52 24b72eee-aaf3-11ee-a057-fa163ef319da job cp-test 2.0.0 workflow SUCCEEDED wwx-test-admin 2024-01-04 19:19:36 2024-01-04 19:25:10 4ccef1fb-aaf2-11ee-a057-fa163ef319da job cp-test 2.0.0 workflow SUCCEEDED wwx-test-admin 2024-01-04 19:13:34 2024-01-04 19:17:34 health get job -j cli-demo-job job_id job_name tool_name tool_version tool_type status user_name create_time finish_time labels 70f1baa8-ab96-11ee-a057-fa163ef319da cli-demo-job cp-test 2.0.0 workflow SUCCEEDED wwx-test-admin 2024-01-05 14:48:32 2024-01-05 14:55:13 6c6098f0-ab96-11ee-a057-fa163ef319da cli-demo-job cp-test 2.0.0 workflow SUCCEEDED wwx-test-admin 2024-01-05 14:48:24 2024-01-05 14:54:25 health get job -l 3 同 health get job -l 3 -o 0 #列出当前project的job的基本信息 #表示取3条数据,也就是取1-3 条数据 health get job -o 10 同 health get job -l 100 -o 10 #列出当前project的job的基本信息 #表示取100条数据,也就是取11-110 100 条数据 health get job -l 10 -o 3 #列出当前project的job的基本信息 #表示跳过3条数据,从第4条数据开始取,取10条数据,也就是取4-13 10条数据 获取作业事件。 health get job 550e8400-e29b-41d4-a716-446655440000 --event ------------------------------------------------------------------------------------------------------------------------ 成功关联执行器 2024-01-05 14:18:51 ------------------------------------------------------------------------------------------------------------------------ 执行 create, 共计 1 个子任务 2024-01-05 14:18:51 ------------------------------------------------------------------------------------------------------------------------ 执行 create, 共计 1 个子任务 2024-01-05 14:18:51 ------------------------------------------------------------------------------------------------------------------------ 创建k8s Job对象 task-3-two-cp-0-bd5e1f7dac10005f 成功. 2024-01-05 14:18:51 ------------------------------------------------------------------------------------------------------------------------ 等待任务 task-3-two-cp-0-bd5e1f7dac10005f 执行完成 2024-01-05 14:18:56 ------------------------------------------------------------------------------------------------------------------------ 元素(task-3-two-cp-0)第1次重试执行(create),当前异常:Failed to wait the Job(task-3-two-cp-0-bd5e1f7dac10005f) has desiredReplicas: the pod list of job:task-3-two-cp-0-bd5e1f7dac10005f is empty . 2024-01-05 14:18:51 ------------------------------------------------------------------------------------------------------------------------ 创建k8s Job对象 task-2-cp-dir-0-bd5e1f7dac10005f 成功. 2024-01-05 14:18:56 ------------------------------------------------------------------------------------------------------------------------ 获取作业某一task事件。 health get job 550e8400-e29b-41d4-a716-446655440000 --event --task task-lmx-job-1 Task event list: Status Times Type Details First Report Time Last Report Time SuccessfulCreate 1 Normal Created pod: task-1-rename-0-1b840133ac100049-hkppv 2022-05-24 18:04:55 2022-05-24 18:04:55 JobIsComplete 1 Normal Pod exits with success, the job is complete 2022-05-24 18:07:09 2022-05-24 18:07:09 Task instances list: Name Status PodIP Node RestartCount Request/Limit(CPU) Request/Limit(Memory) CreateTime task-1-rename-0-1b840133ac100049-hkppv Succeeded 172.16.1.20 192.168.125.40 0 / / 2022-05-24T10:04:55Z 获取并发task的实例事件。 health get job c5b3d272-f398-11ec-845a-fa163ef3fac0 --task task-1-test-bingfasmial;1 --event Task event list: Status Times Type Details First Report Time Last Report Time SuccessfulCreate 1 Normal Created pod: task-1-test-bingfasmial-1-59620029ac100038-jkdpt 2022-06-24 16:37:20 2022-06-24 16:37:20 JobIsComplete 1 Normal Pod exits with success, the job is complete 2022-06-24 16:37:23 2022-06-24 16:37:23 Task instances list: Name PodIP Node RestartCount Request/Limit(CPU) Request/Limit(Memory) CreateTime task-1-test-bingfasmial-1-59620029ac100038-jkdpt 172.16.3.37 192.168.54.255 0 1/1 1G/1G 2022-06-24 16:37:20 获取作业某一task日志。 health get job 550e8400-e29b-41d4-a716-446655440000 --log ./test/demo.log --task task-xxx-job-1 download the log of task task-lmx-job-1 successfully! 获取作业列表。 health get job --status Failed --user-name ei_eihealth --create-from-time "2022-12-15 00:40:11" --create-to-time "2022-12-17 00:40:11" --finish-from-time "2022-12-14 17:05:09" --finish-to-time "2022-12-19 23:04:07" --labels "label1,lab_el-A" --job-name h-err-1 --workflow-name herr --limit 1 --offset 1 job_id job_name tool_name tool_version tool_type status user_name create_time finish_time labels 8a6078d9-c307-11ed-a824-fa163e504fdd job-4127-01 new-01 wewe workflow FAILED ei_eihealth_h00541446_01 2023-03-15 16:01:07 2023-03-15 16:02:51 label1,lab_el-A
  • GaussDB(for MySQL)产品优势 性能强悍:采用计算与存储分离,日志即数据架构,RDMA网络。对于某些业务负载,吞吐量最高可提升至开源MySQL7倍。 弹性扩展:1写15只读节点,分钟级添加只读实例,规格升降级。 高可靠性:跨AZ部署,数据三副本,共享分布式存储,RPO为0,秒级故障倒换。 安全防护:采用共享分布式存储,故障秒级恢复,数据0丢失;采用VPC、安全组、SSL连接和数据加密等严格控制安全访问。 高兼容性:兼容MySQL,应用无需改造即可轻松迁移上云。 海量存储:华为自研DFV分布式存储,容量高达128TB,。
  • 方案架构 本示例中,数据库源端为ECS自建MySQL,目的端为GaussDB(for MySQL)实例,同时假设ECS和GaussDB(for MySQL)实例在同一个VPC中。部署架构如图1所示。 如果自建MySQL和GaussDB(for MySQL)实例不在同一个VPC内,相比于相同VPC的情况,需要配置两个VPC的对等连接,部署架构图如图2所示。 图1 同一VPC的部署架构 图2 不同VPC场景的部署架构
  • 最佳实践汇总 本文汇总了基于数据复制服务(Data Replication Service,简称DRS)常见应用场景的操作实践,每个实践我们提供详细的方案描述和操作指导,用于指导您快速实现数据库迁移和同步。 表1 DRS最佳实践一览表 功能 源数据库类型 目标数据库 实践案例 实时迁移 其他云MySQL数据库 华为云RDS for MySQL 其他云MySQL迁移到云数据库 RDS for MySQL 华为云GaussDB(for MySQL) 其他云MySQL迁移到GaussDB(for MySQL) 其他云MongoDB 华为云DDS 其他云MongoDB迁移到DDS 自建MySQL 华为云RDS for MySQL 自建MySQL迁移到RDS for MySQL ECS自建MySQL 华为云GaussDB(for MySQL) ECS自建MySQL迁移到GaussDB(for MySQL) ECS自建MongoDB 华为云DDS ECS自建MongoDB迁移DDS 本地自建MySQL 华为云RDS for MySQL 本地MySQL迁移到RDS for MySQL 本地自建MongoDB 华为云DDS 本地MongoDB迁移到DDS 华为云RDS for MySQL 分布式数据库中间件DDM RDS for MySQL迁移到DDM MySQL分库分表 分布式数据库中间件DDM MySQL分库分表迁移到DDM 备份迁移 本地Microsoft SQL Server 华为云RDS for SQL Server 本地Microsoft SQL Server备份迁移至本云RDS for SQL Server实例 实时同步 其他云PostgreSQL 华为云RDS for PostgreSQL 其他云PostgreSQL同步到RDS for PostgreSQL ECS自建PostgreSQL ECS自建PostgreSQL同步到RDS for PostgreSQL 本地自建PostgreSQL 本地PostgreSQL同步到RDS for PostgreSQL 本地自建MySQL 华为云GaussDB分布式版 本地MySQL同步到GaussDB分布式版 本地自建Oracle 华为云GaussDB分布式版 本地Oracle同步到GaussDB分布式版 华为云GaussDB主备版 本地Oracle同步到GaussDB主备版 分布式数据库中间件DDM 本地Oracle同步到DDM 华为云RDS for MySQL 分布式消息服务Kafka RDS for MySQL同步到Kafka 实时灾备 华为云RDS for MySQL 华为云RDS for MySQL RDS for MySQL通过DRS搭建异地单主灾备
  • 入门实践 当您将防护网站接入Web应用防火墙(WAF)后,可以根据自身业务场景使用WAF的一系列常用实践。 表1 常用最佳实践 实践 描述 域名接入 单独使用WAF配置指导 网站没有接入WAF前,DNS直接解析到源站的IP。网站接入WAF后,需要把DNS解析到WAF的CNAME,这样流量才会先经过WAF,WAF再将流量转到源站,实现网站流量检测和攻击拦截。 本文介绍通过DNS配置模式接入WAF时,如何在已添加网站配置后,配置域名解析,实现业务接入。 使用DDoS高防和WAF提升网站全面防护能力 “DDoS高防+WAF”组合可以对华为云、非华为云或云下的域名进行联动防护,同时防御DDoS攻击和Web应用攻击,确保业务持续可靠运行。 防御DDoS攻击:NTP Flood攻击、SYN Flood攻击、ACK Flood攻击、ICMP Flood攻击、HTTP Get Flood攻击等。 防御Web应用攻击:SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等。 使用CDN和WAF提升网站防护能力和访问速度 “CDN+WAF”组合可以对华为云、非华为云或云下的域名进行联动防护,同时提升网站的响应速度和网站防护能力。 使用独享WAF和7层ELB以防护任意非标端口 如果您需要防护WAF支持的端口以外的非标端口,可参考本章节配置WAF的独享模式和7层ELB联动,实现任意端口业务的防护。 CDN回源OBS桶场景下连接WAF提升OBS安全防护 当您的网站域名开启了华为云CDN加速,且回源到华为云对象存储 OBS(Object Storage Service,OBS)时,如果该网站存在一定的Web攻击风险,我们推荐您组合使用CDN、OBS和Web 应用防火墙 WAF(Web Application Firewall),将开启CDN加速的域名接入WAF,实现OBS的安全防护。本文介绍如何为业务同时部署CDN、OBS、WAF。 策略防护 CC攻击防御最佳实践 基于Web应用防火墙实践编写,指导您在遭遇CC(Challenge Collapsar)攻击时,完成基于IP限速和基于Cookie字段识别的防护规则配置。 使用WAF阻止爬虫攻击 Web应用防火墙可以通过Robot检测(识别User-Agent)、网站反爬虫(检查浏览器合法性)和CC攻击防护(限制访问频率)三种反爬虫策略,帮您解决业务网站遭受的爬虫问题。 使用Postman工具模拟业务验证全局白名单规则 当防护网站成功接入WAF后,您可以使用接口测试工具模拟用户发起各类HTTP(S)请求,验证配置的WAF防护规则是否生效,检验防护效果。 本实践以Postman工具为例,说明如何验证全局白名单(原误报屏蔽)规则。 使用WAF和HSS提升网页防篡改能力 主机安全HSS网页防篡改功能和Web应用防火墙“双剑合璧”,杜绝网页篡改事件发生。 Web漏洞防护 Java Spring框架远程代码执行高危漏洞 Spring是一款主流的Java EE轻量级开源框架,面向服务器端开发设计。Spring框架被曝出可导致RCE远程代码执行的漏洞,该漏洞攻击面较广,潜在危害严重,对JDK 9及以上版本皆有影响。 Apache Dubbo反序列化漏洞 2020年02月10日,华为云安全团队监测到Apache Dubbo官方发布了CVE-2019-17564漏洞通告,漏洞等级中危。当用户选择http协议进行通信时,攻击者可以通过发送POST请求的时候来执行一个反序列化的操作,由于没有任何安全校验,该漏洞可以造成反序列化执行任意代码。目前,华为云Web应用防火墙(Web Application Firewall,WAF)提供了对该漏洞的防护。 开源组件Fastjson拒绝服务漏洞 2019年09月03日,华为云安全团队检测到应用较广的开源组件Fastjson的多个版本出现拒绝服务漏洞。攻击者利用该漏洞,可构造恶意请求发给使用了Fastjson的服务器,使其内存和CPU耗尽,最终崩溃,造成用户业务瘫痪。目前,华为云Web应用防火墙(Web Application Firewall,WAF)提供了对该漏洞的防护。 开源组件Fastjson远程代码执行漏洞 2019年07月12日,华为云应急响应中心检测到开源组件Fastjson存在远程代码执行漏洞,此漏洞为2017年Fastjson 1.2.24版本反序列化漏洞的延伸利用,可直接获取服务器权限,危害严重。 Oracle WebLogic wls9-async反序列化远程命令执行漏洞(CNVD-C-2019-48814) 2019年04月17日,华为云应急响应中心检测到国家信息安全漏洞共享平台(China National Vulnerability Database,CNVD)发布的Oracle WebLogic wls9-async组件安全公告。Oracle WebLogic wls9-async组件在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意HTTP请求获取目标服务器权限,在未授权的情况下远程执行命令,CNVD对该漏洞的综合评级为“高危”。 LTS日志分析 通过LTS查询分析WAF访问日志 开启WAF全量日志功能后,您可以将攻击日志、访问日志记录到云日志服务(Log Tank Service,简称LTS)中。通过LTS记录的WAF日志数据,快速高效地进行实时决策分析、设备运维管理以及业务趋势分析。 通过LTS分析Spring core RCE漏洞的拦截情况 对WAF攻击日志开启LTS快速分析功能,通过Spring规则ID快速查询、分析被拦截的Spring core RCE漏洞日志。 通过LTS配置WAF规则的拦截告警 本实践对WAF攻击日志开启LTS快速分析功能,再配置告警规则,实现WAF规则拦截日志的分析及告警,实时洞察您的业务在WAF中的防护情况并作出决策分析。 TLS加密配置 通过配置TLS最低版本和加密套件提升客户端访问域名的通道安全 HTTPS协议是由“TLS(Transport Layer Security,传输层安全性协议)+HTTP协议”构建的可进行加密传输、身份认证的网络协议。 当域名接入WAF时,如果客户端采用HTTPS协议请求访问服务器(即防护域名的“对外协议”配置为“HTTPS”),您可以通过为域名配置最低TLS版本和加密套件来确保网站安全。 源站安全保护实践 通过配置ECS/ELB访问控制策略保护源站安全 介绍源站服务器部署在华为云弹性云服务器(以下简称ECS)、或华为云弹性负载均衡(以下简称ELB)时: 如何判断源站是否存在泄漏风险? 如何配置访问控制策略保护源站安全? 获取客户端真实IP 获取客户端真实IP 介绍通过WAF直接获取真实IP的方法,以及不同类型的Web应用服务器(包括Tomcat、Apache、Nginx、IIS 6和IIS 7)如何进行相关设置,以获取客户端的真实IP。 安全与治理 Web网站基础安全防护 帮助企业网站业务流量进行多维度检测和防护,避免网站被黑客恶意攻击和入侵。 基于开源Modsecurity构建WAF ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),它可以通过检查Web服务接收到的数据,以及发送出去的数据对网站进行安全防护。 该解决方案帮助您在华为云弹性云服务器上基于开源ModSecurity软件,一键部署实现Web应用防火墙(WAF)功能;配合Nginx的灵活与高效,有效的增强Web安全性。 等保二级解决方案 华为云等保二级解决方案适用于如下用户场景: 接到相关部门通知需要做安全整改。 新业务需要做安全防护。 业务遭受攻击导致企业效益受损,或无法正常办公。 WAF用来对业务流量进行多维度检测和防护。 等保合规安全解决方案 华为云依托自身安全能力与安全合规生态,为客户提供一站式的安全解决方案,帮助客户快速、低成本完成安全整改,轻松满足等保合规要求。
  • 步骤三:配置防护策略 网站接入WAF后,WAF会自动为该网站绑定一个防护策略,并开启“Web基础防护”中的“常规检测”(拦截模式为“仅记录”,“防护等级”为“中等”)和“网站反爬虫”的“扫描器”检测(防护动作为“仅记录”)。 如果您没有特殊的安全防护要求,您可以保持默认配置,随时通过“防护事件”查看WAF防护日志。具体操作,请参见查看防护日志。 如果您的网站遭遇Web攻击,您可以根据“总览”和“防护事件”的攻击详情,配置对应的防护策略。具体操作,请参见为策略添加防护规则。
  • 使用说明 由于云审计服务的关键操作通知需要使用消息通知服务向相关的订阅者发送通知,因此需要提前了解消息通知服务的创建主题、添加订阅等操作。 云审计服务支持创建100个关键操作通知: 自定义类型的关键操作通知支持单独设置触发操作范围、指定操作用户和通知主题。 完整类型的关键操作通知,支持通知主题。 如果云审计服务和云监控服务使用同一消息主题,则接受终端一样,但是发送的内容不同。 单个关键操作通知支持最多对10个用户组的50个用户发起的操作进行通知配置。单个关键操作通知不支持一次选择多个用户组,但是可以分次添加不同用户组中的用户在同一个关键操作通知。
  • 操作场景 云审计服务管理控制台支持对已创建的管理类追踪器增加OBS转储、LTS转储等相关配置。 用户可以选择是否将已记录的事件发送到OBS桶永久保存。如果用户想要对管理类事件进行统一管理,还可以设置将多个账号记录的事件统一转储到一个OBS桶。 OBS桶有标准存储、低频访问存储和归档存储三种类型。由于云审计服务需要高频次的访问转储的OBS桶,因此必须使用标准存储类型的OBS桶。 配置追踪器完成后,系统立即以新的规则开始记录操作。 本节介绍如何配置管理类事件追踪器。
  • 操作场景 云审计服务管理控制台支持配置已开启的追踪器的OBS桶、LTS转储和配置已创建的追踪器关键事件操作通知。 用户可选择已存在的OBS桶。云审计服务会自动为该OBS桶挂载转储所需的桶策略。 当配置云审计服务的追踪器中的“事件文件前缀”时,不影响对应OBS桶的策略。 如果用户想要对数据类事件进行统一管理,可以设置将多个追踪对象的事件转储到同一个OBS桶。 OBS桶有标准存储、低频访问存储和归档存储三种类型。由于云审计服务需要高频次的访问转储的OBS桶,因此必须使用标准存储类型的OBS桶。 配置追踪器完成后,系统立即以新的规则开始记录操作。 本节介绍如何配置数据类事件追踪器。
  • 使用说明 由于云审计服务的关键操作通知需要使用消息通知服务向相关的订阅者发送通知,因此需要提前了解消息通知服务的创建主题、添加订阅等操作。 云审计服务支持创建100个关键操作通知: 自定义类型的关键操作通知支持单独设置触发操作范围、指定操作用户和通知主题。 完整类型的关键操作通知,支持通知主题。 如果云审计服务和云监控服务使用同一消息主题,则接受终端一样,但是发送的内容不同。 单个关键操作通知支持最多对10个用户组的50个用户发起的操作进行通知配置。单个关键操作通知不支持一次选择多个用户组,但是可以分次添加不同用户组中的用户在同一个关键操作通知。
  • 关联服务 对象存储服务(Object Storage Service,简称OBS):存储事件文件。 由于云审计服务需要高频次的访问转储的OBS桶,因此必须选择使用标准存储类型的OBS桶。 数据加密服务(Data Encryption Workshop,简称DEW):为事件文件加密功能提供密钥。 云日志服务(Log Tank Service,简称LTS):提供日志存储功能。 消息通知服务(Simple Message Notification,简称SMN):检测到关键操作时,调用消息通知服务向用户发送邮件、短信通知。
  • 操作场景 用户首次进入云审计服务时,在追踪器页面单击“开通云审计服务”,系统会自动为您创建一个名为system的管理追踪器,之后您也可以在追踪器页面创建多个数据追踪器。管理追踪器会自动识别并关联当前租户所使用的所有云服务,并将当前租户的所有操作记录在该追踪器中。数据追踪器会记录租户对OBS桶中的数据操作的详细信息。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。
  • 使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 数据库对象 表1 schema对象 序号 Oracle数据库 GaussDB数据库 差异 1 分析视图 不支持 - 2 属性维度 不支持 - 3 集群 支持 - 4 约束 支持 - 5 数据库链接 支持 - 6 数据库触发器 支持 - 7 尺寸 支持 - 8 外部过程库 不支持 - 9 分层结构 不支持 - 10 索引组织表 不支持 - 11 索引 支持 - 12 索引类型 不支持 - 13 java类 不支持 - 14 java资源 不支持 - 15 java源码 不支持 - 16 join groups 不支持 - 17 物化视图 支持 - 18 物化视图日志 不支持 - 19 挖掘模型 不支持 - 20 对象表 不支持 - 21 对象类型 不支持 - 22 对象视图 不支持 - 23 operators 支持 - 24 包 支持 - 25 序列 支持 - 26 存储函数 支持 - 27 存储过程 支持 - 28 同义词 支持,有差异 Oracle数据库的数据库对象在同一namespace内不能重名。GaussDB同一namespace内同义词可与表、视图、函数、package重名,如果重名,会优先访问本名对象,未寻找到本名对象时才会寻找同义词指向的对象;Schema名是用户名时才会搜索PUBLIC同义词。 29 表 支持 - 30 视图 支持 - 31 zone map 不支持 - 表2 nonschema对象 序号 Oracle数据库 GaussDB数据库 1 上下文 不支持 2 目录 支持 3 版本 不支持 4 闪回存档 不支持 5 锁定配置文件 不支持 6 配置文件 不支持 7 还原点 支持 8 角色 支持 9 回滚段 ustore支持回滚段 astore不支持回滚段 10 表空间 支持 11 表空间集 不支持 12 统一审计策略 支持 13 用户 支持 父主题: SQL的基本元素
  • 数据库对象 表1 schema对象 序号 Oracle数据库 GaussDB数据库 差异 1 分析视图 不支持 - 2 属性维度 不支持 - 3 集群 支持 - 4 约束 支持 - 5 数据库链接 支持 - 6 数据库触发器 支持 - 7 尺寸 支持 - 8 外部过程库 不支持 - 9 分层结构 不支持 - 10 索引组织表 不支持 - 11 索引 支持 - 12 索引类型 不支持 - 13 java类 不支持 - 14 java资源 不支持 - 15 java源码 不支持 - 16 join groups 不支持 - 17 物化视图 支持 - 18 物化视图日志 不支持 - 19 挖掘模型 不支持 - 20 对象表 不支持 - 21 对象类型 不支持 - 22 对象视图 不支持 - 23 operators 支持 - 24 包 支持 - 25 序列 支持 - 26 存储函数 支持 - 27 存储过程 支持 - 28 同义词 支持,有差异 Oracle数据库的数据库对象在同一namespace内不能重名;GaussDB内同一namespace内同义词可与表、视图、函数、package重名,重名时,优先访问本名对象,未寻找到本名对象时才会寻找同义词指向的对象;Schema名是用户名时才会搜索PUBLIC同义词。 29 表 支持 - 30 视图 支持 - 31 zone map 不支持 - 表2 nonschema对象 序号 Oracle数据库 GaussDB数据库 1 上下文 不支持 2 目录 支持 3 版本 不支持 4 闪回存档 不支持 5 锁定配置文件 不支持 6 配置文件 不支持 7 还原点 支持 8 角色 支持 9 回滚段 ustore支持回滚段 astore不支持回滚段 10 表空间 支持 11 表空间集 不支持 12 统一审计策略 支持 13 用户 支持 父主题: SQL的基本元素
  • 关键字 约束差异: 当关键字在M-Compatibility模式下为保留关键字,在MySQL中为非保留关键字,其差异为:在M-Compatibility模式下不可作为表名、列名、列别名、AS列别名、AS表别名、表别名、函数名和变量名,在MySQL中支持。 当关键字在M-Compatibility模式下为非保留关键字,在MySQL中为保留关键字,其差异为:在M-Compatibility模式下可作为表名、列名、列别名、AS列别名、AS表别名、表别名、函数名和变量名,在MySQL中不支持。 当关键字在M-Compatibility模式下为保留关键字(可以是函数或类型),在MySQL中为保留关键字,其差异为:在M-Compatibility模式下可作为列别名、AS列别名、函数名和变量名,在MySQL中不支持。 当关键字在M-Compatibility模式下为保留关键字(可以是函数或类型),在MySQL中为非保留关键字,其差异为:在M-Compatibility模式下不可作为表名、列名、AS表别名和表别名,在MySQL中支持。 当关键字在M-Compatibility模式下为非保留关键字(不能是函数或类型),在MySQL中为保留关键字,其差异为:在M-Compatibility模式下可作为表名、列名、列别名、AS列别名、AS表别名、表别名和变量名,在MySQL中不支持。 当关键字在M-Compatibility模式下为非保留关键字(不能是函数或类型),在MySQL中为非保留关键字,其差异为:在M-Compatibility模式下不可作为函数名,在MySQL中支持。 在M-Compatibility模式下的非保留关键字、保留关键字(可以是函数或类型)以及非保留关键字(不能是函数或类型)之中,以下关键字不能作为列别名进行使用: BETWEEN、BIGINT、BLOB、CHAR、CHARACTER、CROSS、DEC、DECIMAL、DIV、DOUBLE、EXISTS、FLOAT、FLOAT4、FLOAT8、GROUPING、INNER、INOUT、INT、INT1、INT2、INT3、INT4、INT8、INTEGER、JOIN、LEFT、LIKE、LONGBLOB、LONGTEXT、MEDIUMBLOB、MEDIUMINT、MEDIUMTEXT、MOD、NATURAL、NUMERIC、OUT、OUTER、PRECISION、REAL、RIGHT、ROW、ROW_NUMBER、SIGNED、SMALLINT、SOUNDS、TINYBLOB、TINYINT、TINYTEXT、VALUES、VARCHAR、VARYING、WITHOUT 其中,SIGNED和WITHOUT在MySQL中可以作为列别名进行使用。 父主题: SQL
  • SQL查询和子查询 GaussDB数据库兼容除分层查询以外的SQL查询和子查询。 表1 SQL查询和子查询 序号 Oracle数据库 GaussDB数据库 差异 1 创建简单查询 支持。 - 2 分层查询 不支持。 - 3 UNION [ALL],INTERSECT,减运算符 支持。 - 4 查询结果排序 支持,有差异。 GaussDB查询不包含分组,且目标列同时包含聚集函数和集合返回函数时,不忽略对集合返回函数列的排序。 5 Joins 支持,有差异。 GaussDB只支持和Oracle相同的Join Types,如left、right、self 、natural、full outer join等。不支持In-Memory Join Groups等Join Optimizations方法。 6 使用子查询 支持。 - 7 嵌套子查询的解嵌套 支持,有差异。 GaussDB不支持显式指定HASH_AJ或MERGE_AJ。 8 分布式查询 支持,有差异。 GaussDB需要显式DBLINK查询。 9 聚集函数嵌套 支持。 - 父主题: 分布式
  • 排序规则 GaussDB数据库支持指定模式、表或列的排序规则,支持的范围如下。 排序规则差异说明: 当前仅有字符串类型、部分二进制类型支持指定排序规则,其他类型不支持指定排序规则,可以通过查询pg_type系统表中类型的typcollation属性不为0来判断该类型支持字符序。MySQL中所有类型可以指定字符序,但除字符串、二进制类型其他排序规则无实际意义。 当前排序规则(除binary外)仅支持在其对应字符集与库级字符集一致时可以指定,GaussDB数据库中,字符集必须与数据库的字符集一致,且不支持表内多种字符集混合使用。 utf8mb4字符集下默认字符序为utf8mb4_general_ci,与MySQL5.7保持一致。 表1 排序规则列表 序号 MySQL数据库 GaussDB数据库 1 utf8mb4_general_ci 支持 2 utf8mb4_unicode_ci 支持 3 utf8mb4_bin 支持 4 gbk_chinese_ci 支持 5 gbk_bin 支持 6 gb18030_chinese_ci 支持 7 gb18030_bin 支持 8 binary 支持 9 utf8mb4_0900_ai_ci 支持 10 utf8_general_ci 支持 11 utf8_bin 支持 12 utf8_unicode_ci 支持 父主题: MySQL数据库兼容性M-Compatibility模式
  • 获取结果集中的数据 ResultSet对象提供了丰富的方法,以获取结果集中的数据。获取数据常用的方法如表1所示,其他方法请参考JDK官方文档。 表1 ResultSet对象的常用方法 方法 描述 差异 int getInt(int columnIndex) 按列标获取int型数据。 - int getInt(String columnLabel) 按列名获取int型数据。 - String getString(int columnIndex) 按列标获取String型数据。 字段类型为整型且带有ZEROFILL属性时,GaussDB按照ZEROFILL属性要求的宽度信息用0进行补位后输出结果,MySQL直接输出结果。 String getString(String columnLabel) 按列名获取String型数据。 字段类型为整型且带有ZEROFILL属性时,GaussDB按照ZEROFILL属性要求的宽度信息用0进行补位后输出结果,MySQL直接输出结果。 Date getDate(int columnIndex) 按列标获取Date型数据 - Date getDate(String columnLabel) 按列名获取Date型数据。 -
  • 字符串数据类型 表1 字符串数据类型 序号 MySQL数据库 GaussDB数据库 差异 1 CHAR(M) 支持,存在差异 输入格式: 输入二进制或十六进制字符串,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 GaussDB不支持转义字符输入,MySQL支持。 2 VARCHAR(M) 支持,存在差异 输入格式: GaussDB的自定义函数参数和返回值不支持长度校验,存储过程参数不支持长度校验,MySQL支持。 GaussDB的自定义函数和存储过程中的临时变量支持长度校验以及严格宽松模式下的报错和截断告警,MySQL不支持。 GaussDB不支持转义字符输入,MySQL支持。 输入二进制或十六进制字符串,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 3 TINYTEXT 支持,存在差异 输入格式: GaussDB不支持转义字符输入,MySQL支持。 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中TINYTEXT类型不支持主键,GaussDB支持。 索引:MySQL中TINYTEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 4 TEXT 支持,存在差异 输入格式: GaussDB不支持转义字符输入,MySQL支持。 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中TEXT类型不支持主键,GaussDB支持。 索引:MySQL中TEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 5 MEDIUMTEXT 支持,存在差异 输入格式: GaussDB不支持转义字符输入,MySQL支持。 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中MEDIUMTEXT类型不支持主键,GaussDB支持。 索引:MySQL中MEDIUMTEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 6 LONGTEXT 支持,存在差异 输入格式: GaussDB只支持不超过1G字节长度,MySQL支持4G-1字节长度。 GaussDB不支持转义字符输入,MySQL支持。 默认值:创建表列时语法上允许设置默认值,MySQL不允许设置默认值。 输入二进制或十六进制字符串,GaussDB输出为十六进制,MySQL中根据ASCII码表转义,无法转义的输出为空。 主键:MySQL中LONGTEXT类型不支持主键,GaussDB支持。 索引:MySQL中LONGTEXT类型不支持除前缀索引外其他索引方法,GaussDB支持。 父主题: 数据类型
  • 流量控制函数 表1 流量控制函数列表 序号 MySQL数据库 GaussDB数据库 差异 1 IF() 支持 expr1入参仅支持bool类型。非bool类型入参若不能转换为bool类型则报错。 若expr2、expr3两入参类型不同且两类型间不存在隐式转换函数则报错。 两入参类型相同时,返回该入参类型。 若expr2、expr3两入参类型分别为NUMERIC、STRING或TIME其中一个时,输出为TEXT类型,MySQL输出为VARCHAR类型。 2 IFNULL() 支持 若expr1、expr2两入参类型不同且两类型间不存在隐式转换函数则报错。 两入参类型相同时,返回该入参类型。 若expr1、expr2两入参类型范畴分别为NUMEIRC、STRING或TIME其中一个时,输出为TEXT类型,MySQL输出为VARCHAR类型。 两入参类型其中一个为FLOAT4类型另一个为numeric范畴中任一类型,返回值为DOUBLE类型。MySQL其中一入参为FLOAT4,另一入参为TINYINT、UNSIGNED TINYINT、SMALLINT、UNSIGNED SMALLINT、MEDIUMINT、UNSIGNED MEDIUMINT、BOOL任一类型时,返回FLOAT4类型,第一个入参为FLOAT4,第二个入参为BIGINT或UNSIGNED BIGINT时,返回FLOAT类型。 3 NULLIF() 支持 GaussDB中NULLIF()类型推导遵从以下逻辑: 如果两个参数的数据类型不同,且两入参类型存在等值比较操作符,则返回对应等值操作符对应的左值类型,否则会对两入参类型进行强制类型兼容。 若强制类型兼容后,存在等值比较操作符,则返回强制类型兼容后对应等值操作符的左值类型。 若强制类型兼容后,仍找不到对应等值操作符,则报错。 --两入参类型存在等值比较操作符 gaussdb=# select pg_typeof(nullif(1::int2, 2::int8)); pg_typeof ----------- smallint (1 row) --两入参类型不存在等值比较操作符,但在强制类型兼容后可以找到等值比较操作符 gaussdb=# select pg_typeof(nullif(1::int1, 2::int2)); pg_typeof ----------- bigint (1 row) --两入参类型不存在等值比较操作符,且强制类型兼容后也不存在等值比较操作符 gaussdb=# SELECT nullif(1::bit, '1'::MONEY); ERROR: operator does not exist: bit = money LINE 1: SELECT nullif(1::bit, '1'::MONEY); ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. CONTEXT: referenced column: nullif MySQL输出类型仅与第一个入参类型有关: 第一个入参为tinyint、smallint、mediumint、int、bool时,输出为int类型。 第一个入参为bigint时,输出为bigint类型。 第一个入参为unsigned tinyint、unsigned smallint、unsigned mediumint、unsigned int、bit时,输出为unsigned int类型。 第一个入参为unsigned bigint时,输出为unsigned bigint。 第一个入参为浮点型即float、double、real时,输出为double类型。 第一个入参类型为decimal或numeric类型时,输出为decimal类型。 第一个入参类型为时间类型或字符串类型即date、time、date、datetime、timestamp、char、varchar以及tinytext、enum、set时,输出为varchar类型。 第一个入参类型为text、mediumtext、longtext时,输出为longtext类型。 第一个入参类型为tinyblob时,输出为varbinary类型。 第一个入参类型为mediumblob或longblob时,输出为longblob类型。 第一个入参为blob时,输出为blob类型。 4 ISNULL() 支持 GaussDB中返回值为BOOLEAN类型的t或f,MySQL中返回值为INT类型的1或0。 父主题: 系统函数
  • 聚合函数 表1 聚合函数列表 序号 MySQL数据库 GaussDB数据库 差异 1 GROUP_CONCAT() 支持 当group_concat参数中同时有DISTINCT和ORDER BY语法时,所有ORDER BY后的表达式必须也在DISTINCT的表达式之中。 group_concat(... order by 数字)不代表按照第几个参数的顺序,数字只是一个常量表达式,相当于不排序。 无论参数的数据类型如何,group_concat返回值的数据类型始终为text;MySQL的group_concat在含有二进制类型参数时,返回值为二进制类型,其他情况返回值为字符串类型,并且返回值长度大于512时,其数据类型为字符串大对象或二进制大对象。 GUC参数group_concat_max_len有效范围是0-1073741823,最大值比MySQL小。 2 DEFAULT() 支持 字段默认值为数组形式,GaussDB返回数组形式,MySQL不支持数组类型。 GaussDB字段是隐藏列(比如xmin、cmin),函数返回空值。 GaussDB支持分区表、临时表、多表连接查询默认值。 GaussDB支持查询列名包含字符串值节点(表示名称)和A_Star节点(表示出现“*”),如default(tt.t4.id)和default(tt.t4.*)。不合法的查询列名和A_Star节点,GaussDB和MySQL报错信息有差异。 GaussDB创建字段默认值,没有检验字段类型的范围,使用default函数可能报错。 字段的默认值是函数表达式时,GaussDB的default函数返回建表时字段的default表达式的计算值。MySQL的default函数返回NULL。 父主题: 系统函数
  • 静态SQL 表1 静态查询 SQL语句 序号 Oracle数据库 GaussDB数据库 差异 1 SELECT 支持,有差异。 GaussDB和Oracle在某些场景下有不同。 GaussDB中FOR SHARE对检索出来的行加共享锁,不同事务的共享锁不会互相阻塞。若数据在一个事务中被FOR SHARE锁定,在另一个事务中使用SELECT FOR SHARE SKIP LOCKED时,SKIP LOCKED不会跳过锁。 表2 静态DML SQL语句 序号 Oracle数据库 GaussDB数据库 1 INSERT 支持 2 UPDATE 支持 3 DELETE 支持 4 MERGE 支持 5 LOCK TABLE 支持 表3 静态TCL SQL语句 序号 Oracle数据库 GaussDB数据库 差异 1 COMMIT 支持。 - 2 ROLLBACK 支持。 - 3 SAVEPOINT 支持。 - 4 SET TRANSACTION 支持,有差异。 GaussDB不支持NAME string语法、USE ROLLBACK SEGMENT rollback_segment语法。 表4 伪列 序号 Oracle数据库 GaussDB数据库 差异 1 CURRVAL and NEXTVAL 支持。 - 2 LEVEL 不支持。 - 3 OBJECT_VALUE 不支持。 - 4 ROWID 不支持。 - 5 ROWNUM 支持,有差异。 不推荐ROWNUM条件用于JOIN ON子句。 GaussDB中ROWNUM条件用于JOIN ON子句时在LEFT JOIN、RIGHT JOIN、FULL JOIN场景下和MERGE INTO场景下与其他数据库行为不一致,直接进行业务迁移存在风险。 表5 隐式游标属性 序号 Oracle数据库 GaussDB数据库 差异 1 SQL%FOUND 支持,有差异。 GaussDB在commit\rollback之后不刷新隐式游标结果,Oracle会在commit\rollback之后刷新隐式游标结果。 2 SQL%NOTFOUND 支持,有差异。 3 SQL%ROWCOUNT 支持,有差异。 4 SQL%ISOPEN 支持,有差异。 5 SQL%BULK_ROWCOUNT 不支持。 6 SQL%BULK_EXCEPTIONS 不支持。 表6 显式游标语法及关键字 序号 Oracle数据库 GaussDB数据库 1 CURSOR cursor_name [ parameter_list ] RETURN return_type; 支持 2 CURSOR cursor_name [ parameter_list ] [ RETURN return_type ] IS select_statement; 支持 3 OPEN 支持 4 CLOSE 支持 5 FETCH 支持 6 CURRENT OF CURSOR 支持 表7 显式游标属性 序号 Oracle数据库 GaussDB数据库 1 SQL%FOUND 支持 2 SQL%NOTFOUND 支持 3 SQL%ROWCOUNT 支持 4 SQL%ISOPEN 支持 表8 游标循环 序号 Oracle数据库 GaussDB数据库 1 FOR LOOP 支持 表9 自治事务支持场景 序号 Oracle数据库 GaussDB数据库 1 存储过程 支持 2 匿名块 支持 3 函数 支持 4 Package 支持 父主题: PL/SQL语言
  • 加密函数 表1 加密函数列表 序号 MySQL数据库 GaussDB数据库 差异 1 AES_DECRYPT() 支持 ecb为不安全加密模式,GaussDB不支持,默认为cbc模式。 GaussDB中,当指定数据库使用的字符编码是SQL_ASCII时,服务器把字节值0-127根据ASCII标准解释,而字节值128-255则当作无法解析的字符;如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助你转换或者校验非ASCII字符。 MySQL的返回值类型为BINARY、VARBINARY、BLOB、MEDIUMBLOB、LONGBLOB,GaussDB返回值类型固定为LONGBLOB。 2 AES_ENCRYPT() 支持 3 SHA()/SHA1() 支持 - 4 SHA2() 支持 - 父主题: 系统函数
  • 聚合函数 表1 聚合函数列表 序号 MySQL数据库 GaussDB数据库 差异 1 GROUP_CONCAT() 支持 当group_concat参数中同时有DISTINCT和ORDER BY语法时,所有ORDER BY后的表达式必须也在DISTINCT的表达式之中。 group_concat(... order by 数字)不代表按照第几个参数的顺序,数字只是一个常量表达式,相当于不排序。 无论参数的数据类型如何,group_concat返回值的数据类型始终为text;MySQL的group_concat在含有二进制类型参数时,返回值为二进制类型,其他情况返回值为字符串类型,并且返回值长度大于512时,其数据类型为字符串大对象或二进制大对象。 GUC参数group_concat_max_len有效范围是0-1073741823,最大值比MySQL小。 2 DEFAULT() 支持 字段默认值为数组形式,GaussDB返回数组形式,MySQL不支持数组类型。 GaussDB字段是隐藏列(比如xmin、cmin),default函数返回空值。 GaussDB支持分区表、临时表、多表连接查询默认值。 GaussDB支持查询列名包含字符串值节点(表示名称)和A_Star节点(表示出现“*”),如default(tt.t4.id)和default(tt.t4.*)。不合法的查询列名和A_Star节点,GaussDB和MySQL报错信息有差异。 GaussDB创建字段默认值,没有检验字段类型的范围,使用default函数可能报错。 字段的默认值是函数表达式时,GaussDB的default函数返回建表时字段的default表达式的计算值。MySQL的default函数返回NULL。 父主题: 系统函数
  • MySQL数据库兼容性概述 本文档主要介绍GaussDB数据库的MySQL 5.7兼容模式(即sql_compatibility = 'MYSQL'、且设置参数b_format_version='5.7'、b_format_dev_version='s1'时)与MySQL5.7数据库的兼容性对比信息。仅介绍503.0.0版本后新增的兼容性特性,特性的相关规格和约束建议在开发者指南中查看。 GaussDB数据库在数据类型、SQL功能和数据库对象等基本功能上与MySQL数据库兼容。 由于GaussDB数据库与MySQL数据库底层框架实现存在差异,GaussDB数据库与MySQL数据库仍存在部分差异。 父主题: MySQL数据库兼容MySQL模式
共100000条