mysql实现读写分离中间件MySQL Proxy
2016-12-04 21:41
441 查看
MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。
MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。
MySQL Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询,让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。
官网:http://dev.mysql.com/doc/mysql-proxy/en/
下载:http://downloads.mysql.com/archives/proxy/
1.环境配置
master 192.168.0.109
slave 192.168.0.110
slave 192.168.0.112
已经配置好主从复制,基于gtid 事务的复制。mysql版本5.7.12
数据库统一访问用户:root 密码:abc123 并授权其他机器访问
grant all privileges on test_db.* to 'root'@'%' identified by 'abc123';
flush privileges;
创建了数据库test_db,和表temp。
2.安装mysql-proxy
实现读写分离是由lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装
wget http://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit mysql-proxy
3.配置mysql-proxy
cd mysql-proxy
mkdir lua #创建脚本存放目录
mkdir logs #创建日志目录
mkdir conf #放置配置文件
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本
vi conf/mysql-proxy.cnf
[mysql-proxy]
daemon=true #以守护进程方式运行
user=root #运行mysql-proxy用户
pid-file=/root/mysql-proxy/logs/mysql-proxy.pid #进程pid文件
keepalive=true #mysql-proxy崩溃时,尝试重启
event-threads=4 #event-handing线程数,默认值是1
max-open-files=2048 #最大文件句柄数
log-level=info #日志级别:error|warning|info|message|debug
#log-use-syslog=true #日志使用syslog,和log-file只能开启一个
log-file=/root/mysql-proxy/logs/mysql-proxy.log #日志文件
admin-username=root #主从mysql共有的用户
admin-password=abc123 #用户的密码
admin-address=192.168.0.112:4040 #mysql-proxy运行ip和端口,不加端口,默认4040
admin-lua-script=/root/mysql-proxy/lua/admin-sql.lua #指定管理脚本
proxy-skip-profiling=true #是否禁用查询性能剖析
proxy-backend-addresses=192.168.0.109:3306 #后端mysql的ip和port
proxy-read-only-backend-addresses=192.168.0.110:3306,192.168.0.112:3306 #指定后端从slave读取数据,多个以逗号分隔,超过2条换行写
proxy-lua-script=/root/mysql-proxy/lua/rw-splitting.lua #指定读写分离配置文件位置
由于安全要求,必须将配置文件权限设为660(创建人可读写,同组人可读),否则不允许启动。
chmod 660 conf/mysql-proxy.cnf
4.修改读写分离脚本
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = 1, 默认8,改为1
is_debug = false
}
end
5.启动mysql-proxy
bin/mysql-proxy --defaults-file=conf/mysql-proxy.cnf
使用多个客户端查询,添加数据测试。
参考文章:
1.MySQL Proxy使用
2.MySQL Proxy快速实现读写分离以及负载均衡
3.mysql-proxy的读写分离
4.mysql-proxy
mysql-proxy介绍
mysql-proxy命令参数
mysql-proxy脚本编程
mysql-proxy常见问题
MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。
MySQL Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询,让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。
官网:http://dev.mysql.com/doc/mysql-proxy/en/
下载:http://downloads.mysql.com/archives/proxy/
1.环境配置
master 192.168.0.109
slave 192.168.0.110
slave 192.168.0.112
已经配置好主从复制,基于gtid 事务的复制。mysql版本5.7.12
数据库统一访问用户:root 密码:abc123 并授权其他机器访问
grant all privileges on test_db.* to 'root'@'%' identified by 'abc123';
flush privileges;
创建了数据库test_db,和表temp。
2.安装mysql-proxy
实现读写分离是由lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装
wget http://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit mysql-proxy
3.配置mysql-proxy
cd mysql-proxy
mkdir lua #创建脚本存放目录
mkdir logs #创建日志目录
mkdir conf #放置配置文件
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本
vi conf/mysql-proxy.cnf
[mysql-proxy]
daemon=true #以守护进程方式运行
user=root #运行mysql-proxy用户
pid-file=/root/mysql-proxy/logs/mysql-proxy.pid #进程pid文件
keepalive=true #mysql-proxy崩溃时,尝试重启
event-threads=4 #event-handing线程数,默认值是1
max-open-files=2048 #最大文件句柄数
log-level=info #日志级别:error|warning|info|message|debug
#log-use-syslog=true #日志使用syslog,和log-file只能开启一个
log-file=/root/mysql-proxy/logs/mysql-proxy.log #日志文件
admin-username=root #主从mysql共有的用户
admin-password=abc123 #用户的密码
admin-address=192.168.0.112:4040 #mysql-proxy运行ip和端口,不加端口,默认4040
admin-lua-script=/root/mysql-proxy/lua/admin-sql.lua #指定管理脚本
proxy-skip-profiling=true #是否禁用查询性能剖析
proxy-backend-addresses=192.168.0.109:3306 #后端mysql的ip和port
proxy-read-only-backend-addresses=192.168.0.110:3306,192.168.0.112:3306 #指定后端从slave读取数据,多个以逗号分隔,超过2条换行写
proxy-lua-script=/root/mysql-proxy/lua/rw-splitting.lua #指定读写分离配置文件位置
由于安全要求,必须将配置文件权限设为660(创建人可读写,同组人可读),否则不允许启动。
chmod 660 conf/mysql-proxy.cnf
4.修改读写分离脚本
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = 1, 默认8,改为1
is_debug = false
}
end
5.启动mysql-proxy
bin/mysql-proxy --defaults-file=conf/mysql-proxy.cnf
使用多个客户端查询,添加数据测试。
参考文章:
1.MySQL Proxy使用
2.MySQL Proxy快速实现读写分离以及负载均衡
3.mysql-proxy的读写分离
4.mysql-proxy
mysql-proxy介绍
mysql-proxy命令参数
mysql-proxy脚本编程
mysql-proxy常见问题
相关文章推荐
- MysqL读写分离的实现-Mysql proxy中间件的使用
- mysql中间件amoeba实现mysql读写分离
- MySQL Proxy 实现 MySQL 读写分离提高并发负载
- MySQL Proxy 实现 MySQL 读写分离提高并发负载
- mysql的集群及读写分离实现方案(利用mycat中间件)
- 关于Mysql Proxy LUA实现Mysql读写分离
- mysql实现读写分离中间件Amoeba
- MaxScale:实现MySQL读写分离与负载均衡的中间件利器
- MaxScale:实现MySQL读写分离与负载均衡的中间件利器
- 使用mysql 中间件 Atlas 实现数据库读写分离
- Mysql读写分离的两种方法对比:Spring+JPA应用层实现 vs Amoeba中间件实现
- amoeba数据库中间件透明实现MYSQL读写分离
- mysql读写分离-mysql proxy实现
- Mysql 读写分离实现方案一:Mysql Proxy
- MySQL Proxy 实现 MySQL 读写分离提高并发负载
- MySQL Proxy 实现 MySQL 读写分离提高并发负载
- MaxScale:实现MySQL读写分离与负载均衡的中间件利器
- mysql中间件amoeba实现mysql读写分离
- MySQL Proxy 实现 MySQL 读写分离提高并发负载
- MySQL Proxy 实现 MySQL 读写分离提高并发负载