首页 > 代码库 > mysql读写分离
mysql读写分离
1、安装mysql-proxy
实现读写分离是有lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装
下载:http://dev.mysql.com/downloads/mysql-proxy/
tar
zxvf mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.
tar
.gz
mv
mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit
/usr/local/mysql-proxy
2、配置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
#复制管理脚本
vi
/etc/mysql-proxy
.cnf
#创建配置文件
[mysql-proxy]
user=root
#运行mysql-proxy用户
admin-username=proxy
#主从mysql共有的用户
admin-password=123.com
#用户的密码
proxy-address=192.168.0.204:4040
# 如果不写端口号,默认端口号3306,与Mysql的端口号冲突,所以会报错。*************************!!!!
proxy-
read
-only-backend-addresses=192.168.0.203
#指定后端从slave读取数据
proxy-backend-addresses=192.168.0.202
#指定后端主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)
daemon=
true
#以守护进程方式运行
keepalive=
true
#mysql-proxy崩溃时,尝试重启
保存退出!
chmod 660 /etc/mysql-proxy.cnf
3、修改读写分离配置文件
vi
/usr/local/mysql-proxy/lua/rw-splitting
.lua
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
4、启动mysql-proxy
/usr/local/mysql-proxy/bin/mysql-proxy
--defaults-
file
=
/etc/mysql-proxy
.cnf
netstat
-tupln |
grep
4040
#已经启动
tcp 0 0 192.168.0.204:4040 0.0.0.0:* LISTEN 1264
/mysql-proxy
关闭mysql-proxy使用:killall -9 mysql-proxy
5、测试读写分离
1>.在主服务器创建proxy用户用于mysql-proxy使用,从服务器也会同步这个操作
mysql> grant all on *.* to
‘proxy‘
@
‘192.168.0.204‘
identified by
‘123.com‘
;
2>关闭从服务器上的slave
slave stop;
3>.使用客户端连接mysql-proxy
mysql -u proxy -P 4040 -h 192.168.0.0 -p
4>下面的操作均使用mysql-proxy的账号登录数据库进行操作。
mysql> create table user (number INT(10),name VARCHAR(255));
mysql> insert into user
values(01,
‘zhangsan‘
);
mysql> insert into user values(02,
‘lisi‘
);
5>登录主从服务器,查看:
select * from user
主数据库有数据,从数据库没有数据
6>在从库上打开slave
start slave
过一会执行 select * from user
从库的数据也会慢慢同步过来
参考文献:http://lizhenliang.blog.51cto.com/7876557/1305083
参考文献2:http://www.cnblogs.com/luckcs/articles/2543607.html
========================
主从库的数据有时候不一致,还有待研究
疑问,在测试读写分离的时候,执行slave stop时间久了,一直不slave start是否数据就很难同步了?
slave stop一下会,过一小会,数据还是会同步到从库的。
mysql读写分离
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。