Linux MySQL Proxy 读写分离
导读
因为读写分离是建立在MySQL集群主从复制的基础上,还不了解的,先看我另一篇博客:点我直达
MySQL-Proxy简介
mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上。mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:
进一步的,mysql-proxy可以分析与修改请求。拦截查询和修改结果,需要通过编写Lua脚本来完成。mysql-proxy允许用户指定Lua脚本对请求进行拦截,对请求进行分析与修改,它还允许用户指定Lua脚本对服务器的返回结果进行修改,加入一些结果集或者去除一些结果集均可。
根本上,mysql-proxy是一个官方提供的框架,具备良好的扩展性,可以用来完成:
- sql拦截与修改
- 性能分析与监控
- 读写分离
- 请求路由
下载
官网链接:点我直达
百度云盘地址:https://pan.baidu.com/s/1Aw1laIWYJVvHYshHXw4p_Q 密码: 9qif
需求
- 1台MySQL-Proxy机器,IP:192.168.1.106
- 1台MySQl主服务器(可读可写),IP:192.168.1.107
- 1台MySQL从服务器(只读),IP:192.168.1.109
解压MySQL-Proxy
在192.168.1.106上解压:mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
重命名文件
MySQL配置
创建mysql-proxy.cnf
vim mysql-proxy.cnf
[mysql-proxy]
admin-username=root #admin用户名
admin-password=root admin密码
proxy-address=192.168.1.106:4040 # 代理地址
proxy-backend-addresses=192.168.1.107:3306 #mysql主服务器ip地址,默认端口3306
proxy-read-only-backend-addresses=192.168.1.109:3306 #mysql从服务器ip地址,有多个逗号隔开 ip:port,ip:port,ip:port
proxy-lua-script=/cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua #lua位置
log-file=/cyb/soft/mysql-proxy/log/mysql-proxy.log #日志文件存储路径
log-level=debug
daemon=true # mysql-proxy以守护进程方式运行
keepalive=true #保持连接启动进程会有2个, 一号进程用来监视二号进程
创建log目录
修改mysql-proxy.cnf文件的权限
chmod 660 mysql-proxy.cnf
修改rw-splitting.lua
vim /cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
min_idle_connections:最小闲置连接数
max_idle_connections:最大闲置连接数
MySQL-Proxy启动
./mysql-proxy --defaults-file=/cyb/soft/mysql-proxy.cnf
测试
在192.168.1.106上关闭防火墙
service iptables stop chkconfig iptables off
演示过程中,有2次连不上,原因不明,还有待查证,目前功能是已经实现了,注意,此时连mysql-proxy的端口已经不是3306了,是4040
Linux MySQL Proxy 读写分离的更多相关文章
- Amoeba实现mysql主从读写分离
Amoeba实现mysql主从读写分离 这段在网上看了下关于amoeba的文章,总体感觉好像要比mysql-proxy好的多,也参考了不少的资料,此文章可能与其他文章作者会有雷同的地方,请谅解,但是此 ...
- MySQL的读写分离的几种选择
MySQL的读写分离的几种选择 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 原址如下: http://heylinux.com/archives/1004. ...
- MySQL/MariaDB读写分离配置
DB读写分离描述 数据库的读写分离其实就是为了加减少数据库的压力:数据库的写入操作由主数据库来进行,读取操作由从数据库来进行操作.实现数据库读写分离技术是有很多方法的,在这里我就用一个比较简单的mys ...
- Amoeba搞定mysql主从读写分离
前言:一直想找一个工具,能很好的实现mysql主从的读写分离架构,曾经试用过mysql-proxy发现lua用起来很不爽,尤其是不懂lua脚本,突然发现了Amoeba这个项目,试用了下,感觉还不错,写 ...
- Centos7源码安装mysql及读写分离,互为主从
Linux服务器 -源码安装mysql 及读写分离,互为主从 一.环境介绍: Linux版本: CentOS 7 64位 mysq版本: mysql-5.6.26 这是我安装时所使用的版本, ...
- python实现mysql的读写分离及负载均衡
Oracle数据库有其公司开发的配套rac来实现负载均衡,目前已知的最大节点数能到128个,但是其带来的维护成本无疑是很高的,并且rac的稳定性也并不是特别理想,尤其是节点很多的时候. 但是,相对my ...
- MySQL ProxySQL读写分离实践
目的 在上一篇文章MySQL ProxySQL读写分离使用初探里初步介绍了ProxySQL的使用,本文继续介绍它的一些特点和DBProxy的性能差异.深入一些去了解ProxySQL,通过测试来说明Pr ...
- MySQL Router实现MySQL的读写分离
1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...
- 搭建基于MySQL的读写分离工具Amoeba
搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.2 ...
随机推荐
- 问题_001_Vivian
2020.02.02,大哥问了这样一个问题 ===> s = "PYTHON" while s != "": for c in s: if c == &q ...
- 谈谈MySQL 索引
1.索引是什么 索引(Index)是帮助MySQL高效获取数据的数据结构.我们可以简单理解为:索引的目的在于提高查询效率. 2.原理 索引的数据结构是B+树,原理图如下 关于B+树的详细介绍,可以参见 ...
- 《腾讯网UED体验设计之旅》读后感
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Python 每日一练(3)
引言 今天的每日一练,学习了一下用Python生成四位的图像验证码,就是我们常常在登录时见到的那种(#`O′) 思路分析 正如常见的那种图像验证码,它是由数字和字母的随机组合产生的,所以我们首先的第一 ...
- Java中的集合(七)双列集合顶层接口------Map接口架构
Java中的集合(七)双列集合顶层接口------Map接口 一.Map接口的简介 通过List接口,我们知道List接口下的集合是单列集合,数据存储是单列的结构.Map接口下是一个键值对(key-v ...
- for循环结构的使用
/* for循环格式: for(①初始化条件; ②循环条件 :③迭代部分){ //④循环体 } 执行顺序:①-②-④-③---②-④-③-----直至循环条件不满足 退出当前循环 * */ publi ...
- 【JVM】如何理解强引用、软引用、弱引用、虚引用?
整体架构 强引用 强引用是默认支持,当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会回收对象. 强引用是最常见的普通对象引用,只要还有强引用指向对象,对象就存活,垃圾回 ...
- jchdl - GSL值的传播
https://mp.weixin.qq.com/s/jgMljoca-Cwe9x0NaTLzZg GSL的拓扑模型是线和节点连接的模型,值的传播,即是值在线和节点之间传播和转化的过程. 值的 ...
- Shiro (Shiro + JWT + SpringBoot应用)
Shiro (Shiro + JWT + SpringBoot应用) 目录 Shiro (Shiro + JWT + SpringBoot应用) 1.Shiro的简介 2.Shiro + JWT + ...
- Java实现 LeetCode 793 阶乘函数后K个零 (分析)
793. 阶乘函数后K个零 f(x) 是 x! 末尾是0的数量.(回想一下 x! = 1 * 2 * 3 * - * x,且0! = 1) 例如, f(3) = 0 ,因为3! = 6的末尾没有0:而 ...