maxscale如何实现某块儿业务读写都在主库进行
Posted 雅冰石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maxscale如何实现某块儿业务读写都在主库进行相关的知识,希望对你有一定的参考价值。
maxscale可以实现mariadb读写分离(在主库写,在从库读)。mariadb主从复制是异步的,很有可能存在从库延迟于主库的情况。假如有不能容忍mariadb主从延时的业务,如执行完写入操作后,想立即读到结果,然后做相应的逻辑处理,则需要做特殊处理
方法一
将select sql伪装成一个事务,让其自动在主库上执行。
语法:
begin; #显示开启一个事务
select ……
commit; #提交事务
示例:
BEGIN;
SELECT * FROM baidd.t1 WHERE id = 1;
COMMIT;
方法二
添加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实验的是加上分号后步行,不加分号可以。
--官网地址:
https://mariadb.com/kb/en/mariadb-maxscale-14/maxscale-hint-syntax/
以上是关于maxscale如何实现某块儿业务读写都在主库进行的主要内容,如果未能解决你的问题,请参考以下文章