分布式数据库DDM Sidecar模式负载均衡
1 简介
分布式数据库中间件 DDM
分布式数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩容等能力,应对海量数据的高并发访问场景,有效提升数据库读写性能。
MySQL Router
mysql-router是mysql官方的轻量级的中间件,用于取代MySQL Proxy应用程序像访问MySQL一样访问MySQL Router,由MySQL Router将数据转发给后端的DDM节点,实现Sidecar模式负载均衡。
Sidecar模式是一种从应用程序本身剥离应用程序功能作为单独进程的方法。此模式允许我们向应用无侵入添加多种功能,从而无需向应用程序添加其他配置代码。建议MySQL Router与应用程序部署在同一台机器做Sidecar模式负载均衡,相对于服务端形式的负载均衡,Sidecar模式实现负载均衡可以缩短调用链路,减少服务端中心节点的压力,去中心化,使用更加可靠更加高效。
参考资料:
分布式数据(DDM)
https://www.huaweicloud.com/product/ddm.html
MySQL Router文档
https://dev.mysql.com/doc/mysql-router/8.0/en/
https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-conf-options.html
mysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz
2 部署Mysql-Router服务
# 解压安装程序文件
tar -xzvf mysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz
# 重命名安装文件夹
mv mysql-router-8.0.11-linux-glibc2.12-x86-64bit /usr/local/mysqlrouter
# 创建日志和配置相关文件存放目录
cd /usr/local/mysqlrouter
mkdir logs
mkdir etc
# 利用模板文件创建配置文件
cp /usr/local/mysqlrouter/share/doc/mysqlrouter/sample_mysqlrouter.conf ./etc/mysqlrouter.conf
# 启动 mysql router
/usr/local/mysqlrouter/bin/mysqlrouter -c /usr/local/mysqlrouter/etc/mysqlrouter.conf &
3 配置文件详解
首先,获取DDM连接串,如下图所示
下面详细介绍mysql-router三种配置方式:
I、作为中心代理节使用
mysql-router绑定IP不限制,即监听所有ip,任意节点都可以访问,作为数据库访问代理,轮询DDM各个节点。其中,destinations为上文获得的DDM连接串。
vi /usr/local/mysqlrouter/etc/mysqlrouter.conf
连接示例:
128.11.2.2为Mysql Router所在IP
II、作为本地数据库代理使用
mysql-router绑定本地地址127.0.0.1,作为本地数据库访问代理,仅允许当前节点访问数据库。其要求需要访问数据库的应用与router部署在同一节点,更安全可靠。
vi /usr/local/mysqlrouter/etc/mysqlrouter.conf
连接示例:
mysql客户端与Mysql Router在同一节点。
III、作为本地数据库代理,使用Unix sockets连接(推荐)
mysql-router不绑定ip和端口,只使用Unix sockets连接,这样可以不经过tcp协议转发数据,只走操作系统socket通道,更加高效。其同样要求需要访问数据库的应用与router部署在同一节点,但是安全可靠,且高效。
vi etc/mysqlrouter.conf
其中,destinations为上文获得的DDM连接串
连接示例
mysql客户端与Mysql Router在同一节点。
来源:华为云社区 作者:勤劳的星星
相关文章
- android开发之sqlite数据库升级
- 数据库的Timeout
- 第一百六十节,封装库--JavaScript,ajax注册表单到数据库
- 详解MYSQL数据库密码的加密方式及破解方法
- 融合数据库生态:利用 EventBridge 构建 CDC 应用
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转)
- Python操作MYSQL数据库
- Android学习---如何创建数据库,SQLite(onCreate,onUpgrade方法)和SQLiteStudio的使用
- Android通讯录数据库操作
- PHP(面向对象)连接数据库,实现基本的增删改查
- Atitit 数据库 负载均衡 方法总结 目录 1. 对称模型负载均衡 vs 非对称模型2 1.1. 业务分离法2 1.2. App + db分布式分离法2 2. 负载均衡算法2 2.1.
- Qt——数据库编程
- 〖Python 数据库开发实战 - MySQL篇㉕〗- 数据更新操作 - UPDATE 语句
- 〖Python 数据库开发实战 - Python与Redis交互篇②〗- 利用 redis-py 实现字符串类型的常用指令操作
- 云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效
- 【Nginx】如何使用Nginx实现MySQL数据库的负载均衡?看完我懂了!!
- 使用Navicat将数据从Excel导入到MySQL数据库
- 【MySQL数据库原理】MySQL 数据库环境变量设置问题完整解决与数据库删除测试
- DM的学习心得和知识总结(三)|DM数据库DBMS_WORKLOAD_REPOSITORY 包及其性能分析工具AWR
- 云原生之使用docker部署Postgresql数据库