读写分离

最近更新时间: 2024-06-12 15:06:00

操作场景

为保证数据安全,需要创建只读账号,只可进行数据查询操作。

操作步骤

  1. 登录 TDSQL 控制台,进入实例列表,单击实例名或操作列的【管理】,进入实例管理页面。

  2. 选择【帐号管理】页,单击【创建帐号】。

  3. 在弹出的对话框设置帐号信息,【创建为只读帐号】设置为【是】,单击【确认,下一步】。

  4. 在弹出的对话框,可以设置【只读请求分配策略】,定义在备机故障(或延迟较大)时的读策略。

    • 选择【主机】则备机延迟超时时从主机读取。

    • 选择【直接报错】则备机延迟超时时报错。

    • 选择【只从备机读取】则忽略延迟参数,一直从备机读取(一般用于拉取 binlog 同步)。

    • 定义【只读备机延迟参数】,定义数据同步延迟时间,并与【只读请求分配策略】中的【主机】及【直接报错】两种策略配合使用。

基于注释的读写分离

在每条需要从机“读”的 SQL 前,增加/*slave*/ 字段,即可自动将“读”请求分配到从机。并且 mysql 连接命令后面增加 -c

-- 主机读
select * from emp order by sal,deptno desc;
-- 从机读
/*slave*/ select * from emp order by sal,deptno desc; 
  • 该功能仅支持从机读(select),不支持其他操作,非 select 语句将失败。

  • mysql 后面要增加 -c 参数来解析注释。

  • /*slave*/必须为小写,语句前后无空格。

  • 从机出现异常而影响到 MAR(强同步)机制时,从机读操作将自动切换回主机。

说明:

本版本新增若干基于/slave/读写分离策略,详情请参考:《TDSQL MySQL 10.3.20 分布式开发指南》