unijun 发表于 2018-10-1 13:20:52

mysql-proxy实现读写分离-简单配置

  由于工作需要想搭建个mysql读写分离环境,上网看了很多人写的博客都说现在读写分离还不是很成熟,如果流量太大估计不大好。
  mysql-proxy:10.1.1.6
  mysql写:10.1.1.4
  mysql读:10.1.1.5
  mysql-proxy机子上:
  安装mysql
  tar zxvf mysql-5.1.36.tar.gz
  cd mysql-5.1.36
  ./configure --prefix=/usr/local/mysql
  make && make install
  安装readline
  产看:$rpm -qa | grep readline
  没有的话yum----
  安装LUA
  #tar zxvf lua-5.1.4.tar.gz
  #cd lua-5.1.4
  #vi Makefile#修改安装路径为: INSTALL_TOP= /usr/local/lua
  #make linux install
  安装 libevent
  tar zxvf libevent-1.4.14b-stable.tar.gz
  cd libevent-1.4.14b-stable
  ./configure --prefix=/usr/local/libevent
  make
  make install
  编译安装glib-2.24.2.tar.gz
  本人原来版本是2.12,太低了,需要升级才能安装,后来安装了glib2.8,但编译时候提示2.12>2.8 ???很奇怪,后来安装了2.24就可以了。
  #rpm -e --nodeps glib2 强制删除原来的GLIB2
  # cd glib-2.24.2
  # ./configure --prefix=/usr
  在安装glib新的版本的过程中,还可能会遇到这样的问题:
  gconvert.c:48:2: error: #error GNU libiconv not in use but included iconv.h is from libiconv
  #./configure --prefix=/usr -enable-iconv=no -with-libiconv=gnu加入此参数顺利编译
  # make&make install
  安装mysql-proxy
  设置环境变量.
  vim/etc/profile
  export LUA_CFLAGS="-I/usr/local/lua/include" LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" LDFLAGS="-L/usr/local/libevent/lib -lm"
  export CPPFLAGS="-I/usr/local/libevent/include"
  export CFLAGS="-I/usr/local/libevent/include"
  export PKG_CONFIG_PATH=/usr/lib/pkgconfig
  运行
  #source /etc/profile
  否则要关闭SHELL才能生效
  #tar zxvfmysql-proxy-0.8.1.tar.gz
  #cdmysql-proxy-0.8.1
  #./configure --prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql --with-lua
  # make
  # make install
  或:(其实和上面一样)
  ---------------------------------------------
  #tar zxvfmysql-proxy-0.8.1.tar.gz
  #cdmysql-proxy-0.8.1
  #env LUA_CFLAGS='-I/usr/local/lua/include'
  LUA_LIBS='-L/usr/local/lua/lib -llua -ldl' \
  CFLAGS='-I/usr/local/include' \
  LDFLAGS='-L/usr/local/lib -lm' \
  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
  ./configure \
  -prefix=/usr/local/mysql-proxy \
  -with-mysql=/usr/local/mysql \
  -with-lua
  ----------------------------------------------
  #vi /etc/profile
  #export PATH=$PATH:/usr/local/mysql-proxy/bin
  #source /etc/profile
  安装完毕
  启动mysql-proxy
  #/usr/local/mysql-proxy/bin/mysql-proxy--daemon --admin-username=root --admin-password=123456 --proxy-read-only-backend-addresses=10.1.1.5:3306 --proxy-backend-addresses=10.1.1.4:3306 --max-open-files=1024 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
  我的默认路径找不到rw-splitting.lua所以从其他地方找了一个,mysql-proxy现在很多人不敢用在生产环境其实就是就个脚本跟不上. 附件是我的脚本,拷到 /usr/local/mysql-proxy/share/doc/mysql-proxy/ 下
  –daemon:指定mysql-proxy为一个daemon
  –keepalive:mysql-proxy有时候会自动停止服务的情况,加上此参数后就解决这个问题
  –admin-username:指定MySQL Proxy管理者端(port:4041)的登入帐号
  –admin-password:指定MySQL Proxy管理者端(port:4041)的登入密码
  –proxy-backend-addresses:指定写mysql的位置及端口
  –proxy-read-only-backend:指定读mydql的位置及端口,有多台读mysql时,在后面加多一条参数 -proxy–read-only-backend XXXXXX.XXX.xx.xx:3306就可以了
  –log-file:指定储存MySQL Proxy log的档案位置
  –log-level:指定要记录log的等级
  –max-open-files:指定最大档案开启数为1024,否则为有【could not raise RLIMIT_NOFILE to 8192, Invalid
  argument (22). Current limit still 1024.】的log讯息出现
  –proxy-lua-script:指定MySQL Proxy要套用那一个script
  官网提供的启动脚本:http://forge.mysql.com/wiki/MySQL_Proxy_init
  启动遇到的问题:
  (critical) admin-plugin.c:579: --admin-lua-script needs to be set, /lib/mysql-
  proxy/lua/admin.lua may be a good value
  2010-11-30 19:29:12: (critical) mainloop.c:267: applying config of plugin admin failed
  2010-11-30 19:29:12: (critical) mysql-proxy-cli.c:596: Failure from chassis_mainloop. Shutting down.
  启动加入:--admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
  could not raise RLIMIT_NOFILE to 8192, Invalid argument (22). Current limit still 1024
  启动加入:--max-open-files=1024
  -------------------------------------------      -测   试-         -----------------------------
  vim /usr/src/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
if not proxy.global.config.rwsplit then  proxy.global.config.rwsplit = {
  min_idle_connections = 4,
  max_idle_connections = 8,
  讲4   8 改成1,因为mysql-proxy默认要有四个用户以上才去读写分离的。所以我们改小一点好测试,多打开几个端口去连mysql-proxy
  读写的mysql都授权alex权限
mysql> grant all on *.* to 'alex'@'%'>  mysql> flush privileges;
  在client端登入mysql -ualex -p123 -h 10.1.1.6 -P 4040
  insert into ....
  然后进入:10.1.1.4 看看是否增加了,
  select 刚刚增加记录的表,发现没有增加记录,说明查询只能查到10.1.1.5
  好了。最后将写mysql 和 读mysql做成A-B 主从复制。。。。。。。。。
  ----------------------------------------------------------------------------------------------------
  完

页: [1]
查看完整版本: mysql-proxy实现读写分离-简单配置