本文介绍华为云DDM管理控制台创建逻辑库和逻辑表。

前提条件:

已经购买华为云DDM实例。

已经导入RDS实例。

创建逻辑库

一个DDM实例下最多能新增100个逻辑库。

  • 非拆分模式下,逻辑库只能关联一个RDS实例,每个逻辑库在RDS实例上只创建1个分库。
  • 拆分模式下,逻辑库可以关联多个RDS实例,每个逻辑库在一个RDS实例上缺省创建8个分库,您可以根据需要配置为16、32、64、128个分库。
  1. 登录管理控制台。
  2. 在导航上选择“数据库 > 分布式数据库中间件”,进入总览页面。
  3. 单击左侧菜单栏的“DDM实例管理”,进入“DDM实例管理”页面。
  4. 找到需要增加逻辑库的DDM实例,单击DDM实例右侧的“创建逻辑库”,进入“创建逻辑库”页面。
  5. 填写创建逻辑库信息。
    • 逻辑库名称:

      • 只能以英文字母开头。
      • 长度为2到24位的字符串。
      • 仅包含英文字母、数字和下划线(_)。
      • 字母不区分大小写。
    • 拆分模式:
      • 拆分。选择“拆分”模式,DDM逻辑库会在每一个关联的RDS实例下新建分库,缺省为8,建分片过程由系统自动实现,可根据需要配置为16、32、64、128个分库。
      • 非拆分。选择“非拆分”模式,DDM逻辑库只关联一个RDS实例,且每个逻辑库在RDS实例上只创建1个分库。
  6. 单击RDS实例左侧的复选框,选择需要关联的RDS实例。
    • RDS实例与DDM实例需要在相同VPC,且RDS实例没有被其它DDM实例使用。
    • 非拆分模式下,逻辑库只能关联一个RDS实例,在该RDS实例上创建一个分片,创建的逻辑库名称与RDS实例上创的分片名称相同,若创建的逻辑库名称对应在RDS实例分片中名称已存在,DDM将会直接进行数据关联,避免用户从RDS导出导入数据进行迁移。
    • 拆分模式下,逻辑库可以关联多个RDS实例,同时可以配置“单RDS分片数”,用于指定在所有关联RDS上创建的分片数量。当分片数过多导致单RDS实例规格超过规格上限时将会直接系统影响性能,详情请参见如何选择DDM逻辑库分片数。
  7. (可选)如果DDM中保存的RDS实例账号密码与实际情况不一致,单击RDS实例右侧的“修改管理员账号”,在弹出的对话框中填入RDS管理员的账号密码,并单击“确定”。
  8. (可选)单击RDS实例右侧的“设为单表的储存节点”,将该RDS实例设置为单表的存储节点。
  9. 单击“预览”,可以查看RDS实例的分库详情。

    建逻辑库时,系统根据拆分模式,对RDS实例进行默认分片:

    • 拆分模式下,系统分库按如下规则命名:逻辑库名称+"_"+编号。例如,假设逻辑库的名称是mydb,则RDS实例的分片命名为mydb_0000,mydb_0001等,以此类推。
    • 拆分模式下,当添加多个RDS实例时,添加的第一个RDS实例的分库命名从编号0000开始,第二个RDS实例的分库命名从第一个RDS实例的最后一个分库命名编号+1开始,以此类推。
  10. 单击“创建”,系统开始执行逻辑库创建任务。

    逻辑库创建耗时约3~5分钟。

创建逻辑表

一个DDM实例下最多能创建3000张表。只有“拆分”模式的实例逻辑库才能创建逻辑表。

  1. 单击DDM实例名称,进入实例基本信息页面。
  2. 在实例基本信息页面,选择“逻辑库管理”选项卡,查看DDM实例逻辑库。
  3. 找到需要新增逻辑表的逻辑库,单击逻辑库右侧的“创建逻辑表”,进入“创建逻辑表”页面。
  4. 填写创建逻辑表参数。

    逻辑表信息

    说明

    逻辑表类型

    • 分片表。“分片表”模式下,逻辑表的数据将被按照拆分规则,分到各个分片中存储。
    • 全局表。每一个分片上存储全量的数据。

    拆分算法

    拆分规则对分片表适用。

    将逻辑表中数据拆分到多个数据库分片上的算法。

    • 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语句中包含注释。

  5. 单击“确定”,开始创建逻辑表。

    如果选择“覆盖RDS分片上残留的同名数据表”,则会先删除RDS分片上残留的同名数据表,再创建新的同名逻辑表。

    可以在DDM实例管理页单击“任务进度”,查询创建逻辑表的进度。

以上创建步骤供参考,实际还以华为云分布式数据库中间件DDM管理控制台为准。

下期介绍如何用mysql连接分布式数据库DDM。

入门篇-华为云分布式数据库中间件(DDM)创建逻辑库和逻辑表相关推荐

  1. 华为云分布式数据库中间件DDM和开源MyCAT对比

    前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...

  2. 华为云分布式数据库中间件DDM

    分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,一个实现了Mysql协议栈的数据库代理服务器,通过代理服务器将底层数据 ...

  3. 云图说|一张图带你了解华为云分布式数据库中间件

    本文分享自华为云社区<[云图说] 第197期 初识华为云分布式数据库中间件DDM>,原文作者:阅识风云. 华为云分布式数据库中间件(Distributed Database Middlew ...

  4. 入门篇-连接华为云分布式数据库中间件(DDM)

    在成功配置DDM实例后,即可连接访问DDM实例以及实例下的逻辑库. 华为云分布式数据库中间件(DDM)服务目前管理的关系型数据库,是基于MySQL作为存储引擎,因此DDM服务兼容MySQL大部分语法以 ...

  5. java数据库中间件实现,分布式数据库中间件DDM的实现原理

    随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...

  6. 浅析分布式数据库中间件DDM

    前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...

  7. mysql中ddl和ddm_浅析分布式数据库中间件DDM

    前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...

  8. mysql中ddl和ddm_对话DDM:分布式数据库中间件全解析

    进入云计算时代,传统的数据库在性能和容量等方面已无法满足企业的要求,随着数据量的不断骤增,易于扩展.拆分的数据库解决方案对于企业的云化转型更是显得尤为重要.为使企业应用上云更简单,分布式数据库中间件D ...

  9. 分布式数据库中间件使用经验分享

    最近公司新项目使用了华为云的DDM分布式数据库中间件服务,通过一段的时间的使用感觉还不错.近段时间发现有许多小伙伴也准备去使用这个服务,所以为大家分享一下使用 创建DDM服务的经验,帮助小伙伴们少走弯 ...

最新文章

  1. tensorflow编程入门笔记之一
  2. CTFshow php特性 web140
  3. Java:本地最小语言
  4. php上传图片大小判断,jQuery实现判断上传图片类型和大小的方法示例
  5. 美团正押注无人车?没错,这是外卖大战的第三阶段
  6. 【免费毕设】JAVA监听系统的设计与开发(源代码+论文)
  7. python发音1001python发音-怎样才能写出 Pythonic 的代码 #P1001#
  8. 插入的数据不能时时查询到_漫谈 LevelDB 数据结构(一):跳表(Skip List)
  9. UAC在注册表中的对应位置
  10. list循环添加数据_笔记 | 自学Python 06:数据类型之列表
  11. Mac 命令行 Terminal 安装My Zsh,替换默认的Bash
  12. Kali Linux零基础入门到精通
  13. 5G+北斗高精度定位系统适用于哪些行业领域?
  14. 使用layui的laypage完成分页
  15. html点击按钮跳转到另一个界面_网页制作:一个简易美观的登录界面
  16. 苹果电脑的文件怎样拷贝入移动硬盘里
  17. linux cp报错 扩展 失败,linux使用cp报错 Text file busy
  18. 如何写论文摘要和引言
  19. 编程实现幂函数,(指数为整数)
  20. 伪指令dd 和 操作符dup

热门文章

  1. Putty的噩梦——渗透工具PuttyRider使用心得分享
  2. CISP学习——信息安全概念
  3. VirtualBox 虚拟机上网配置-实现多台虚拟机局域网独立ip,可连接外网
  4. 【RF】Receiver Function接收函数
  5. 学习wxWidgets第1篇(续):Codeblocks配置wxWidgets
  6. web前端开发发展史,前后30年,展望未来!
  7. 将屏幕内容保存到文件中
  8. HTML标签语义化,值得收藏!
  9. web开发学习过程,一个合格的初级前端工程师需要掌握的模块笔记
  10. 【视频分析】智能视频分析技术让安防更加智慧...