43|ProxySQL:数据库高可用了,应用高可用怎么做?
俊达
你好,我是俊达。
通过前面几讲,我们知道了怎么使用 MySQL 的数据复制技术,来实现数据库层面的高可用。但是对于应用系统,当后端的 MySQL 发生高可用切换时,应该怎么处理?
这里有几种可选的方案。
应用通过域名访问数据库。域名指向主库,当后端数据库发生主备切换后,将域名指向新的主库。使用域名存在几个问题,包括域名缓存的问题,以及端口的问题。因为域名只能解析到 IP,如果主库和备库的端口不一样,就无法直接通过切换域名来解决。
在客户端解决。将 MySQL 集群中的实例信息都配置到应用程序中,在应用程序中自动检测主库和备库信息。也可以引入一些客户端的 SDK 来实现高可用。使用客户端的方案,会给应用开发带来额外的编码工作,或者对程序的开发语言有要求。
引入 Proxy,应用程序只访问 Proxy。Proxy 内部自动识别主库,将应用的请求转发给正确的后端数据库。这里 Proxy 的作用,和在 web 高可用架构中的负载均衡器作用类似。使用 Proxy 的好处,一是对客户端的限制少,你可以使用熟悉的方式访问数据库。而且有的 Proxy 可以通过一些策略,实现读写分离、SQL 黑名单和白名单、SQL 改写等功能。
业界 MySQL Proxy 的产品比较多。这一讲中,我们就以开源的 ProxySQL 为例,来看一下数据库高可用的一种实现方式。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. Proxy的作用类似于在web高可用架构中的负载均衡器,可以实现读写分离、SQL黑名单和白名单、SQL改写等功能。 2. ProxySQL支持MySQL传统的主备复制架构,也支持MGR架构,客户端使用标准的MySQL协议访问ProxySQL。 3. 配置ProxySQL需要配置文件和数据库,包括配置监控账号、后端mysql实例连接信息、连接proxysql和后端实例的账号、查询路由信息、后端mysql集群信息以及调优相关参数。 4. ProxySQL使用监控账号来探测后端MySQL实例的健康度,需要有一些基本的权限。 5. ProxySQL的使用场景包括实现读写分离,需要配置hostgroup和用户信息。 6. ProxySQL只根据后端MySQL的read_only状态来判断,是将实例放到write hostgroup还是read hostgroup。 7. 利用mysql_query_rules表中的error_msg字段,可以实现SQL黑名单的功能,临时屏蔽对数据库性能影响较大的SQL。 8. 使用查询修改功能,可以在不改变应用程序的情况下,修改SQL语句,例如给SQL添加hint以优化性能。 9. ProxySQL作为一个程序,本身也可能出现故障,部署多台ProxySQL并消除单点问题,可以通过ProxySQL自带的集群功能实现多个节点之间的配置信息同步。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》,新⼈⾸单¥59
《MySQL 运维实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论