前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PROXYSQL 怎么满足只读需求,满足读banlance的需求

PROXYSQL 怎么满足只读需求,满足读banlance的需求

作者头像
AustinDatabases
发布2020-10-10 11:34:34
7340
发布2020-10-10 11:34:34
举报
文章被收录于专栏:AustinDatabases

关于MYSQL的读写的需求,大部分都是在跟读作战,怎么读写分离,是在应用上实现, 或者通过的dns 转接,还是通过简单的中间件实现, 实际上这和需求以及当时可以满足需求的技术以及功耗比有关, 当然这也和数据库的量有关,所以没有那个更好,各花入个眼,没有那个更....

m'n

由于在目前的企业中大批使用了proxysql 作为替代MHA中的VIP功能的方式,已适应目前的需求,所以自然对于读写分离和只读的需求的事情就需要通过proxysql 来实现. 至于proxysql 有多好用,这个不必再说,之前的几期已经阐明了.

今天会实现两个功能,

1 某个账号只能去读取从库,不能去主库进行操作

2 某个账号,可以进行读写分离的功能实现

首先2台MYSQL 主从是要做的,另外如果喜欢可以加上MHA,这里已经忽略上次几期对于 MYSQL replication cluster 和 Innodb cluster 与 PROXYSQL 之间的如何顺利配置和工作的问题,,直接跳到,配置账号的步骤.

在MYSQL 中配置只读账号.

insert into mysql_users(username,password,default_hostgroup,default_schema) values ('read_only','1234.com',601,'mysql');

不知道 601 的意思的同学可以参照前两篇文字里面的hostgroup 定义,这里里面600表示写库 601 表示读库 这里面可以自定义.

所以经过上面的设置后,通过read_only账号则一定会访问读库,而不会访问写库.

红色的位置已经标明我们已经通过这个账号直接到了读库,而不是写库.

第一个需求已经完成了,那就到了第二个需求,我需要进行读写,这里需要进行相关的匹配,这个需求主要需要考虑几点

1 哪些开头的语句需要转移到读库

2 需要对于语句出现在事务的读做特殊处理

3 需要确认读库和主库的之间是否有延迟

问题一个一个回答

1 select 语句,一定是SELECT 语句,当然在proxysql中绑定是需要注意的

2 这个是需要验证的

3 在proxysql中是有相关的配置,通过second behind master 参数来做比对

在继续下面的文字之前,个人觉得在大部分的读写分离目前还是采用应用逻辑来做的不少,当然也有中间件来做的,在实际当中还是应用逻辑配合中间件来做的更合理一些,完全一种技术想HOLD整个的场景是有疏漏的.

问题1 在mysql的 query rule 中增加关于select 开头的语句的去向

并加载到proxysql中,然后直接测试到底是不是select的查询去了从库

这里会进行一个标识方便确认,这里将主库的一个表和从库的对应的表的数据进行不一致的处理,让从库比主库多一条数据库.

下面截图是从中间件访问,不同的语句可以访问同一个表,到达不同的数据库,第一个是到达从库,因为从库比主库的表多一行数据, 而使用了for update后则语句直接到了主库.

这就回答了第二个问题,如果我们有事务,则业务场景是我们读取数据,并且马上根据数据的结果进行DML 操作,则需要在语句中增加 for update .

满足事务统一在主库进行的要求. 而一般的查询,在从库进行,进行相关的读写分离,和事务中特殊的SELECT 语句与普通SELECT 查询的分割.

最后 一个问题通过UPDATE mysql_servers SET max_replication_lag=3;

来设置判断主从之间的存在差异以及容忍的时间,这里设置了是3秒 ,当然有关于与各个服务器进行monitor的配置也要进行变动.

另外在多提一个问题,如果我有多个从库,那怎么让80%的查询到一个从库,让20%的查询到另一个从库,可以设置吗? 答可以

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档