zoukankan      html  css  js  c++  java
  • 读写分离-mysql-prxoy

    1.安装mysql-proxy

    下载安装:http://mirrors.163.com/mysql/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linuxel6-x8664bit.tar.gz 
    tar xf mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz -C /usr/loca
    mv /usr/local/mysql-proxy-0.8.4-linux-el6-x86-64bit mysql-proxy
    设置环境变量
    echo "export PATH=/usr/local/mysql-proxy/bin:$PATH" > /etc/profile.d/mysql-proxy.sh 
    source /etc/profile.d/mysql-proxy.sh

    2.启动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.1.22:3306" --proxy-read-only-backend-addresses="192.168.1.23:3306" --proxy-lua-script="/usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysqlproxy/lua/admin.lua"
     
     以上字段的涵义为: 
    mysql-proxy –daemon #以守护进程启动 mysql-proxy 
     
    --log-level=debug  #指定日志级别为 debug 
    --user=mysql-proxy  #运行守护进程的用户 
    --keepalive   #在 keepalive 崩溃时尝试重启进程 
    --log-file=/var/log/mysql-proxy.log  #指定日志文件 
    --plugins="proxy"  #mysql-proxy 启动时加载的插件 
    --proxy-backend-addresses="192.168.182.147:3306" #后端主 mysql 服务器的地址 和端口; 
    --proxy-read-only-backend-addresses="192.168.182.140:3306" #后端只读 mysql 服务 器的地址和端口; 
    --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" #完成 mysql 代理功能的 Lua 脚本 
    --plugins=admin #指定 admin 插件 
    --admin-username="admin"  #设置登录 mysql-proxy 的管理账户 
    --admin-password="admin"  #设置登录 mysql-proxy 的密码 

    3.查看启动状态

    netstat -nutlp

    4.数据库授权mysql-proxy

    #在主库执行授权信息,从库会自动同步:
    Mariadb [(nane)]> grant all on *.* to "mycat-proxy"@"192.168.1.20" ientified by "123456";
    5.查看读写分离状态:
    基于4041端口mysql-proxy查看读写分离状态,登录4041端口:mysql-prxoyIP登录
    mysql -h192.168.75.133 -uadmin -padmin -P4041
    # 这时可以看到后端数据库信息,只是状态为unknown,表示还没有客户端连接,可以通过4040代理端口通过 查询数据等操作激活。 
    mysql> select * from backends; 
    +-------------+---------------------+---------+------+------+------------------
    + 
    | backend_ndx | address             | state   | type | uuid | connected_clients | 
    +-------------+---------------------+---------+------+------+------------------
    + 
    |           1 | 192.168.75.134:3306 | unknown | rw   | NULL |                 0 | 
    |           2 | 192.168.75.135:3306 | unknown | ro   | NULL |                 0 | 
    +-------------+---------------------+---------+------+------+------------------+
     2 rows in set (0.00 sec)
    6.激活mysql-proxy:
    通过4040代理端口插入数据,该sql语句会走master,于是可以激活master状态:
    mysql -h192.168.75.133 -umysql-proxy -p123456 -P4040 -e "create database lutixia charset utf8;"
    在4041管理端口,再次查看:

    mysql -h192.168.75.133 -uadmin -padmin -P4041
    mysql> select * from backends; 
    +-------------+---------------------+---------+------+------+------------------
    + 
    | backend_ndx | address             | state   | type | uuid | connected_clients | 
    +-------------+---------------------+---------+------+------+------------------
    + 
    |           1 | 192.168.75.134:3306 | up | rw   | NULL |                 0 | 
    |           2 | 192.168.75.135:3306 | unknown | ro   | NULL |                 0 | 
    +-------------+---------------------+---------+------+------+------------------+
     2 rows in set (0.00 sec)
    通过4040代理端口查询数据,该sql语句会走slave,于是可以激活slave状态:

    # 先在从库选择lutixia数据库(因为主从关系,在主库创建的lutixia会同步至从库),创建表格,并插 入数据: 
     MariaDB [(none)]> use lutixia 
     Database changed 
     MariaDB [lutixia]> create table t1( id int, name varchar(20) ); 
     Query OK, 0 rows affected (0.00 sec)
    MariaDB [lutixia]> insert t1 values(1,"xiaoming"); 
    Query OK, 1 row affected (0.00 sec)
    在4041管理端口,再次查看:

    mysql -h192.168.75.133 -uadmin -padmin -P4041
    mysql> select * from backends; 
    +-------------+---------------------+---------+------+------+------------------
    + 
    | backend_ndx | address             | state   | type | uuid | connected_clients | 
    +-------------+---------------------+---------+------+------+------------------
    + 
    |           1 | 192.168.75.134:3306 | up | rw   | NULL |                 0 | 
    |           2 | 192.168.75.135:3306 | up | ro   | NULL |                 0 | 
    +-------------+---------------------+---------+------+------+------------------+
     2 rows in set (0.00 sec)
  • 相关阅读:
    Sencha Touch id 和 itemId
    解决VS报表.rdl 显示乱码“小方块”问题
    C# 调试程序弹出 没有可用于当前位置的源代码 对话框
    解决DropDownList 有一个无效 SelectedValue,因为它不在项目列表中。这是怎么回事?
    CS0016: 未能写入输出文件“c:windowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Filesdata34aae0607daa87dApp_Web_addadvice.aspx.cdcab7d2.ekhlcbjd.dll”--“目录名无效。 ”
    利用微软类库 Visual Studio International Pack 汉字转拼音
    【C#】线程之Parallel
    【C#】线程之Task
    【C#】线程协作式取消
    【C#】属性(Attribute)
  • 原文地址:https://www.cnblogs.com/fengyuanfei/p/14498200.html
Copyright © 2011-2022 走看看