zoukankan      html  css  js  c++  java
  • MySQL Proxy 读写分离

    MySQL Proxy
    二进制方式安装,版本0.8.1,安装地址192.168.40.129


    # 为了方便测试,暂时停止MySQL的主从复制 ,然后分别插入一条数据
    mysql> stop slave;

    # Master库上的数据

    mysql> select * from test.t;
    +------+------+
    | x    | y    |
    +------+------+
    |    1 | 130  |
    +------+------+
    1 row in set (0.00 sec)

    # Slave库上的数据

    mysql> select * from test.t;
    +------+------+
    | x    | y    |
    +------+------+
    |    1 | 131  |
    +------+------+
    1 row in set (0.00 sec)


    # 新建或编辑mysql-proxy.cnf文件,添加以下内容(具体参数根据实际情况修改):
    shell> vi mysql-proxy.cnf
    [mysql-proxy]
    admin-username=root
    admin-password=root
    daemon=true
    keepalive=true
    admin-lua-script=/home/hadoop/mysql-proxy/lib/mysql-proxy/lua/admin.lua
    proxy-backend-addresses=192.168.40.130:3306
    proxy-read-only-backend-addresses=192.168.40.131:3306
    proxy-lua-script=/home/hadoop/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
    log-file=/tmp/proxy-mysql.log
    log-level=debug

    # 编辑.bash_profile脚本
    export PATH=$PATH:/home/hadoop/mysql-proxy/bin

    # 启动和停止
    shell> mysql-proxy --defaults-file=mysql-proxy.cnf > /tmp/proxy-mysql.log &
    shell> killall -9 mysql-proxy


    # 为达到测试效果,修改脚本,最小连接为1, 最大连接为2
    shell> vi /home/hadoop/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

    -- connection pool
    if not proxy.global.config.rwsplit then
            proxy.global.config.rwsplit = {
                    min_idle_connections = 1,
                    max_idle_connections = 2,
                    is_debug = false
            }
    end


    # 同时启动多个客户端连接连接到Proxy
    shell> mysql -utest -ptest -h192.168.40.129 -P4040 test
    mysql> show processlist;
    +----+------+----------------------+------+---------+------+-------+------------------+
    | Id | User | Host                 | db   | Command | Time | State | Info             |
    +----+------+----------------------+------+---------+------+-------+------------------+
    | 13 | test | 192.168.40.129:32802 | test | Sleep   |   15 |       | NULL             |
    | 14 | test | 192.168.40.129:32803 | test | Query   |    0 | NULL  | show processlist |
    +----+------+----------------------+------+---------+------+-------+------------------+
    2 rows in set (0.00 sec)

    # 所有通过Proxy的读,都是读取的Slave(IP 131)的数据
    mysql> select * from test.t;
    +------+------+
    | x    | y    |
    +------+------+
    |    1 | 131  |
    +------+------+
    1 row in set (0.01 sec)


    # 写入一条数据,但是读取不到。因为停止了复制
    mysql> insert into t(x,y) values(3,'NEW');
    Query OK, 1 row affected (0.38 sec)

    mysql> select * from test.t;
    +------+------+
    | x    | y    |
    +------+------+
    |    1 | 131  |
    +------+------+
    1 row in set (0.01 sec)

    # 直接登录到Master,可以读到新加的数据
    shell>  mysql -utest -ptest -h192.168.40.130
    mysql> select * from test.t;
    +------+------+
    | x    | y    |
    +------+------+
    |    1 | 130  |
    |    3 | NEW|
    +------+------+
    2 rows in set (0.00 sec)

    # 启动复制
    mysql> start slave;

    # 通过Proxy读取
    mysql> select * from test.t;
    +------+------+
    | x    | y    |
    +------+------+
    |    1 | 131  |
    |    1 | 130  |
    |    3 | NEW |
    +------+------+
    3 rows in set (0.00 sec)

    测试通过,读写分离功能正常。

  • 相关阅读:
    map
    01背包和完全背包 POJ
    并查集 计算节点数量
    set
    map,vector,queue 图 综合运用
    并查集 hdu-1325 Is It A Tree?
    js中的ajax
    java算法
    MySql在Window上的安装
    微信开发账号要求
  • 原文地址:https://www.cnblogs.com/wait4friend/p/2334561.html
Copyright © 2011-2022 走看看