mysql 读写分离

来源:互联网 发布:淘宝买家vip等级 编辑:程序博客网 时间:2024/05/17 08:29

环境:

mysql 主库192.168.160.250

mysql 从库 192.168.160.233

mysql-proxy 192.168.110.110

安装依赖包:

wget http://www.lua.org/ftp/lua-5.1.4.tar.gz  

tar zxvf lua-5.2.3.tar.gz  

cd lua-5.2.3 

make linux

此时如果出现

lua.c:67:31: fatal error: readline/readline.h: No such file ordirectory
说明缺少libreadline-dev依赖包

执行:yum install readline-devel

下载安装proxy

wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-Linux-rhel5-x86-64bit.tar.gz

tar zxvf mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz  -C /usr/local/

cd/usr/local/

mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/   /usr/local/mysql-proxy

配置path 路径,添加到最后一行

vim/etc/profile

PATH= $PATH:/usr/local/mysql-proxy/bin 添加到最后一行

执行生效:
source /etc/profile

修改读写分离配置文件:

vim/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

if not proxy.global.config.rwsplitthen

  proxy.global.config.rwsplit = {

  min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1 测试需要

  max_idle_connections = 1, #默认8,改为1测试需要

  is_debug = false

  }

end

启动proxy:

mysql-proxy  --proxy-read-only-backend-addresses=192.168.160.233:3306  --proxy-backend-addresses=192.168.160.250:3306  --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &

查看是否启动成功:

netstat-antup | grep proxy

关闭 proxy 进程:

killall -9 mysql-proxy

测试:

如果本地安装了mysql可以:进入CMD ,

进入安装mysql bin目录

  链接刚刚启动的 mysql-proxy:

mysql -h 192.168.110.110 -uroot -p -P 4040

注意:两个数据库的用户需要一致(我这里是直接用的 root ,两台服务器的密码一样),如果没有一致的用户,则在两台数据库服务器上执行:
grant all on *.* to '用户名'@'192.168.110.110' identified by '密码';

        执行insertselect进行测试

可以多打开几个窗口(cmd)进行测试,这样容易看到效果(一般主数据库服务器是可读可写的,只有超过了我们上面配置的min_idle_connections = 1,才会转到只读数据库读取数据,所以这里多开几个客户端就能够看到效果了)


后续-通过msyql proxy链接乱码解决

修改my.cnf文件

原来在5.1版本时
[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. [mysqld]  
  2. skip-character-set-client-handshake  
  3. init-connect='SET NAMES UTF8'  
  4. default-character-set=utf8  

5.5 以上

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. [mysqld] 
  2. init-connect='SET NAME UTF8'  
  3. skip-character-set-client-handshake  
  4. character-set-server=utf8  

0 0
原创粉丝点击