设为首页
优惠IDC
收藏本站
六狼博客
六狼论坛
开启辅助访问
切换到窄版
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
只需一步,快速开始
快捷导航
门户
首页
BBS
云计算
大数据
手机
移动开发android,ios,windows phone,windows mobile
编程
编程技术java,php,python,delphi,ruby,c,c++
前端
WEB前端htmlcss,javascript,jquery,html5
数据库
数据库开发Access,mysql,oracle,sql server,MongoDB
系统
操作系统windows,linux,unix,os,RedHat,tomcat
架构
项目管理
软件设计,架构设计,面向对象,设计模式,项目管理
企业
服务
运维实战
神马
搜索
搜索
热搜:
php
java
python
ruby
hadoop
sphinx
solr
ios
android
windows
centos
本版
帖子
用户
六狼论坛
»
首页
›
操作系统
›
linux
›
Mysql-proxy主从搭建读写分离全过程
返回列表
查看:
55
|
回复:
0
Mysql-proxy主从搭建读写分离全过程
[复制链接]
swengineer
swengineer
当前离线
积分
44
窥视卡
雷达卡
升级
88%
当前用户组为
童生
当前积分为
44
, 升到下一级还需要 6 点。
10
主题
10
主题
10
主题
童生
童生, 积分 44, 距离下一级还需 6 积分
童生, 积分 44, 距离下一级还需 6 积分
积分
44
发消息
楼主
|
发表于 2013-2-4 13:43:46
|
显示全部楼层
|
阅读模式
废话不说!
Mysql-proxy是什么,大家都知道,不知道的就别往下看了...
首先搭建 mysql 主从数据库,参考: http://blog.csdn.net/swengineer/archive/2011/03/11/6239711.aspx
下载 mysql-proxy 最新版,本文撰写时最新版本为 MySQL Proxy 0.8.1 alpha
安装 mysql-proxy 步骤如下:
解压 mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz
tar zxvf mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gzcp -R mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit /usr/local/proxy-mysql
新建或编辑 /etc/mysql-proxy.cnf 文件,添加以下内容 ( 具体参数根据实际情况修改 ) :
vi /etc/mysql-proxy.cnf[mysql-proxy]admin-username = zhangdongyuadmin-password = 123123daemon = truekeepalive = trueproxy-backend-addresses = 192.168.0.88:3306proxy-read-only-backend-addresses = 192.168.0.88:3307proxy-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.luaadmin-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lualog-file = /usr/local/proxy-mysql/cn.loglog-level = debug
主要参数注解:
proxy-backend-addresses mysql 主库(写)地址
proxy-read-only-backend-addresses mysql 从库(读)地址
proxy-lua-script 读写分离脚本
admin-lua-script admin 脚本
admin-username 数据库用户名(主从上都需建立相同用户)
admin-password 数据库密码
daemon daemon 进程运行
keepalive 保持连接(启动进程会有 2 个,一号进程用来监视二号进行,如果二号进程死掉自动重建,此参数在旧版本中无法使用)
编辑 profile/.bash_profile 脚本
vi /etc/profile( 或者 .bash_profile)LUA_PATH="/usr/local/proxy-mysql/share/doc/mysql-proxy/?.lua"export LUA_PATHexport PATH=$PATH:/usr/local/proxy-mysql/bin:wqsource /etc/profile
为方便建立建立 mysql-proxy.sh 脚本
#!/bin/bashmode=$1if [ -z "$mode" ] ; thenmode="start"ficase $mode instart)mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log &;;stop)killall -9 mysql-proxy;;restart)if $0 stop ; then$0 startelseecho "Restart failed!"exit 1fi;;esacexit 0 启动
mysql-proxy
sh
脚本
启动:
./mysql-proxy.sh
或
./mysql-proxy.sh start
重启:
./mysql-proxy.sh restart
停止:
./mysql-proxy.sh stop
测试:
为达到测试效果,修改
admin-sql.lua
脚本以下两行
vi /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua
if not proxy.global.config.rwsplit then proxy.global.config.rwsplit = { min_idle_connections = 1, # 修改最小连接为 1 max_idle_connections = 2, # 修改最大连接为 2 is_debug = true #debug 为 true }end
重启
mysql-proxy
代理
开启两个终端分别连接代理:
ONE
:
./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040
TWO
:
./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040
可看到连接成功信息:
操作
ONE
客户端:
执行
select
语句观察数据库
log
文件
select * from z_member_info;
观察主从库日志文件,发现查询发生在主库?
主库:
192.168.0.88:3306
日志文件:
tail -f /usr/local/mysql/localstate/mysqlexecute.log
这是因为
mysql-proxy
代理会检测客户端连接,当连接没有超过
min_idle_connections
预设值时,不会进行读写分离,即查询操作会发生到主库上。
操作
TWO
客户端:
执行
select
语句观察数据库
log
文件
select * from z_member_info;
观察主从库日志文件,发现主库没有任何记录,查询日志记录在从库。
从库:
192.168.0.88:3306
日志文件:
tail -f /usr/local/mysql3307/localstate/mysqlexecute.log
操作两个终端进行
insert
操作,会发现写操作始终被主库(
3306
)日志文件记录。
至此
mysql-proxy
安装测试完成。
注:生产环境一定要根据实际情况配置相关文件,至于
lua
文件强烈推荐读者自行修改,目前正在研究
lua
文件的优化与定制,不久会发上来(果断时间再说了,用到时候再仔细研究下..忙啊..)。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
windows
Copyright © 2008-2020
六狼论坛
(http://it.6wolf.com) 版权所有 All Rights Reserved.
Powered by
Discuz!
X3.4
京ICP备14020293号-2
本网站内容均收集于互联网,如有问题请联系
QQ:389897944
予以删除
快速回复
返回顶部
返回列表