阅读587 返回首页    go 敦煌网


DRDS读写分离__开发手册_分布式关系型数据库 DRDS-阿里云

DRDS的读写分离功能是一种对应用透明的读写分离实现,应用在不需要修改任何代码的情况下,只需要在DRDS控制台中调整读权重,即可将流量按照需要的比例在主实例与多达5个只读实例之间调整。写权重则统一走主实例,不分流。根据我们的测试,添加只读实例带来的读性能提升是线性的,也就是挂载一个只读实例,读性能提升至原来2倍,挂载2个只读实例为单个主库的3倍等,不过需要提醒的是,落到只读实例上读所操作的数据都是从主实例上异步同步的,延迟在毫秒级别,所以个别要求实时性的SQL请通过DRDS hint 指定主库执行。

DRDS的读写分离指的是对事务外的查询请求做读写分离, 事务中出现写请求后, 当次事务中所有读请求会走到主库,而不会按照设置的读写分离权重

读写分离架构示意图

开启读写分离

  1. 进入DRDS控制台并进入需要做读写分离的DRDS数据库,点击左侧边栏「容量管理」,如果没有只读实例,点击右侧添加只读实例连接,目前RDS能在一个主实例下挂5个只读实例。如果已经有购买只读实例,DRDS也能检测到。

容量管理页面内容

实际购买页

添加只读实例

  1. RDS只读实例初始化后,在DRDS容量管理里面展开RDS实例,能够看到对应的RDS只读实例,点击右侧 设置读策略。

读权重设置入口

DRDS默认提供了3种策略,每种策略都会有不同的读权重分配,用户也可以自定义,根据具体需求进行选择

设置读权重

连接DRDS查看实际读流量分布

你可以通过连接DRDS执行show node指令查看实际读流量分布。并且页面上的读权重修改,会准实时影响这个读流量的分布。

  1. mysql> show node;
  2. +------+------------------+-------------------+------------------+---------------------+--------------------+
  3. | ID | NAME | MASTER_READ_COUNT | SLAVE_READ_COUNT | MASTER_READ_PERCENT | SLAVE_READ_PERCENT |
  4. +------+------------------+-------------------+------------------+---------------------+--------------------+
  5. | 0 | USERDATABASE_RDS | 10 | 2 | 83% | 17% |
  6. +------+------------------+-------------------+------------------+---------------------+--------------------+
  7. 1 row in set (0.00 sec)

以上各列分别表示 一组读写库 ,一段时间内的主库读计数,从库读计数,主库读占比,从库读占比。

一组读写库 和 一组读写实例(控制台展示的) 是多对一的关系,命令行查到的信息比控制台更加细致(数据分片级别)。

使用DRDS hint 指定主库或者只读实例执行SQL

在SQL前加上注释能够让SQL在指定库上进行执行:

  1. /*TDDL:SLAVE*/select * from tab where seller_id=123

非拆分模式下的读写分离使用方式

用户在DRDS控制台上创建DRDS数据库时,在选定一个RDS实例的情况下,可以选择将该RDS实例下的一个数据库直接引入DRDS做读写分离,不需要做数据迁移,但同时该DRDS数据库上也不能做水平拆分。

使用DRDS读写分离注意事项

  1. RDS只读节点过期或者需要下线需要手动把读权重置为0,否则流量会继续走到原有只读节点,并且失败。
  2. 读写分离是以「DRDS数据库」为基本单位的,如果同一个RDS只读实例在多个DRDS数据库上使用,需要在每个DRDS数据库上都将其权重设置为0。

最后更新:2016-11-23 17:32:28

  上一篇:go DRDS DDL语句__开发手册_分布式关系型数据库 DRDS-阿里云
  下一篇:go DRDS平滑扩容__开发手册_分布式关系型数据库 DRDS-阿里云