zoukankan      html  css  js  c++  java
  • 基于Mysql-proxy实现读写分离

    前言简介:
    Mysql-Proxy是MySQL官方提供的mysql中间件服务,支持无数客户端连接,同时后端可连接若干台 Mysql-Server服务器,MYSQL-Proxy自身基于MySQL协议,连接MYSQL-Proxy的客户端无需修改任何 设置, 跟正常连接MYSQL Server没有区别,无需修改程序代码。

    环境:

    Mysql-proxy:192.168.109.102

    Master-109.100 192.168.109.100

    Slave-109.101:192.168.109.101

    实验拓补图

    [root@Mysql-proxy ~]# wget http://mirrors.163.com/mysql/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz

    [root@Mysql-proxy ~]# tar xvf mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz

    [root@Mysql-proxy ~]# echo "export PATH=/usr/local/mysql-proxy/bin:$PATH" > /etc/profile.d/mysql-proxy.sh

    [root@Mysql-proxy~]# source /etc/profile
    [root@Mysql-proxy~]# mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.109.100:3306" --proxy-read-only-backend-addresses="192.168.109.101:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"

    参数详解:

    # Mysql-Proxy的相关参数详解如下:
    --help-all    #获取全部的帮助信息
    --proxy-address=host:port      #代理服务监听的地址和端口,默认为4040
    --admin-address=host:port      #管理模块的监听地址和端口,默认为4041
    --proxy-backend-addresses=host:port :后端mysql服务器的地址和端口; 
    --proxy-read-only-backend-addresses=host:port #后端只读mysql服务器的地址和端口; --proxy-lua-scripts=file_name: #完成mysql代理功能的Lua脚本; :以守护进程模式启动mysql-proxy; -keepalive             #在mysql-proxy崩溃时尝试重启;
    --log-file=/var/log/mysql-proxy.log #日志文件名称;
    --log-level=level #日志级别 --log-use-syslog #记录syslog日志 --plugins=plugin #在mysql-proxy启动时加载的插件--user=user_name #运行mysql_proxy进程的用户 --defaults-file=/path/to/conf_file_name :默认使用的配置文件路径,其配置段使用[mysql- proxy]标识; --proxy-skip-profiling :禁用profile;
    --pid-file=/path/to/pid_file_name :进程文件名;

    #查看mysql-proxy启动的端口/日志

    【Master-109.100】

    #待mysql-proxy端启动完成之后,我们登陆Matser主库授权给mysql-proxy节点允许代理节点对主库的所有操作;

    #grant all on *.* to "mysql-proxy"@"192.168.1091.102" identified by "123456";

    #flush privileges;

     授权完毕之后,通过mysql-proxy代理端(192.168.109.1021)模拟向主库192.168.109.100插入数据

    [root@Mysql-proxy ~]# mysql -h 192.168.109.102 -u mysql-proxy -p123456 -P4040 -e "create database Testdb charset=utf8;" 

    [root@Mysql-proxy ~]# mysql -h 192.168.109.102 -u mysql-proxy -p123456 -P4040  -e "create table Testdb.t1(id int(10) auto_increment primary key,name varchar(40),age varchar(40));"

    随后我们通过登陆4041管理端口查看mysql-proxy所代理的主从读写分离状态,很明显,写库状态已经激活(UP状态)

    [root@Mysql-proxy ~]# mysql -h 192.168.109.102 -uadmin -padmin -P4041 -e "select * from backends;"

     

     随后通过4041查询数据,因为主从关系,通过mysql-proxy端写入的数据默认也会同步到从库(192.168.109.101);

    #为了更好的验证,我们通过mysql-proxy代理端读取数据是走的slave从库:只需要在从库192.168.109.101单独插入一下表数据

    (因为在从库插入的数据不会同步到主库中,这样便于区分,随后我们在proxy端执行select查询语句的时候,就可以很明显的区分查的主库还是从库了)

     [root@Mysql-proxy ~]# mysql -h 192.168.109.102 -umysql-proxy -p123456 -P4040 -e "select * from Testdb.t1;"

    [root@Mysql-proxy ~]# mysql -h 192.168.109.102 -uadmin -padmin -P4041 -e "select * from backends;" 

    END!

  • 相关阅读:
    CCNA 6.9
    CCNA 6.5
    Google search
    CCNA 4.14 TP Correction
    CCNA 6.3
    CCNA 6.6
    有关 英语学习的一些网站
    法语学习笔记
    垃圾邮件分类(Scala 版本)
    SQL 面试经典问题 行列互相转化
  • 原文地址:https://www.cnblogs.com/bixiaoyu/p/12428048.html
Copyright © 2011-2022 走看看