简介

1.分布式数据库中间件 DDM

分布式数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩容等能力,应对海量数据的高并发访问场景,有效提升数据库读写性能。

2.MySQL Router

mysql-router是mysql官方的轻量级的中间件,用于取代MySQL Proxy应用程序像访问MySQL一样访问MySQL Router,由MySQL Router将数据转发给后端的DDM节点,实现Sidecar模式负载均衡。

Sidecar模式是一种从应用程序本身剥离应用程序功能作为单独进程的方法。此模式允许我们向应用无侵入添加多种功能,从而无需向应用程序添加其他配置代码。建议MySQL Router与应用程序部署在同一台机器做Sidecar模式负载均衡,相对于服务端形式的负载均衡,Sidecar模式实现负载均衡可以缩短调用链路,减少服务端中心节点的压力,去中心化,使用更加可靠更加高效。

部署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 &

配置文件详解

首先,获取DDM连接串,如下图所示:

下面详细介绍mysql-router三种配置方式:

01

作为中心代理节使用

mysql-router绑定IP不限制,即监听所有ip,任意节点都可以访问,作为数据库访问代理,轮询DDM各个节点。其中,destinations为上文获得的DDM连接串。

vi /usr/local/mysqlrouter/etc/mysqlrouter.conf

[DEFAULT]

logging_folder = /usr/local/mysqlrouter/log/

plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter/

config_folder = /usr/local/mysqlrouter/etc/

runtime_folder = /usr/local/mysqlrouter/run/

[logger]

level = INFO

# 负载均衡配置

[routing:balancing]

# 绑定的IP地址

bind_address=0.0.0.0

# 监听的端口

bind_port = 7002

# 连接超时时间(秒)

connect_timeout = 3

# 最大连接数

max_connections = 100

# 后端服务器地址.默认读进行轮询

destinations = 192.168.4.235:5066,192.168.4.231:5066

# 路由策略

routing_strategy=round-robin

[keepalive]

interval = 60

连接示例:

[root@xxx ]# ./mysql -uddmtest -h128.11.2.2 -P7002 -p

Enter password:

mysql>

128.11.2.2为Mysql Router所在IP。

02

作为本地数据库代理使用

mysql-router绑定本地地址127.0.0.1,作为本地数据库访问代理,仅允许当前节点访问数据库。其要求需要访问数据库的应用与router部署在同一节点,更安全可靠。

vi /usr/local/mysqlrouter/etc/mysqlrouter.conf

[DEFAULT]

logging_folder = /usr/local/mysqlrouter/log/

plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter/

config_folder = /usr/local/mysqlrouter/etc/

runtime_folder = /usr/local/mysqlrouter/run/

[logger]

level = INFO

# 负载均衡配置

[routing:balancing]

# 绑定的IP地址

bind_address=127.0.0.1

# 监听的端口

bind_port = 7002

# 连接超时时间(秒)

connect_timeout = 3

# 最大连接数

max_connections = 100

# 后端服务器地址.默认读进行轮询

destinations = 192.168.4.235:5066,192.168.4.231:5066

# 路由策略

routing_strategy=round-robin

[keepalive]

interval = 60

连接示例:

[root@xxx ]# ./mysql -uddmtest -h127.0.0.1 -P7002 -p

Enter password:

mysql>

mysql客户端与Mysql Router在同一节点。

03

作为本地数据库代理,使用Unix sockets连接(推荐)

mysql-router不绑定ip和端口,只使用Unix sockets连接,这样可以不经过tcp协议转发数据,只走操作系统socket通道,更加高效。其同样要求需要访问数据库的应用与router部署在同一节点,但是安全可靠,且高效。

vi etc/mysqlrouter.conf

[DEFAULT]

logging_folder = /usr/local/mysqlrouter/log/

plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter/

config_folder = /usr/local/mysqlrouter/etc/

runtime_folder = /usr/local/mysqlrouter/run/

[logger]

level = INFO

# 负载均衡配置

[routing:balancing]

# 绑定的IP端口

socket = /tmp/mysqlrouter.sock

# 连接超时时间(秒)

connect_timeout = 3

# 最大连接数

max_connections = 100

# 后端服务器地址.默认读进行轮询

destinations = 192.168.4.235:5066,192.168.4.231:5066

# 路由策略

routing_strategy=round-robin

[keepalive]

interval = 60

其中,destinations为上文获得的DDM连接串

连接示例:

[root@xxx ]# ./mysql -uddmtest -p -S /tmp/mysqlrouter.sock

Enter password:

mysql>

mysql客户端与Mysql Router在同一节点。

分布式数据库DDM Sidecar模式负载均衡的更多相关文章

  1. 搞懂分布式技术9:Nginx负载均衡原理与实践

    搞懂分布式技术9:Nginx负载均衡原理与实践 本篇摘自<亿级流量网站架构核心技术>第二章 Nginx负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容, ...

  2. LVS DR模式 负载均衡服务搭建

    LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...

  3. LVS+Keepalived-DR模式负载均衡高可用集群

    LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...

  4. SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)

    SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...

  5. 高级java高并发,高性能,分布式,高可用,负载均衡,系统架构实战

    java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战 视频课程包含: ...

  6. windows NLB实现MSSQL读写分离--从数据库集群读负载均衡

    主从模式,几乎大部分出名的数据库都支持的一种集群模式. 当Web站点的访问量上去之后,很多站点,选择读写分离,减轻主数据库的的压力.当然,一主多从也可以作用多个功能,比如备份.这里主要演示如何实现从数 ...

  7. Dubbo学习(二) Dubbo 集群容错模式-负载均衡模式

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  8. Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)

    最近公司要给客户提供一套集群方案,项目组采用了Apache和Tomcat的集群配置,用于实现负载均衡的实现. 由于以前没有接触过Apache,因此有些手生,另外在网上搜寻了很多有关这方面的集群文章,但 ...

  9. 基于amoeba实现mysql数据库的读写分离/负载均衡

    一.Amoeba的简述:[来自百度百科]      Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请 ...

随机推荐

  1. CAD参数绘制半径标注(网页版)

    主要用到函数说明: _DMxDrawX::DrawDimRadial 绘制一个半径标注.详细说明如下: 参数 说明 DOUBLE dCenterX 被标注的曲线的中点X值 DOUBLE dCenter ...

  2. Java IO(三)--字节流基本使用

    I/O流分类: InputStream和Read的子类都有read(),用来读取单个字节或字节数组 OutputStream和write的子类都有write(),用来写入单个字节或字节数组 一般都是通 ...

  3. SqlServer数据库练习20190211

    一条update语句,修改多个条件 update orderdt_jimmy set qty = (case else qty end); 好了,就这样

  4. 利用jQuery对li标签操作

    <ul class="con" id="products"> <li i=" class=""> < ...

  5. C++如何显式调用常成员函数

    C++的常成员函数与同名成员函数重载时,该如何显式调用常成员函数? 具体的一个小例子: #include <iostream> using namespace std; class C1 ...

  6. 12.Spring通过FactoryBean配置Bean

    为啥要使用FactoryBean: 在配置Bean的时候,需要用到IOC容器中的其它Bean,这个时候使用FactoryBean配置最合适. public class Car { private St ...

  7. mysql查询排名

    student_work表 student_info表 sql语句:按grade从高到低排名 结果:

  8. jQuery的ready与js的load事件的区别

    摘自:http://www.cnblogs.com/see7di/archive/2011/07/15/2239677.html 为了理解这两个事件的异同,读者应该先了解HTML文档加载的顺序. DO ...

  9. stark组件之显示页面内容搭建(六)

    之前主要介绍了前端页面list_fiter功能的显示,但是list_display功能的展示并没有过多介绍,这里介绍一下是如何实现的. 可以看到凡是蓝线圈起来的都是通过字段名反射一个个取出来的,红线的 ...

  10. (十五)python3 可变长参数(arg,*args,**kwargs)

    可变长参数(*args,**kwargs) 一.最常见的是在定义函数时,预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字.其实并不是必须写成*args 和**kwar ...