tencent cloud

文档反馈

读写分离

最后更新时间:2024-01-11 11:14:10

    读写分离概述

    云数据库 MariaDB 默认支持读写分离能力,架构中的每个从机都能支持只读能力,如果配置有多个从机,将由网关集群(TProxy)自动分配到低负载从机上。

    基于只读帐号的读写分离

    只读帐号是一类仅有读权限的帐号,默认从数据库集群中的从机(或只读实例)中读取数据。MariaDB 可以在 控制台 实例管理页的帐号管理页中,设置只读帐号和读策略:
    
    在只读帐号设置选项中,您可以设置只读请求分配策略,定义在备机故障(或延迟较大)时的读策略。只读备机延迟参数定义数据同步延迟时间,并与只读请求分配策略配合使用:
    
    配置建议(例如您设计的是某交易系统):
    核心交易模块:设置常规帐号,可读写。
    余额查询模块:设置只读帐号,默认读备机;请求分配策略:备机故障读主机,并将延迟参数设置在十秒内,以保证主从性能和用户查询的数据一致性。
    批量查询模块:设置只读帐号,默认读备机;请求分配策略:备机故障报错,延迟参数可设置在三十秒以上,以保证不影响主库性能。 另外,由于强同步机制是将数据写入从机事务日志后,即返回应答,这时从机库表数据可能并未更新,因此也会有延迟。

    基于注释的读写分离

    在每条需要从机“读”的 SQL 前,增加 /*slave*/ 字段,且 mysql 后面要增加 -c 参数来解析注释mysql -c -e "/*slave*/sql",即可自动将读请求分配到从机,示例如下:
    //主机读//
    select * from emp order by sal,deptno desc;
    //从机读//
    /*slave*/ select * from emp order by sal,deptno desc;
    注意:
    该功能仅支持从机读(select),不支持其他操作,非 select 语句将失败。
    mysql 客户端需要增加 -c 参数来解析注释。
    /*slave*/必须为小写,语句前后无空格。
    从机出现异常而影响到 MAR(强同步)机制时,从机读操作将自动切换回主机。

    只读实例(异地只读实例)

    如果上述读写分离方案无法满足您的需求,云数据库 MariaDB 提供只读实例供您使用。只读实例是独立的数据库实例,不参与原主实例高可用切换,仅用于读性能扩展。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持