云服务器内容精选

  • 事务 不支持Savepoints。 不支持XA语法(DDM内部已经通过XA实现了分布式事务,不需要用户层再处理这个语义)。 不支持自定义事务隔离级别,目前DDM只支持READ COMMITTED隔离级别。考虑到兼容性因素,对于设置数据库隔离级别的语句(如SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ),DDM不会报错,但会忽略对事务隔离级别的修改。 不支持设置事务为只读(START TRANSACTION READ ONLY),考虑到兼容性因素,DDM会将只读事务的开启自动转换为开启读写事务。
  • SQL语法使用限制 SELECT 不支持DISTINCTROW。 不支持[HIGH_PRIORITY]、[STRAIGHT_JOIN]、 [SQL_SMALL_RESULT]、 [SQL_BIG_RESULT] 、[SQL_BUFFER_RESULT] 、[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]等选项放在DDM实例下面。 不支持SELECT ... GROUP BY ... WITH ROLLUP语句。 不支持SELECT ... ORDER BY ... WITH ROLLUP语句。 不支持WITH语句。 不支持不同排序规则的联表查询。 不支持窗口函数。 SELECT FOR UPDATE仅支持简单查询,不支持join、group by、order by、limit等语句。用于修饰FOR UPDATE的[NOWAIT | SKIP LOCKED]选项对于DDM无效。 对于UNION中的每个SELECT, DDM暂不支持使用多个同名的列。 例如:如下SQL的SELECT中存在重复的列名。 SELECT id, id, name FROM t1 UNION SELECT pk, pk, name FROM t2; 排序与Limit LIMIT/OFFSET参数支持范围为0-2147483647。 聚合 不支持group by语句后添加asc或desc函数来实现排序语义。 DDM自动忽略group by后的asc或desc关键字。 MySQL 8.0.13以下版本支持group by后添加asc或desc函数来实现排序语义,8.0.13及以上版本已废弃该用法,使用时会报语法错误。推荐使用order by语句来保证排序语义。 子查询 不支持与grand parent query产生关联关系的子查询。 不支持HAVING子句中的子查询,JOIN ON 条件中的子查询。 Derived Tables 必须拥有一个别名。 Derived Tables 不可以成为 Correlated Subqueries,即不能包含子查询外部表的引用。 LOAD DATA语法限制 不支持LOW_PRIORITY。 不支持CONCURRENT。 不支持PARTITION (partition_name [, partition_name] ...)。 不支持LINES STARTING BY 'string'。 不支持用户变量。 ESCAPED BY 只支持'\\'。 如果导入数据时没有指定自增键的值,DDM不会填充自增值,自增能力使用的是底层DN的自增能力,因此自增值会重复。 如果主键或者唯一索引值经过路由后不在同一张物理表,REPLACE不生效。 如果主键或者唯一索引值经过路由后不在同一张物理表,IGNORE不生效。 不支持对含有全局二级索引的表执行LOAD DATA的操作。 INSERT 和 REPLACE 不支持INSERT DELAYED...。 不支持不包含拆分字段的INSERT。 暂不支持PARTITION语法,建议不要使用partition表。 INSERT操作不支持datetime(YYYY-MM-DD HH:MM:SS)中“YYYY”取值1582年及之前年份。 INSERT不支持ON DUPLICATE KEY UPDATE 关联子查询列。 INSERT INTO t1(a, b) SELECT * FROM(SELECT c, d FROM t2 UNION SELECT e, f FROM t3) AS dtest ON DUPLICATE KEY UPDATE b = b + c; 示例ON DUPLICATE KEY UPDATE语句中引用了子查询列c。 INSERT和REPLACE不支持拆分键值为DEFAULT关键字。 UPDATE和DELETE 不支持更新拆分键值为DEFAULT的关键字。 不支持在一个语句中对同一字段重复更新。 不支持关联更新拆分键。 UPDATE tbl_1 a, tbl_2 b set a.name=b.name where a.id=b.id; 示例中“name”为tbl_1的拆分键。 不支持通过INSERT ON DUPLICATE KEY UPDATE更新拆分键。 不支持自关联更新。 UPDATE tbl_1 a, tbl_1 b set a.tinyblob_col=concat(b.tinyblob_col, 'aaabbb'); 不支持含有JSON类型字段的二级拆分表进行带子查询的拆分键更新。 不支持不带关联条件的关联更新。 不带关联条件的关联更新语句如下: UPDATE tbl_3, tbl_4 SET tbl_3.varchar_col='dsgfdg'; 关联更新不支持在目标列的赋值语句或表达式中引用其它目标列。 UPDATE tbl_1 a, tbl_2 b SET a.name=concat(b.name, 'aaaa'),b.name=concat(a.name, 'bbbb') ON a.id=b.id; 对拆分字段的更新,将转换成delete+insert两个阶段操作,操作中间不保证其它涉及到这张表中的拆分字段值的查询语句的一致性。
  • 数据库管理语句 不支持SHOW TRIGGERS语法。 不支持SHOW PROFILES、SHOW ERRORS、show warnings等多数运维SHOW语句。 下列的SHOW指令会随机发到某个物理分片,每个物理分片如果在不同的RDS for MySQ L实例 上,查得的变量或者表信息可能不同。 SHOW TABLE STATUS SHOW VARIABLES Syntax SHOW WARNINGS Syntax 不支持LIMIT/COUNT的组合 SHOW ERRORS Syntax 不支持LIMIT/COUNT的组合
  • 广播表 由于DDM的广播表机制是statement级别广播,如果使用运行结果不确定的函数,会造成广播表每个分片的数据不一致,请不要在广播表场景中使用这些函数。如果SQL中使用了这些函数,需要计算好,再以常量形式运用到广播表的操作中。运行结果不确定的函数包括但不限于以下函数: CONNECTION_ID() CURDATE() CURRENT_DATE() CURRENT_TIME() CURRENT_TIMESTAMP() CURTIME() LAST_INSERT_ID() LOCALTIME() LOCALTIMESTAMP() NOW() UNIX_TIMESTAMP() UTC_DATE() UTC_TIME() UTC_TIMESTAMP() CURRENT_ROLE() CURRENT_USER() FOUND_ROWS() GET_LOCK() IS_FREE_LOCK() IS_USED_LOCK() JSON_TABLE() LOAD_FILE() MASTER_POS_WAIT() RAND() RELEASE_ALL_LOCKS() RELEASE_LOCK() ROW_COUNT() SESSION_USER() SLEEP() SYSDATE() SYSTEM_USER() USER() UUID() UUID_SHORT()
  • 不支持的特性 不支持存储过程。 不支持触发器。 不支持视图。 不支持事件。 不支持自定义函数。 不支持外键约束、外键关联。 不支持全文索引和空间函数。 不支持临时表。 不支持BEGIN…END、LOOP…END LOOP、REPEAT…UNTIL…END REPEAT、WHILE…DO…END WHILE 等复合语句。 不支持类似IF ,WHILE 等流程控制类语句。 不支持RESET、FLUSH语句。 不支持BIN LOG 语句。 不支持HANDLER语句。 不支持INSTALL/UNINSTALL PLUGIN语句。 不支持非 ascii/latin1/binary/utf8/utf8mb4 的字符集。 不支持SYS schema。 不支持MySQL追踪优化器。 不支持X-Protocol。 不支持CHECKSUM TABLE 语法。 不支持表维护语句,包括CHECK/CHECKSUM/OPTIMIZE/REPAIR TABLE。 不支持session变量赋值与查询。 例如: set @rowid=0; select @rowid:=@rowid+1,id from user; 不支持SQL语句中包含单行注释 ' --' 或者多行(块)注释 ' /.../'。 不完整支持系统变量查询,系统变量查询语句返回值为RDS实例相关变量值,而非DDM引擎内相关变量值。例如select @@autocommit返回的值,并不代表DDM当前事务状态。 不支持SET Syntax修改全局变量。 不支持PARTITION语法,建议不要使用partition表。 不支持LOAD XML语句。 不支持内联注释语句。 不支持CREATE TABLE AS WITH SELECT语法。 不支持ZEROFILL CREATE语法。
  • 不支持的函数 DDM计算层暂不支持如下函数。如果无法确认函数是否能下推到RDS,请不要使用该函数。 不支持XML函数。 不支持ANY_VALUE()函数。 不支持ROW_COUNT()函数。 不支持COMPRESS()函数。 不支持SHA()函数。 不支持SHA1()函数。 不支持AES_ENCRYPT()函数。 不支持AES_DECRYPT()函数。 不支持JSON_OBJECTAGG()聚合函数。 不支持JSON_ARRAYAGG()聚合函数。 不支持STD()聚合函数。 不支持STDDEV()聚合函数。 不支持STDDEV_POP()聚合函数。 不支持STDDEV_SAMP()聚合函数。 不支持VAR_POP()聚合函数。 不支持VAR_SAMP()聚合函数。 不支持VARIANCE()聚合函数。 不支持MICROSECOND()函数。 不支持TO_DAYS()函数。 不支持TO_SECONDS()函数。 不支持UNCOMPRESS()函数。 不支持UNCOMPRESSED_LENGTH()函数。 不支持UNHEX()函数。 不支持YEARWEEK()函数。 不支持TIME_FORMAT()函数。
  • 产品规格 产品规格包括通用增强型和鲲鹏通用计算增强型两种。 通用增强型实例是新推出的一系列性能高、计算能力稳定的实例规格,搭载英特尔® 至强® 可扩展处理器,配套高性能网络,综合性能及稳定性全面提升,满足对业务稳定性及计算性能要求较高的企业级应用诉求。 鲲鹏通用计算增强型实例搭载鲲鹏920处理器及25GE智能高速网卡,提供强劲鲲鹏算力和高性能网络,更好满足政府、互联网等各类企业对云上业务高性价比、安全可靠等诉求。 表1 产品规格 规格类型 架构 规格码 CPU(核) 内存(GB) 通用增强型 X86 ddm.c6.2xlarge.2 8 16 ddm.c6.4xlarge.2 16 32 ddm.c6.8xlarge.2 32 64 鲲鹏通用计算增强型 ARM ddm.kc1.2xlarge.2 8 16 ddm.kc1.4xlarge.2 16 32 ddm.kc1.8xlarge.2 32 64
  • DDM与其他服务的关系 虚拟私有云(VPC) DDM运行于虚拟私有云,需要使用虚拟私有云创建的IP和带宽。通过虚拟私有 云安全 组的功能,可增强访问DDM服务的安全性。 弹性云服务器(E CS ) 成功购买DDM实例后,您需要通过弹性云服务器连接使用DDM实例。 云数据库服务(RDS) 购买DDM实例后,可以关联同一虚拟私有云中的RDS for MySQL实例,实现 分布式数据库 计算与存储。 云监控服务 CES 云监控 服务(Cloud Eye)提供安全、可扩展的统一监控方案,通过云监控服务集中监控DDM的各种指标,基于云监控实现告警和事件通知。 云审计 服务( CTS ) 云审计服务(Cloud Trace Service),提供DDM服务资源的操作记录,记录内容包括您从 云计算平台 发起的云服务资源操作请求以及每次请求的结果,供您查询、审计和回溯使用。 弹性负载均衡(ELB) 弹性负载均衡(ELB)将访问流量根据分配策略分发到后端多台服务器,通过流量分发扩展DDM对外的服务能力,同时通过消除单点故障提升DDM服务的可用性。 数据管理服务(DAS) 数据管理服务,通过专业优质的可视化操作界面,提高数据管理工作的效率和安全。
  • DDM权限 默认情况下,管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DDM部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DDM时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于云服务平台各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DDM服务,管理员能够控制IAM用户仅能对某一类数据库资源进行指定的管理操作。 表1 DDM系统策略 策略名称 描述 类别 依赖关系 DDM FullAccess 分布式数据库中间件服务所有权限。 系统策略 无。 DDM CommonOperations 分布式数据库中间件服务普通权限(除创建实例、删除实例、分片变更、分片变更回滚、规格变更、节点扩容外的所有权限)。 系统策略 无。 DDM ReadOnlyAccess 分布式数据库中间件服务只读权限。 系统策略 无。 DDM系统策略具体权限配置如下: DDM FullAccess { "Version": "1.1", "Statement": [{ "Action": ["ddm:*:*", "rds:instance:list", "rds:instance:modify", "rds:instance:modifyParameter", "vpc:*:*", "ecs:*:get*", "ecs:*:list*", "ecs:cloudServerNics:update", "ecs:serverInterfaces:use"], "Effect": "Allow" }] } DDM CommonOperations { "Version": "1.1", "Statement": [{ "Action": [ "vpc:*:*list*", "vpc:*:*get*", "vpc:ports:update", "ecs:*:get*", "ecs:*:list*", "rds:instance:list", "rds:instance:modify", "rds:instance:modifyParameter" ], "Effect": "Allow" }, { "Condition": { "StringEqualsIgnoreCase": { "g:ServiceName": [ "ddm" ] } }, "NotAction": [ "ddm:instance:create", "ddm:instance:delete", "ddm:database:migrate*", "ddm:instance:resize", "ddm:instance:extendNode" ], "Effect": "Allow" }] } DDM ReadOnlyAccess { "Version": "1.1", "Statement": [{ "Action": [ "rds:instance:list", "vpc:*:*list*", "vpc:*:*get*", "ecs:*:get*", "ecs:*:list*", "ddm:*:list", "ddm:*:get", "ddm:instance:listParameter", "ddm:instance:listRwInfo", "ddm:instance:listSlowSqlInfo", "ddm:rds:connectivity" ], "Effect": "Allow" }] }
  • 什么是区域、可用区? 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区
  • DN实例使用限制 在使用DDM过程中,对于DN实例存在一些使用限制。 仅支持5.7及8.0系列版本的RDS for MySQL实例,不支持Serverless类型和容器类型。 不支持 GaussDB (for MySQL)实例和云耀数据库实例。 DDM暂不支持MySQL实例配置SSL连接。 禁止MySQL实例开启区分大小写。 如果您使用的MySQL版本为5.7,请您在MySQL实例创建完成后在“参数修改”页面将实例的“lower_case_table_names”参数的值设为1,也可以在创建实例时“表名大小写”这一项选择“不区分大小写”。 如果您使用的MySQL版本为8.0,请您在创建实例时“表名大小写”这一项选择“不区分大小写”。 对已经被DDM关联的DN实例进行修改配置等操作时,可能导致使用异常。修改后需要在DDM的DN管理页面,单击“同步DN信息”,将修改的配置进行同步,保证功能可用性。 禁止DN实例使用gbk字符集。 父主题: 使用限制
  • 产品优势 自动分库分表 传统数据库通常是单机部署,一旦出现问题,数据可能全部丢失,故障影响面100%。 而DDM支持自动分库分表,将数据分散到多个数据节点存储,分散风险,影响面降低至1/N,支撑业务爆发式增长。 读写分离 DDM充分利用数据节点只读实例能力,当水平拆分后,依然存在较大查询压力,则可以开启读写分离能力,业务系统无需改造,提升数据库处理能力和访问效率,轻松应对高并发场景。 弹性扩容 传统数据库计算能力和存储能力有限,CPU/内存/网络处理能力受限于机器配置,存储受限于SSD或者云盘的大小,只能支撑中小规模的业务系统。 而DDM既支持计算层(DDM)扩容(增加节点数或提升节点规格),也支持存储层在线扩容,存储层扩容可以通过增加分片数或者数据节点数来解决单表数据量过多和容量瓶颈等问题,确保计算、存储均可线性扩展,解决业务在快速发展的过程中针对数据库扩展性产生的后顾之忧与运维压力。
  • 产品定义 分布式数据库中间件(Distributed Database Middleware,简称DDM),是一款分布式关系型数据库中间件。兼容MySQL协议,专注于解决数据库分布式扩展问题,突破传统数据库的容量和性能瓶颈,实现海量数据高并发访问。 DDM是由华为云自主研发的云原生分布式数据库中间件,采用存算分离架构,提供分库分表、读写分离、弹性扩容等能力,具有稳定可靠、高度可扩展、持续可运维的特点。服务器集群管理对用户完全透明,用户通过DDM管理控制台进行数据库运维与数据读写,提供类似传统单机数据库的使用体验。
  • 应用场景 尤其适用于大规模的数据存储与高并发访问的行业应用,如互联网应用、物联网数据、高性价比数据库解决方案等应用场景。 互联网应用 电商、金融、O2O、零售、社交应用等行业,普遍存在用户基数大、营销活动频繁、核心交易系统数据库响应日益变慢的问题,制约业务发展。DDM提供线性水平扩展能力,能够实时提升数据库处理能力,提高访问效率,轻松应对高并发的实时交易场景。 物联网数据 在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多,采样频率高,数据规模大,会产生超过单机数据库存储能力极限的数据,造成数据库容量瓶颈。DDM提供的容量水平扩展能力,可以有效的帮助用户低成本的存储海量数据。 高性价比数据库解决方案 政务机构、大型企业、银行等行业为了支持大规模数据存储和高并发数据库访问,传统方案需要强依赖小型机和高端存储等高成本的商业解决方案。DDM利用普通服务器进行集群部署,提供与传统商业解决方案相同甚至更高的处理能力。
  • 请求示例 创建DDM实例组,组类型:读写,节点数为1个。 POST https://{endpoint}/v3/{project_id}/instances/{instance_id}/groups { "name": "group-1", "type": "rw", "flavor_id": "a615922f-0ed8-3691-aad4-a595185febba", "nodes": [ { "available_zone": "az1", "subnet_id": "ead1e945-ca89-45dd-bcce-4a30b2054c22" } ] }