在常见的互联网业务中,数据库读写比例通常为 4:1 至 10:1 之间。在这类业务场景下,数据库的读负载远高于写负载,在遇到因为数据库读取压力大导致性能瓶颈的一个常见的解决方案就是增加只读实例(仅提供读功能)。用户只需要将业务中的读请求分担到只读实例上,就可以缓解主库查询压力,同时也可以把一些 OLAP 的分析查询放到另外的只读实例上,减小复杂统计查询对主库的冲击。只读实例无法单独存在,必须隶属于某个数据库主实例(主实例是可读可写),它的唯一数据来源是从主实例同步数据。只读实例产品架构为 单节点高IO版(采用单个物理节点部署,底层存储使用本地 PCI-e SSD 硬盘)。
只读实例需要通过单独的 IP地址、PORT端口来访问,目前暂不支持自动分离读请求与写请求。如图所示,创建了两个只读实例readonly11和readonly12,每个只读实例都属于ro_group_159497只读实例组(带有负载均衡功能的只读实例组,组内有多个只读实例,可将用户读请求量均匀分配到组内的每个只读实例上, 只读实例组会对外提供IP地址、PORT端口供访问数据库)。
只读实例的原理是采用 MySQL binlog 主从同步功能,将主实例(源数据库)的更改同步到所有只读实例中。一个主实例最多可以创建 5 个只读实例。
来源:51CTO
作者:songlihuan
链接:https://blog.51cto.com/songlihuan/2481132