maxscale可以实现mariadb读写分离(在主库写,在从库读)。mariadb主从复制是异步的,很有可能存在从库延迟于主库的情况。假如有不能容忍mariadb主从延时的业务,如执行完写入操作后,想立即读到结果,然后做相应的逻辑处理,则需要做特殊处理
方法一
将select sql伪装成一个事务,让其自动在主库上执行。
语法:
显式开启一个事务
select ……
显式提交事务
方法二
添加hint:
① 修改maxscale配置文件,添加hint:
[Hint]
type=filter
module=hintfilter
在服务那里引用该hint:
重启maxscale。
② 在select语句中添加路由信息,示例:
SELECT * FROM baidd.t1 WHERE id = 1 -- maxscale route to master
官网上是这样说的:
SELECT * from table1; -- maxscale route to master
但是我在10.3.18版本mariadb+2.4.4 maxscale实验的是加上分号后步行,不加分号可以。
--官网地址: