背景及方案
背景
数据显示,关系型数据库在OLTP业务下96.87%都在等待读I/O,而处理器计算仅仅占了5.3%,这说明要提高数据库的QPS性能,关键的一点是提高系统的IO能力。
另一个数据表明, 大多数业务对数据库的访问,是读大于写。 典型的如电商、O2O、互联网金融等业务,读写比例可以达到 5:1 甚至 10:1 。
提高IO能力的方法, 除了升级硬件, 提升单个节点的磁盘I/O能力之外, 还有一个重要的方法是读写分离。 可以部署一主多从的主从复制集群, 进而将读请求分发给多个数据库节点并行处理。考虑到大部分业务对数据库的访问以读居多, 读写分离能够给数据库性能带来明显的增益。
首先,多个节点并行读取,能够提供几倍于单个节点的磁盘数据读取能力;
第二,由于将读请求分摊到多个节点, 单个节点的I/O也得以减轻, I/O等待时间得以减小。
最终,整个系统的I/O能力得到有效提升。
对于OLAP业务而言, 由于需要涉及大量的内存存储和计算, CPU和内存可能成为瓶颈,读写分离也具有一定的意义。 通过将数据分析请求分流到多个节点,可以让不同的数据分析操作,在多个节点并行地执行, 节点之间互不干扰, 充分发挥并行处理的优势。
方案
UDB目前已提供完整的读写分离方案,具体做法如下:
1、在UDB控制台上, 创建好1个主库多个从库。
2、在UDB控制台上进入读写分离页面,并开启读写分离, 从而创建出读写分离中间件。该中间件作为业务程序和1主多从集群之间的代理,中转业务程序发往主库和从库的请求。
3、读写分离中间件将识别业务SQL请求的类型,如果是写请求,则一律转发到主库, 如果是读请求,则根据某种分发规则(分发规则可配置),将读请求分发到主库或者从库。
4、读写分离中间件具有独立的IP。 使用读写分离中间件时,客户将业务的数据库访问地址,直接切换到该IP即可,无需修改业务程序代码, 支持标准SQL、系统命令、事务、视图、存储过程、触发器等MySQL功能。
UDB读写分离中间件是永久免费的, 客户只需要创建好主从库,即可开启并使用读写分离中间件,无需额外费用。普通版UDB和高可用UDB均支持创建读写分离中间件。