mysql读写分开的安装和配置_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2099 | 回复: 0   主题: mysql读写分开的安装和配置        下一篇 
oraclexie
注册用户
等级:新兵
经验:36
发帖:67
精华:0
注册:2011-8-21
状态:离线
发送短消息息给oraclexie 加好友    发送短消息息给oraclexie 发消息
发表于: IP:您无权察看 2014-11-12 17:12:24 | [全部帖] [楼主帖] 楼主

mysql读写分开的安装和配置(mysql_proxy)

简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本 ,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。
环境如下:写数据库:192.168.0.111

读数据库:192.168.0.113

mysql-proxy:192.168.0.112


安装过程如下:
1. 解压mysql-proxy
下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本。

 tar zxf mysql-proxy-0.6.1-linux-rhas4-x86.tar.gz
cd mysql-proxy-0.6.1-linux-rhas4-x86


2.将lua脚本放到/usr/local/share下

 mv sbin/mysql-proxy /usr/local/sbin/
mv share/mysql-proxy /usr/local/share/


3.删除符号连接等垃圾代码

 strip /usr/local/sbin/mysql-proxy


4.编译启动管理脚本:

vi /etc/init.d/mysql-proxy
#!/bin/bash
export LUA_PATH=/usr/local/share/mysql-proxy/?.lua
mode=$1
if [ -z "$mode" ] ; then
mode="start"
fi
case $mode in
'start')
mysql-proxy --daemon \
--admin-address=:4401 \
--proxy-address=:3307 \
--proxy-backend-addresses=192.168.0.111:3306 \
--proxy-read-only-backend-addresses=192.168.0.113:3306 \
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua
;;
'stop')
killall mysql-proxy
;;
'restart')
if $0 stop ; then
$0 start
else
echo "retart failed!!!"
exit 1
fi
;;
esac
exit 0


5.给脚本执行权限

chmod +x /etc/init.d/mysql-proxy


启动脚本解释如下:

 --daemon 采用daemon方式启动
--admin-address=:4401 指定mysql-proxy的管理端口,在这里,表示本机的4401端口
--proxy-address=:3307 指定mysql-proxy的监听端口(客户端连接指定的端口)--proxy-backend-addresses=192.168.0.111:3306 指定写操作mysql主机的端口
--proxy-read-only-backend-addresses=192.168.0.112:3306 指定只读的mysql主机端口
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离.


完整的参数可以运行以下命令查看:

 mysql-proxy --help-all


6.修正rw-splitting.lua脚本

 vi /usr/local/share/mysql-proxy/rw-splitting.lua


276-282行修改成如下:

 if cmd.type ~= proxy.COM_INIT_DB and
c.default_db and c.default_db ~= s.default_db then
print(" server default db: " .. s.default_db .. "'")
print(" client default db: " .. c.default_db .. "'")
print(" syncronizing")
proxy.queries:prepend(2,string.char(proxy.COM_INIT_DB) ..c.default_db)
end


这个就解决了ERROR 1105 (07000): can't change DB to on slave xxx.xxx.xxx.xxx:3306的问题。

7.启动和关闭命令:

 /etc/init.d/mysql-proxy start
/etc/init.d/mysql-proxy stop


8.客户端测试

mysql -u tongbu --port=3307 -h 192.168.0.112 -D tongbu


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论