设为首页 收藏本站
查看: 824|回复: 0

[经验分享] 安装mysql-proxy实现mysql读写分离

[复制链接]

尚未签到

发表于 2018-9-28 11:43:19 | 显示全部楼层 |阅读模式
一. 环境描述
  操作系统版本:centos 7.2
  主服务器:192.168.0.72  node2
  从服务器:192.168.0.73  node3
  调度服务器MySQL-Proxy:192.168.0.71   node1
二. 配置mysql主从
2.1 安装mysql
  node2和node3都需安装
  [lirou@node2 ~]$ sudo yum -y install mariadb-server
2.2 修改配置文件
  master配置文件:
  skip_name_resolve
  innodb_file_per_table
  server_id = 1
  log_bin = /var/lib/mysql/bin_log
  slave 配置文件:
  skip_name_resolve
  innodb_file_per_table
  server_id = 2
  log_bin = /var/lib/mysql/bin_log
  read_only
  注意:master服务器一定要开启二进制日志,因为主从复制依赖与master。而且主从服务器的server_id一定要不同。
2.3 启动服务
  node2和node3都要启动服务
  [lirou@node3 ~]$ sudo systemctl start mariadb
2.4 配置主从服务器
  Master服务器上
  分配slave主机访问master的权限账号:
  [lirou@node2 ~]$ mysql -uroot

  MariaDB [(none)]> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON  *.* TO 'repl_user'@'192.168.0.%'>  查看master上二进制日志位置
  MariaDB [(none)]> show master status ;
  +---------------+----------+--------------+------------------+
  | File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +---------------+----------+--------------+------------------+
  | binlog.000001 |      425 |              |                  |
  +---------------+----------+--------------+------------------+
  slave服务器上
  mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.72', MASTER_USER='repl_user', MASTER_PASSWORD='repl_pass', MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=425;
  mysql> slave start;    # 开启从同步
  mysql> show slave status \G;  #查看同步是否成功
DSC0000.jpg DSC0001.jpg

三. 配置mysql-proxy
3.1 下载安装包
  ~]# wget wget https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
  ~]# sudo  tar xf https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local
  ~]# mv /usr/local/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
3.2 配置mysql-proxy
  创建lua脚本目录
  ~]# cd /usr/local/mysql-proxy
  mysql-proxy]# mkdir lua
  创建日志目录
  Mysql-proxy]# mdkir logs
  拷贝读写分离配置文件和管理脚本到lua脚本目录
  mysql-proxy]# cp share/doc/mysql-proxy/rw-splitting.lua  ./lua
  Mysql-proxy]# cp share/doc/mysqp-proxy/admin-sql.lua  ./lua
  创建配置文件
  ~]# vim /etc/mysql-proxy.conf
  [mysql-proxy]
  user = root  运行代理的用户
  admin-username = mysql_proxy_user  # mysql-proxy连接后端mysql服务器的用户
  admin-password = mysql_proxy_pass  # mysql-proxy连接后端mysql服务器的密码
  proxy-address = 192.168.0.71:3307    # mysql-proxy监听的IP和端口,端口默认4040
  proxy-read-only-backend-addresses = 192.168.0.73  #只读服务
  proxy-backend-addresses = 192.168.0.72           # 读写服务器
  proxy-lua-script = /usr/local/mysql-proxy/lua/rw-splitting.lua  # 指明读写分离配置文件
  admin-lus-script = /usr/local/mysql-proxy/lua/admin-sql.lua   # 管理脚本路径
  log-file = /usr/local/mysql-proxy/logs/mysql-proxy.log     # 日志文件路径
  log-level = debug   #日志记录等级
  daemon = true     # 程序是否在后端启动
  keepalive = true    # mysql-proxy崩溃后,尝试重启
  修改读写配置文件
  vim /usr/local/mysql-proxy/lua/rw-splitting.lua
  if not proxy.global.config.rwsplit then
  proxy.global.config.rwsplit = {
  min_idle_connections = 1,  #默认超过4个连接数时,才开始读写分离,改为1
  max_idle_connections = 1,  #默认8,改为1
  is_debug = false
  }
  启动mysql-proxy
  ~]# /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
DSC0002.jpg

  在mysql上创建mysql-proxy连接的用户

  mysql> GRANT ALL ON *.* TO 'mysql_proxy_user'@'192.168.0.%'>四. 测试读写分离
  测试写
  mysql -umysql_proxy_user -pmysql_proxy_pass -h192.168.0.71 --port=3307
  mysql> create databases master;
  mysql> create table test (id int);
  mysql> insert into master.test value (1);
  查看从服务器:
DSC0003.jpg

  可以看到从服务器同步了
  测试读
  主服务器查询语句条数
DSC0004.jpg

  从服务器查询语句条数
DSC0005.jpg


  连接mysql-proxy执行一条读语句
DSC0006.jpg

  主服务器查询语句条数
DSC0007.jpg

  从服务器查询语句条数

  我们可以看到查询语句是在从服务器上执行。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-603245-1-1.html 上篇帖子: mysql 主从 主主 模式配置 下篇帖子: MySQL5.7—在线DDL总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表