MySQL 高可用:mysql+proxy主从读写分离



说明:客户端只需访问proxy,proxy 自动进行读写分离访问。


系统信息:
proxy代理	192.168.1.151	CentOS 5.11	mysql 5.0.95(mysql不需要安装)
mysql主库	192.168.1.152	CentOS 5.6	mysql 5.6.22 
mysql从库	192.168.1.153	CentOS 5.6	mysql 5.6.22 

下载地址:

readline :ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz  (可不需要)

lua : http://www.lua.org/ftp/  (读写分离脚本)

MySQL-Proxy :http://downloads.mysql.com/archives/proxy/  


读写分离部署参考:MySQL 高可用:主从复制     MySQL 高可用:主主复制(双主复制)


#相关安装
yum -y install gcc gcc-c++ autoconf libtool pkgconfig ncurses ncurses-devel libreadline-dev

#以下文件所在路径:/usr/local/src


#安装readline:
tar zxvf readline-6.3.tar.gz
cd readline-6.3
./configure
make && make install
ldconfig -v 

#安装lua:
tar zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
make linux
make install 

#测试是否安装成功(命令行运行):lua

#安装配置对应版本的MySQL-Proxy:
tar zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit mysql-proxy
cd mysql-proxy
export PATH=$PATH:/usr/local/src/mysql-proxy/bin/
cp /usr/local/src/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua /usr/local/lib/
cp /usr/local/src/mysql-proxy/lib/mysql-proxy/lua/admin.lua /usr/local/lib/

#读写分离脚本:
vi /usr/local/lib/rw-splitting.lua

if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 1, #改为1,最小连接为1时进行读写分离,小于则读写在主库
                max_idle_connections = 1, #无法理解,也没找到合理说明资料。改为1吧,比min大于等于就行
 
                is_debug = false
        }
end

#mysql 主备都先创建账户 mysqlproxy
mysql> grant all on *.* to 'mysqlproxy'@'192.168.1.%' identified by 'mysqlproxy'; 
mysql> flush privileges;

#新建配置文件(并设置基本参数):
vi /etc/mysql-proxy.cnf

[mysql-proxy]
admin-username=mysqlproxy
admin-password=mysqlproxy
admin-lua-script=/usr/local/lib/admin-sql.lua 
proxy-lua-script=/usr/local/lib/rw-splitting.lua
proxy-backend-addresses=192.168.1.152:3306
proxy-read-only-backend-addresses=192.168.1.153:3306
log-file=/var/tmp/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true
max-open-files=1024


admin-username :连接主从数据库的用户名
admin-password :连接主从数据库的密码
admin-lua-script :admin脚本
proxy-lua-script :读写分离脚本
proxy-backend-addresses :主库连接地址
proxy-read-only-backend-addresses :只读备库连接地址
log-file :日志文件
log-level :定义日志级别(error|warning|info|message|debug)
daemon :以守护进程方式运
keepalive :保持2个进程,1号进程监视2号进程,2号进程死掉则重启proxy服务

#设置权限:
chmod 660 /etc/mysql-proxy.cnf


#启动服务:
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf


#检查是否启用成功(如下日志则表示成功!)
netstat -tlp | grep mysql-proxy
tail -10 /var/tmp/mysql-proxy.log

2016-04-10 11:46:09: (debug) chassis-unix-daemon.c:121: we are the child: 24787
2016-04-10 11:46:09: (critical) plugin proxy 0.8.5 started
2016-04-10 11:46:09: (debug) max open file-descriptors = 1024
2016-04-10 11:46:09: (message) proxy listening on port :4040
2016-04-10 11:46:09: (message) added read/write backend: 192.168.1.152:3306
2016-04-10 11:46:09: (message) added read-only backend: 192.168.1.153:3306
2016-04-10 11:46:09: (message) chassis-unix-daemon.c:136: [angel] we try to keep PID=24787 alive
2016-04-10 11:46:09: (debug) chassis-unix-daemon.c:157: waiting for 24787


#连接到proxy
mysql -umysqlproxy -pmysqlproxy -h192.168.1.151 --port=4040

配置完成!!以下测试!

#测试步骤:(proxy 服务器192.168.1.151 也安装了mysql,所以就在proxy服务器上测试)

#1. 打开3个终端,连接到proxy:
mysql -umysqlproxy -pmysqlproxy -h192.168.1.151 --port=4040

#2. 查看测试表数据
mysql> select * from test.tab;

#3. 到从库(192.168.1.153)中停止同步线程
mysql> STOP SLAVE; 

#4. 在proxy 的3个终端任意操纵数据
mysql> insert into test.tab(name)values('kk');

#5. 分别到主库(152)和从库(153)查看,确认主库数据没有同步到从库
mysql> select * from test.tab;

#6. 在proxy 的3个终端任意查看数据,结果查不到刚才插入的数据。证明读取的是分库!
mysql> select * from test.tab;

#7. 到从库(192.168.1.153)中启用同步线程
mysql> START SLAVE;  

#6. 在proxy 的3个终端任意查看数据,结果查到了刚才插入的数据。
mysql> select * from test.tab;



#注:刚开始本人打开1个或者2个终端测试时,读写似乎还是在主库。打开第3个终端连接proxy后,读写才分离。
#实验完成!!!


相关参考:


MySQL-Proxy 官方主页 : http://dev.mysql.com/doc/mysql-proxy/en/

MySQL-Proxy 官方下载:http://downloads.mysql.com/archives/proxy/


使用mysql-proxy代理实现msyql数据库读写分离

MySQL-Proxy主从搭建读写分离全过程

Centos5.6下MySQL Proxy0.8.2的安装及测试

Ubuntu10下搭建MySQL Proxy读写分离

mysql proxy代理安装和配置



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值