MysqL读写分离的实现-Mysql proxy中间件的使用
为什么要架设读写分离,这里不做多余的说明,想了解具体原理,请百度或者参考其他帖子。在这里只做大概的配置说明,测试中使用三台服务器
192.168.136.142 主服务器
192.168.136.143 从服务器
192.168.136.144 中间服务器
解压安装的方式安装
https://downloads.mysql.com/archives/proxy/,安装Mysql proxy 需要确保服务器安装过lua,因为Mysql依赖于lua5.1以上版本,rpm -q lua,看看是否安装,还依赖libevent,这里我选择的还是0.83版本,比较稳定。mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz

在中间服务器 下载完成之后,解压并移动目录
tar -zxvf mysql-proxy-0.8.-linux-glibc2.-x86-64bit
mv ./mysql-proxy-0.8.-linux-glibc2.-x86-64bit /usr/local/mysql-proxy/
进入/usr/local/mysql-proxy目录,创建脚本存放目录和日志目录,并把解压目录后的相关文件拷贝到对应目录。
cd /usr/local/mysql-proxy
mkdir lua #创建脚本存放目录
mkdir logs #创建日志目录
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本
然后在中间服务器配置一个mysql-proxy启动配置文件,并赋予执行权限,chmod 660 /etc/mysql-porxy.cnf
vi /etc/mysql-proxy.cnf #创建配置文件
//内容在下
[mysql-proxy]
user=root #运行mysql-proxy用户
admin-username=pro #主从mysql共有的用户
admin-password=pro123 #用户的密码
proxy-address=192.168.136.144: #mysql-proxy运行ip和端口,不加端口,默认4040
proxy-read-only-backend-addresses=192.168.136.143 #指定后端从slave读取数据
proxy-backend-addresses=192.168.136.142 #指定后端主master写入数据
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua #指定读写分离配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua #指定管理脚本
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log #日志位置
log-level=info #定义log日志级别,由高到低分别有(error|warning|info|message|debug),调试的时候建议debug
daemon=true #以守护进程方式运行
keepalive=true #mysql-proxy崩溃时,尝试重启
这里编辑一个脚本,用于快速启动mysql-proxy,并赋予执行权限
vim /etc/profile.d/mysql-proxy.sh
//内容在下
export PATH=$PATH:/usr/local/mysql-proxy/bin/
chmod 660 /etc/mysql-porxy.cnf
执行以下命令查看帮助参数

修改读写分离配置文件
vim /usr/local/mysql-proxy/lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = , #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = , #默认8,改为1
is_debug = false
}
end
启动服务
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
查看和关闭服务命令如下
netstat -tupln | grep #已经启动
killall - mysql-proxy #关闭mysql-proxy使用
接下来还需要在主服务器授权,在主服务器创建proxy用户用于mysql-proxy使用,从服务器也会同步这个操作
mysql> grant all on *.* to 'pro'@'192.168.136.144' identified by 'pro123';
接下来使用客户端连接中间服务器,并测试读写
mysql -u pro -h 192.168.136.144 -P -p pro123
测试读写成功了,这里不做说明了
MysqL读写分离的实现-Mysql proxy中间件的使用的更多相关文章
- Mysql读写分离方案-MySQL Proxy环境部署记录
Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换.MySQL Proxy有一项强大功能是实现"读写分离" ...
- MaxScale:实现MySQL读写分离与负载均衡的中间件利器
1. MaxScale 是干什么的? 配置好了 MySQL 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡. 读写分离和负载均衡 是MySQL集群的 ...
- mysql读写分离的解决方案
来源于网上整理 http://yanwt.iteye.com/blog/1460780 现有三种解决方式实现mysql读写分离 1 程序修改mysql操作类 优点:直接和数据库通信,简单快捷的读写分离 ...
- mysql读写分离——中间件ProxySQL的简介与配置
mysql实现读写分离的方式 mysql 实现读写分离的方式有以下几种: 程序修改mysql操作,直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配,需要开发人员协助. am ...
- Mysql读写分离-Amoeba Proxy
参考:http://www.linuxidc.com/Linux/2015-10/124115.htm 一个完整的MySQL读写分离环境包括以下几个部分: 应用程序client database pr ...
- 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变
[Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...
- mysql中间件proxysql实现mysql读写分离
目录 1. mysql实现读写分离的方式 2. ProxySQL简介 3. ProxySQL安装 4. ProxySQL的Admin管理接口 5. 和admin管理接口相关的变量 5.1 admin- ...
- 基于MYCAT中间件实现MYSQL读写分离
基于mycat实现mysql读写分离 完成主从复制的配置 /* 主节点:192.168.47.101 从节点:192.168.47.102 */ /*mycat为同一网段客户端*/ /* 修改主节点基 ...
- amoeba实现MySQL读写分离
amoeba实现MySQL读写分离 准备环境:主机A和主机B作主从配置,IP地址为192.168.131.129和192.168.131.130,主机C作为中间件,也就是作为代理服务器,IP地址为19 ...
随机推荐
- mybatis实战教程二:多对一关联查询(一对多)
多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...
- WEB安全_csrf攻击
什么是xss跨站攻击? 正常访问服务器A,用户信任并在服务器A上登录操作,服务器A保存着用户的session数据,这时用户并没有退出服务器A的系统,然后访问危险服务器B,本来是用户请求服务器返回数据, ...
- laravel5.5 when()的用法
当你在使用where语句有前提条件时,比如某值为1的时候才执行where子句,否则不执行,这个时候,laravel5.5新出了一个简便方法when($arg,fun1[,fun2]). 具体用法如下: ...
- linux(centos)下安装git并上传代码
cat /etc/redhat-release 查看系统版本信息 >>CentOS Linux release 7.4.1708 (Core) 背景:我已经注册了github账号,之前 ...
- js给页面添加滚动事件并判断滚动方向
<script> var scrollFunc = function (e) { var direct = 0; e = e || window.event; if (e.wheelDel ...
- awk 指定{}内x的替换
替换{}中的x为; 原字符串 oxo{axbxc}oxo{dxexf}oxo 结果 oxo{a;b;c}oxo{d;e;f}oxo awk '{for(i=1;i<=NF;i++){ ...
- CentOS7搭建时间服务器-chrony(不坑)
标签(linux): chrony 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 之前centos6我们一直用的ntp时间服务器,虽然到CentOS7上也可以装 ...
- [UWP]新控件ColorPicker
1. 前言 Fall Creators Update中提供了一个新得ColorPicker控件,解决了以前选择颜色只能用Combo Box的窘境. 2. 一个简单的例子 <ColorPicker ...
- java for循环增强(foreach)
for循环增强,在此之前还不知道foreach有这样的功能,先鄙视一下自己,留给自己看: 功能: ***若List用foreach : [ for(Student stu : list) ]这种形 ...
- C#将图片背景从透明变成白色
var img = System.Drawing.Image.FromStream(ms); int width = img.Width; int height = img.Height; var x ...