入门篇-华为云分布式数据库中间件(DDM)创建逻辑库和逻辑表
本文介绍华为云DDM管理控制台创建逻辑库和逻辑表。
前提条件:
已经购买华为云DDM实例。
已经导入RDS实例。
创建逻辑库
一个DDM实例下最多能新增100个逻辑库。
- 非拆分模式下,逻辑库只能关联一个RDS实例,每个逻辑库在RDS实例上只创建1个分库。
- 拆分模式下,逻辑库可以关联多个RDS实例,每个逻辑库在一个RDS实例上缺省创建8个分库,您可以根据需要配置为16、32、64、128个分库。
- 登录管理控制台。
- 在导航上选择“数据库 > 分布式数据库中间件”,进入总览页面。
- 单击左侧菜单栏的“DDM实例管理”,进入“DDM实例管理”页面。
- 找到需要增加逻辑库的DDM实例,单击DDM实例右侧的“创建逻辑库”,进入“创建逻辑库”页面。
- 填写创建逻辑库信息。
- 逻辑库名称:
- 只能以英文字母开头。
- 长度为2到24位的字符串。
- 仅包含英文字母、数字和下划线(_)。
- 字母不区分大小写。
- 拆分模式:
- 拆分。选择“拆分”模式,DDM逻辑库会在每一个关联的RDS实例下新建分库,缺省为8,建分片过程由系统自动实现,可根据需要配置为16、32、64、128个分库。
- 非拆分。选择“非拆分”模式,DDM逻辑库只关联一个RDS实例,且每个逻辑库在RDS实例上只创建1个分库。
- 逻辑库名称:
- 单击RDS实例左侧的复选框,选择需要关联的RDS实例。
- RDS实例与DDM实例需要在相同VPC,且RDS实例没有被其它DDM实例使用。
- 非拆分模式下,逻辑库只能关联一个RDS实例,在该RDS实例上创建一个分片,创建的逻辑库名称与RDS实例上创的分片名称相同,若创建的逻辑库名称对应在RDS实例分片中名称已存在,DDM将会直接进行数据关联,避免用户从RDS导出导入数据进行迁移。
- 拆分模式下,逻辑库可以关联多个RDS实例,同时可以配置“单RDS分片数”,用于指定在所有关联RDS上创建的分片数量。当分片数过多导致单RDS实例规格超过规格上限时将会直接系统影响性能,详情请参见如何选择DDM逻辑库分片数。
- (可选)如果DDM中保存的RDS实例账号密码与实际情况不一致,单击RDS实例右侧的“修改管理员账号”,在弹出的对话框中填入RDS管理员的账号密码,并单击“确定”。
- (可选)单击RDS实例右侧的“设为单表的储存节点”,将该RDS实例设置为单表的存储节点。
- 单击“预览”,可以查看RDS实例的分库详情。
建逻辑库时,系统根据拆分模式,对RDS实例进行默认分片:
- 拆分模式下,系统分库按如下规则命名:逻辑库名称+"_"+编号。例如,假设逻辑库的名称是mydb,则RDS实例的分片命名为mydb_0000,mydb_0001等,以此类推。
- 拆分模式下,当添加多个RDS实例时,添加的第一个RDS实例的分库命名从编号0000开始,第二个RDS实例的分库命名从第一个RDS实例的最后一个分库命名编号+1开始,以此类推。
- 单击“创建”,系统开始执行逻辑库创建任务。
逻辑库创建耗时约3~5分钟。
创建逻辑表
一个DDM实例下最多能创建3000张表。只有“拆分”模式的实例逻辑库才能创建逻辑表。
- 单击DDM实例名称,进入实例基本信息页面。
- 在实例基本信息页面,选择“逻辑库管理”选项卡,查看DDM实例逻辑库。
- 找到需要新增逻辑表的逻辑库,单击逻辑库右侧的“创建逻辑表”,进入“创建逻辑表”页面。
- 填写创建逻辑表参数。
逻辑表信息
说明
逻辑表类型
- 分片表。“分片表”模式下,逻辑表的数据将被按照拆分规则,分到各个分片中存储。
- 全局表。每一个分片上存储全量的数据。
拆分算法
拆分规则对分片表适用。
将逻辑表中数据拆分到多个数据库分片上的算法。
- Hash:数据分布比较均匀。
- Range:适合范围类操作较多的场景。
算法元数据
该参数仅当“拆分算法”为“Range”时有效。
用于定义数据库分片对应的数据拆分规则,格式如下:
- 算法元数据定义格式:取值范围=分片序号。
- 取值范围定义格式:起始值-结束值。起始值、结束值为非负整数,对应拆分键的一段取值范围,通过中横线连接。取值范围为双闭区间即包括起始值、结束值。取值范围不能有交集。
- 分片序号与数据库分片名称中的后缀数字对应,最小值为0,最大值为逻辑库分片数减1,例如分片db_test_0000对应的分片序号是0。
- 对应同一分片的多个取值范围可以写在一行,逗号分隔,也可以分成多行描述。
- 支持以#或//开头的注释。
示例:
# range start-end ,data node index
// comment
0-100,101-300,301,302-500=0
600-700=1 //取值范围(起始值-结束值)=分片序号
701-800=1
801-900=2
默认分片
“拆分键”取值不在“算法元数据”定义范围内的记录,保存到默认分片。
分片序号与数据库分片名称后缀的数字对应,最小值为0,最大取值为逻辑库分片数减1。
拆分键
根据何种条件进行拆分,仅当“逻辑表类型”为“分片表”时该参数有效。
拆分键即在水平拆分过程中用于执行拆分算法的数据表字段,指定数据表字段后,还可以进一步选择日期函数,也可以手动输入“日期函数(字段名)”,数据表字段必须是日期类型(date、datetime、timestamp),日期函数适用于需要按时间(年、月、日、周及其组合)对数据进行拆分的场景。
日期函数拆分算法取值如下。- 日期函数返回类型为数字型的,支持Hash、Range拆分算法:
- day:每月中的第几天,取值为1-31。
- year:年份,如2018。
- month:月份,取值为1-12。
- weekofyear:每年内第几周,取值为1-53。关于周的定义请参见MySQL官网weekofyear函数或ISO标准(ISO8601 week algorithm)。
例如 2016-01-01是2015年的第53周,2016-01-04才是2016年的第1周
- dayofyear:每年中的第几天,1-366。
- dayofweek:星期几,取值为1-7(1=周日、2=周一...)。
- yyyymm:年月,如201801、201812。
- yyyyweek:年周,如201801、201853。关于年份、周数的定义与weekofyear的说明相同。
- yyyyddd:年日,如2018001、2018365。
- 日期函数返回类型为字符串型的,只支持Hash拆分算法,不支持range拆分算法:
- mmdd:月日,如0101、1231。
说明:- 拆分键输入框可以输入分片字段的名称,也可以输入日期函数和分片字段的组合,格式为“日期函数(字段名)”,例如“day(id)”。
- 如拆分键已输入字段内容,在下拉框选择了日期函数后,系统会自动按上述格式,将输入框中的已输入的字段包上日期函数。
- 选择日期函数用于拆分键时,拆分算法如果选择Hash,可能会导致数据分布不均,建议选择Range拆分算法。
全局序列
- 无:不使用全局序列。
- TIME:使用DDM服务器时间戳作为全局序列ID。
- DB:从数据库获取序列号作为全局序列ID。设置序列起始值和序列步长,序列步长为单次从数据库获取的序列号数量。
例如:“序列起始值”为1000000000,“序列步长”为500,则第一次从数据库获取500个序列号,获取的id为1000000001~1000000500,id使用完后,再按顺序获取接下来的500个序列号。
说明:“序列起始值”和“序列步长”都需要大于0。
建表SQL
用于创建逻辑表的SQL语句。
当“全局序列”设置为“DB”或者“TIME”时,建表SQL中必须存在主键,且主键必须指定为AUTO_INCREMENT属性。如果设置为“TIME”,主键必须为BIGINT类型。
建表SQL如下:
CREATE TABLE `staff_info` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,`staffName` VARCHAR(40) NOT NULL,`sex` ENUM('F','M','S'),`phone` VARCHAR(16),`email` VARCHAR(40),`employedDate` DATE,`department` VARCHAR(40) ) ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
主键id被定为AUTO_INCREMENT属性后,插入数据时会被赋予一个唯一值,不需要在SQL中指定。对应的数据插入举例如下:
INSERT INTO staff_info (staffName,sex,phone,email,employedDate,department) VALUES ('Bill','S','19812345678','Bill@ddm.example.com','2017-01-01','Depart.A');
说明:- 一次只能创建一张逻辑表。不支持同时执行多条建表SQL,即使拆分键名称完全相同。
- 只支持填写一条建表SQL语句,不支持执行除创建逻辑表以外的其他DDL、DML语句,比如ALTER TABLE之类的语法。
- 创建“全局序列”为“DB”或者“TIME”的表之后,用MySQL连接DDM插入数据时:
- 建议不要给主键ID赋值,否则可能导致数据插入失败。
- 如需给主键ID赋值,建议取值与“全局序列”的取值范围区分开,否则可能会导致全局序列生成的主键ID值重复而引起插入失败。
- 建表SQL兼容MySQL注释规范。
- 建议不要在SQL语句中包含注释。
- 单击“确定”,开始创建逻辑表。
如果选择“覆盖RDS分片上残留的同名数据表”,则会先删除RDS分片上残留的同名数据表,再创建新的同名逻辑表。
可以在DDM实例管理页单击“任务进度”,查询创建逻辑表的进度。
以上创建步骤供参考,实际还以华为云分布式数据库中间件DDM管理控制台为准。
下期介绍如何用mysql连接分布式数据库DDM。
入门篇-华为云分布式数据库中间件(DDM)创建逻辑库和逻辑表相关推荐
- 华为云分布式数据库中间件DDM和开源MyCAT对比
前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...
- 华为云分布式数据库中间件DDM
分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,一个实现了Mysql协议栈的数据库代理服务器,通过代理服务器将底层数据 ...
- 云图说|一张图带你了解华为云分布式数据库中间件
本文分享自华为云社区<[云图说] 第197期 初识华为云分布式数据库中间件DDM>,原文作者:阅识风云. 华为云分布式数据库中间件(Distributed Database Middlew ...
- 入门篇-连接华为云分布式数据库中间件(DDM)
在成功配置DDM实例后,即可连接访问DDM实例以及实例下的逻辑库. 华为云分布式数据库中间件(DDM)服务目前管理的关系型数据库,是基于MySQL作为存储引擎,因此DDM服务兼容MySQL大部分语法以 ...
- java数据库中间件实现,分布式数据库中间件DDM的实现原理
随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...
- 浅析分布式数据库中间件DDM
前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...
- mysql中ddl和ddm_浅析分布式数据库中间件DDM
前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...
- mysql中ddl和ddm_对话DDM:分布式数据库中间件全解析
进入云计算时代,传统的数据库在性能和容量等方面已无法满足企业的要求,随着数据量的不断骤增,易于扩展.拆分的数据库解决方案对于企业的云化转型更是显得尤为重要.为使企业应用上云更简单,分布式数据库中间件D ...
- 分布式数据库中间件使用经验分享
最近公司新项目使用了华为云的DDM分布式数据库中间件服务,通过一段的时间的使用感觉还不错.近段时间发现有许多小伙伴也准备去使用这个服务,所以为大家分享一下使用 创建DDM服务的经验,帮助小伙伴们少走弯 ...
最新文章
- tensorflow编程入门笔记之一
- CTFshow php特性 web140
- Java:本地最小语言
- php上传图片大小判断,jQuery实现判断上传图片类型和大小的方法示例
- 美团正押注无人车?没错,这是外卖大战的第三阶段
- 【免费毕设】JAVA监听系统的设计与开发(源代码+论文)
- python发音1001python发音-怎样才能写出 Pythonic 的代码 #P1001#
- 插入的数据不能时时查询到_漫谈 LevelDB 数据结构(一):跳表(Skip List)
- UAC在注册表中的对应位置
- list循环添加数据_笔记 | 自学Python 06:数据类型之列表
- Mac 命令行 Terminal 安装My Zsh,替换默认的Bash
- Kali Linux零基础入门到精通
- 5G+北斗高精度定位系统适用于哪些行业领域?
- 使用layui的laypage完成分页
- html点击按钮跳转到另一个界面_网页制作:一个简易美观的登录界面
- 苹果电脑的文件怎样拷贝入移动硬盘里
- linux cp报错 扩展 失败,linux使用cp报错 Text file busy
- 如何写论文摘要和引言
- 编程实现幂函数,(指数为整数)
- 伪指令dd 和 操作符dup