简介

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. Laravel Excel模板导出-带图片

    Laravel Excel版本 3.1 1.数据准备 建个2个表,加点数据,控制器中查数据,给模板使用. 表1-order:id, order_no, img_path, note 表2-order_ ...

  2. zabbix4.2学习笔记--用自带的mysql监控模块

    这里演示监控zabbix本身用到的mysql 第一步:建立mysql监控用户 在生产环境中,出于安全考虑,建议监控客户端数据库时,单独配置一个查询权限用户做查询操作即可 # 撤掉安装时给予的分配单个数 ...

  3. 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框

    尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...

  4. Spring中操作日志记录web请求的body报文

    在spring中,通常可以使用切面编程方式对web请求记录操作日志.但是这种方式存在一个问题,那就是只能记录url中的请求参数,无法记录POST或者PUT请求的报文体,因为报文体是放在request对 ...

  5. Insert 语句对 nologging 与 logging表 在不同场景下的优化

    前言 前段时间报表数据库上有条insert sql语句,插入的大量数据,执行非常慢,需要对其进行分析优化. 分析步骤是在:ARCHIVE与NOARCHIVE模式下进行. 测试场景: 分别对表的常规插入 ...

  6. 创建Tensor

    目录 创建Tensor numpy, list numpy list zeros, ones, fill zeros ones fill random 打乱idx后,a和b的索引不变 constant ...

  7. Python面向对象之类属性类方法静态方法

    类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...

  8. Hadoop2.x异常总结

    问题1: 在执行bin/hdfs namenode -format格式化HDFS命令时,抛出异常,异常如下: 16/10/26 18:32:45 ERROR namenode.NameNode: Fa ...

  9. 第十八节:Scrapy爬虫框架之settings文件详解

    # -*- coding: utf-8 -*- # Scrapy settings for maoyan project## For simplicity, this file contains on ...

  10. 【已解决】ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked

    官网说明: elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true 官网的解释 是:发生系统swapping的时候ES节点的性能会非常差,也会影响节点 ...