阿里云 DRDS 使用和理解

记录第一天使用DRDS的操作,通过应用、应用中的细节和约束来试图理解、猜想DRDS的实现和原理。

DRDS上创建逻辑库

第一步,选择要加入的RDS

1 drds_add_rds

 

第二步,数据库的基本信息:库名前缀:Idouba ?密码:douba_123。拆分模式,表示创建一个可以分库

2 drds_basic_info

第三步,观察自动为刚才输入的逻辑库创建出若干个物理库,两个输入的RDS实例上各有8个物理库。能猜到,我们在逻辑库上的数据会以一定的方式最终存储在这些物理库上。每个物理库的前缀都是我们前面输入的idouba

2_drds_partitioned_rds

第四步,开始创建。即将刚才规划的建库命令在两个实例上执行。我们自己也能猜到这些命令最终在mysql实例上是怎么做的。

4_drds_create_database

可以看到创建库的基本信息如下:

5_drds_logic_database_info

使用上和我们这个逻辑库和其他的mysql实例没有任何差别。可以看到使用上,至少是对外提供的使用上看这个DRDS和我们一个RDS的mysql没有任何差别。

查看逻辑库idouba下面的两个实例下各自的物理库会发现,每个实例下面都包含有创建时候分配的8个物理库,同时在其中一个下面还包含一个和逻辑库同名的物理库,猜测是DRDS利用其中的一个RDS来存储逻辑库的元数据用的。也进一步验证了DRDS真的只是一个中间件代理,所有的存储还是依赖后面的RDS,即mysql实例来完成的。

6_drds_datamange

DRDS上创建表

使用DDL语句来创建表

使用中发现“新建表/分布式DDL”这样Open的地方执行有分库的创建表会有问题。

7_drds_create_table_ui

7_drds_datamange_error

感觉像sql不合法,不是吧dbpartition这样的关键字。折磨了很久,改为partition就可以。判断这里mysql的语法是支持,但是DRDS这样的语法不支持。后来找到长源早前回复的邮件强调的“目前双维度切分(分别指定分库键与分表键)必须通过DRDS 的DDL语法(命令行界面)来操作”,就去找了下命令行。

 

执行DRDS DDL手册中的这个创建分库分表的例子:

建一个分表,每个分库含有7张物理表,切分方式都为按照用户id列进行哈希(会根据id列的值进行hash运算后的结果将表中数据分布在多个子库中,每个子库中的数据再根据时间取周运算结果分布在7个物理表中)

8_drds_datamange_by_consoler

执行成功后,看到左半边树上和其他的数据库ide一样,有个模板sql,如下结果

居然分成贴心的对该表生成了集中操作模板。观察最后一个创建表的脚步和原始输出的有点不同,也和其他的数据库系统一样,补全乐乐默认值,是否可以null这些。重点是看到最后一句分库分表语句,指定了16个分库。哦,这正是当年创建逻辑库时候指定的2个数据库实例上总共16个物理库。即根据分库策略,将大表创建到16个物理库上

在分库管理中,看到2个实例上共16个分库,从0000-0015

9_drds_database_partition

选择16个物理库中的任何一个,观察上面创建的表,会看到如下的分表。即刚才的逻辑大表被分开在16个物理数据库上,在每个物理数据库上又根据分表策略创建了7个物理表。

10_drds_table_partition

费用

费用其实挺贵的,而且不像原来理解的DRDS包含RDS。DRDS至少我们购买的一个数据库服务代理,代理我们购买的RDS。RDS购买的数据库实例根据规个付费,DRDS也是根据规格付费。

11_cost_rds

12_cost_drds

后来买了8个RDS一个DRDS,一个月下来一万五千就花下去了。

运维

DRDS就是个中间件,所有只有QPS,只能关注到请求。要看每秒插入多少记录之类的要去RDS看。

DRDS 的qps 是2400

13_rds_monit

下面视图显示一个RDS上的数据量变化情况,如RDS每秒钟记录插入记录行数,可以看到这个RDS的插入记录速度为每秒500条

14_rds_monit_insert

而下图是追踪sql的执行情况,即每个RDS每秒sql的执行统计,可以看insert update delete各种操作的执行统计。如下图显示

RDS每秒insert语句执行次数为500条左右。

15_rds_monit_sql_execute

 

考察DRDS上每秒的记录条数:从DRDS来考察总的插入速度,从表上记录的时间统计,每秒钟插入2400条记录,是5个RDS上插入的总和 ,前面数据看到每个RDS上每秒插入500条左右。

考察DRDS上请求效率:DRDS的qps是2400,这个阶段在RDS上只有insert操作,insert sql的执行效率是每秒500左右,即DRDS的请求数,就是其代理的5个RDS的inert 请求数之和。

原创文章。为了维护文章的版本一致、最新、可追溯,转载请注明: 转载自idouba

本文链接地址: 阿里云 DRDS 使用和理解


, , ,

Trackbacks/Pingbacks

  1. 阿里云drds的平滑扩容 | idouba - 2016年3月20日

    […] 原因就是DRDS的分库策略。在DRDS的使用中可以看出,drds建分库时,不用指定目标分库数,但是分库函数会自动把分库列上的取值映射成指定个数的分库。这个指定个数就是rds实例数*8。 […]

发表评论