mysql读写分离-mysql-proxy的配置

读写分离介绍

读写分离适合于读特别多的场景,一台只写,一台只读,提高读的效率。

实现的思路

前提:

读写分离建立在两台机器上,并且这两台机器是做了主从复制的,主库只写,从库只读,从而实现的。

实现:

第一种:

在主库创建一个只写的用户,而从库创建一个只写的用户,让程序去连接不同的服务器可达到读写分离的效果。

第二种:

通过代理软件,这种的好处是程序不需要关心写和读的操作分别连接的哪台服务器,只管往代理机器发即可,代理软件进行判断发往不同的mysql服务器。

通过代理实现的软件有:mysql-proxy,amoeba

代理方式的实现

图解:

环境:

需要开三台机器。

192.168.101  # 主库-只写

192.168.102  # 从库-只读

192.168.100  # 代理

安装lua脚本语言:

# 这个是mysql-proxy需要的

官方下载地址:

http://www.lua.org/ftp/

(1)安装依赖
yum install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make readline-devel -y

(2)下载包
wget http://www.lua.org/ftp/lua-5.3.5.tar.gz -P /opt/

(3)解压包
cd /opt/
tar xf lua-5.3.5.tar.gz

(4)修改Makefile文件
cd /opt/lua-5.3.5/
vi Makefile
# 设置 INSTALL_TOP= /usr/local/lua

(5)编译
make linux && make install

(6)添加环境变量
vim /etc/profile

添加:
export LUA_HOME=/usr/local/lua
export PATH=$PATH:$LUA_HOME/bin

环境变量生效:
source /etc/profile

安装mysql-proxy:

(1)    下载mysql-proxy包

wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -P /opt/

(2)    解压包和创建软连接

tar xf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit mysql-proxy085

(3)    创建logs目录

mkdir /opt/mysql-proxy085/logs

(4)    添加环境变量

echo "PATH=/opt/mysql-proxy085/bin/:$PATH" >> /etc/profile

source /etc/profile

(5)    配置代理文件

vim /etc/mysql-proxy.cnf

配置内容:

[mysql-proxy]
# 运行mysql-proxy用户
user=root
# mysql-proxy连接后端mysql服务器的用户
admin-username=mysql_proxy_user
# mysql-proxy连接后端mysql服务器的密码
admin-password=123456
# 代理的监听地址端口,默认端口4040
proxy-address=0.0.0.0:3307
#指定后端主master写入数据
proxy-backend-addresses=192.168.1.101:3306
#指定后端从slave读取数据
proxy-read-only-backend-addresses=192.168.1.102:3306
#指定读写分离配置文件位置
proxy-lua-script=/opt/mysql-proxy085/share/doc/mysql-proxy/rw-splitting.lua
#日志位置
log-file=/opt/mysql-proxy085/logs/mysql-proxy.log
#定义log日志级别,由高到低分别有(error|warning|info|message|debug)
log-level=debug
#以守护进程方式运行
daemon=true
#mysql-proxy崩溃时,尝试重启
keepalive=true

# 配置参数自行修改

(6)    修改配置文件权限

chmod 660 /etc/mysql-proxy.cnf

(7)    主库添加授权用户

grant all privileges on *.* to ‘mysql_proxy_user‘@‘192.168.1.%‘ identified by ‘123456‘;

flush privileges;

(8)    启动代理

mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

(9)    连接通过代理账户连接代理开启的ip及端口

注:前提你连接的这台机器得弄个mysql客户端

# 测试的话:mysql包解压了,添加环境变量即可

# 后端的话:直接通过模块就连接1.100机器3307端口即可

mysql -umysql_proxy_user -p123456 -h192.168.1.100 --port=3307

(10) 成功

注:lua是必须要安装的

试验结果:

注:写操作,主从两台机器都会操作,因为他们是主从复制的。

想要看出效果需要修改lua脚本,因为它有限制(表示多少连接才开启读写分离):

vim /opt/mysql-proxy085/share/doc/mysql-proxy/rw-splitting.lua

# min_idle_connnections参数表示最少多少个连接,才开始读写分离

查询读写次数的sql语句:

show global status where Variable_name in(‘com_select‘,‘com_insert‘,‘com_delete‘,‘com_update‘);

show global staus like ‘com_select‘;  # 单个的

原文地址:https://www.cnblogs.com/zezhou/p/11525081.html

时间: 2024-08-03 19:32:52

mysql读写分离-mysql-proxy的配置的相关文章

企业 - mysql 读写分离(proxy)

                                                              MySQL Proxy MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载平衡,故障.查询分析,查询过滤和修改等等. MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,

Mysql读写分离-Mysql router

原理:MySQL router根据端口来区分读写,把连接读写端口的所有请求发往master,连接只读端口的所有请求以轮询方式发往多个slave,从而实现读写分离 主:   SQL-Master      192.168.200.101/24 从:   SQL-Slave      192.168.200.102/24,192.168.200.103/24 mysql-router 192.168.200.104/24 使用rpm安装mysql-router rpm -ivh https://de

Spring+Hibernate框架下Mysql读写分离、主从数据库配置

1. 配置AOP切面类 DataSourceAdvice.java package until; import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; import org.springframework.aop.MethodBeforeAdvice; import org.springframework.aop.ThrowsAdvice; public class DataSo

MySQL 读写分离 (基于Amoeba)

一.MySQL读写分离原理 主数据库处理事务性查询,从数据库处理select查询.数据库复制用来把事务性查询导致的变更同步到从数据库中. 二.最为常见的读写分离有两种: 1.基于程序代码实现 在代码中根据select,insert进程路由分类: 优点:性能好,因为在代码中实现,不需要额外的硬件设备: 缺点:需要开发人员来实现,对代码改动比较大,不适合大型复杂应用: 2.基于代理层实现 MySQL-Proxy:隶属于MySQL开源项目: Amoeba:Amoeba是一个以MySQL为底层数据存储,

基于MYCAT中间件实现MYSQL读写分离

基于mycat实现mysql读写分离 完成主从复制的配置 /* 主节点:192.168.47.101 从节点:192.168.47.102 */ /*mycat为同一网段客户端*/ /* 修改主节点基础配置文件 */ /* */ [mysqld] server-id=101 log-bin /*重启服务 */ #systemctl restart mariadb /*创建从节点的账号 */ CREATE USER 'xie'@'192.168.47.102' IDENTIFIED BY '123

29_MySQL读写分离 MySQL多实例 、MySQL性能调优

版本:5.7.28 mysql51:192.168.4.51 主mysql52:192.168.4.52 从mysql50:192.168.4.50 客户机 1.实现MySQL读写分离搭建一主一从结构配置maxscale代理服务器测试分离配置 1.1 搭建一主一从结构192.168.4.51 主192.168.4.52 从测试OK 1.2 实现mysql读写分离1.2.1 配置数据读写分离服务器:192.168.4.50]# wget https://downloads.mariadb.com/

使用amoeba配置mysql读写分离

一,背景介绍: Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明.具有负载均衡.高可用性.sql过滤.读写分离.可路由相关的query到目标数据库.可并发请求多台数据库合并结果.要想搭建Amoeba读写分离,首先需要知道MySQL的主从配置.具体的架构图如下图: 二,配置所需的环境: Amoeba for mysql:192.168.1.28 Master : 192.168.1.247 Slave : 192.16

关于Mysql Proxy LUA实现Mysql读写分离

关于Mysql Proxy LUA读写分离是本文要介绍的内容,主要是来了解Mysql Proxy LUA的学习内容,具体内容来看本文详解,先来下载匹配的版本: http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/ 下载最新版的二进制版本以mysql-proxy-0.8.0-linux-glibc2.3-x86-32bit为例.www.lua.org 下载lua. 1.通过mysql代理mysql-proxy来实现mysql的读写分离. MyS

使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置

参考博文: MySQL-(Master-Slave)配置  本人按照博友北在北方的配置已成功  我使用的是 mysql5.6.27版本. 使用Atlas实现MySQL读写分离

配置 Mysql 读写分离+强制走写节点+根据主从延时的读写分离

配置 Mysql 读写分离+强制走写节点+根据主从延时的读写分离http://www.linuxmysql.com/14/2019/1008.htm 原文地址:https://blog.51cto.com/rscpass/2423421