溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用mysql-proxy實現(xiàn)讀寫分離

發(fā)布時間:2020-07-11 09:22:32 來源:網(wǎng)絡 閱讀:434 作者:blueclo 欄目:MySQL數(shù)據(jù)庫

mysql-proxy實現(xiàn)MySQL讀寫分離

使用二進制格式的mysql-proxy的安裝配置

  • mysql-proxy本身并不能進行讀寫分離,要實現(xiàn)讀寫分離要依賴于lua,所以要先查看是否安裝了lua,如果沒有安裝使用yum install安裝上即可

    ~]# rpm -q lua
    lua-5.1.4-4.1.el6.x86_64
  • 創(chuàng)建系統(tǒng)用戶

    useradd -r mysql-proxy
  • 解壓包創(chuàng)建鏈接文件

    tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/
    ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy
  • 導出二進制程序

    ~]# vim /etc/profile.d/mysql-proxy.sh
    內容為:
    export PATH=/usr/loca/mysql-proxy/bin/:$PATH
    ~]# source  /etc/profile.d/mysql-proxy.sh
  • 查看mysql-proxy用法

    ~]# mysql-proxy --help-all
    #比較重要的選項有以下幾個
    --daemon   #讓mysql-proxy在后臺工作
    --user=<user>  #指定運行mysql-proxy進程的屬主
    --proxy-backend-addresses=<host:port>  #后端服務器
    --proxy-read-only-backend-addresses=<host:port>  #只允許讀的后端服務器
    --log-level=(error|warning|info|message|debug) #指定日志級別
    --log-file=<file> #指定日志文件路徑
    --plugins=<name>  #要加載的插件名,插件路徑在/usr/local/mysql-proxy/lib/mysql-proxy/plugins,該路徑下有一個libadmin.so的插件,可以用來管理后端服務器,還有l(wèi)ibproxy.so的插件,啟用proxy的功能
    --keepalive  #如果proxy崩潰了,就會嘗試去重啟proxy
    --proxy-lua-script=<file> #指定要使用的lua腳本文件,lua腳本路徑在/usr/local/mysql-proxy/share/doc/mysql-proxy,該路徑下有一個實現(xiàn)讀寫分離的lua腳本文件rw-splitting.lua
    --defaults-file #指定配置文件路徑
  • 啟用mysql-proxy

    ~]# mysql-proxy --daemon \
    > --user=mysql-proxy \
    > --log-level=debug \
    > --log-file=/var/log/mysql-proxy.log \
    > --plugins=proxy \
    > --plugins=admin \
    > --proxy-backend-addresses=172.25.78.2:3306 \
    > --proxy-read-only-backend-addresses=172.25.78.3:3306 \
    > --keepalive=true \
    > --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua \
    > --admin-username=admin \
    > --admin-password=adminpass \
    > --admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
  • 查看啟用的端口
    ]# netstat -tan | grep :40
    tcp        0      0 0.0.0.0:4040                0.0.0.0:*                   LISTEN      
    tcp        0      0 0.0.0.0:4041                 0.0.0.0:*                   LISTEN
    #4041是admin管理接口的端口,4040是mysql-proxy的端口

連接測試

  • 在代理服務器上(172.25.78.4)連接到管理接口查看有哪些后端服務器

    mysql -uadmin -padminpass -h272.25.78.4 --port=4041
    MySQL [(none)]> SELECT * FROM backends;
    +-------------+------------------+---------+------+------+-------------------+
    | backend_ndx | address          | state   | type | uuid | connected_clients |
    +-------------+------------------+---------+------+------+-------------------+
    |           1 | 172.25.78.2:3306 | unknown | rw   | NULL |                 0 |
    |           2 | 172.25.78.3:3306 | unknown | ro   | NULL |                 0 |
    +-------------+------------------+---------+------+------+-------------------+
  • 在master節(jié)點和slave節(jié)點上添加測試用戶

    MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE ON *.* TO 'test'@'172.25.78.%' IDENTIFIED BY 'testpass';
  • 在客戶端進行測試

    ~]# mysql -utest -ptestpass -h272.25.78.4 -P4040
    MariaDB [(none)]> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | MYDB               |
    | S_SC_C             |
    | db_user            |
    | discuz             |
    | dvwa               |
    | hello              |
    | mysql              |
    | performance_schema |
    | test               |
    | testdb             |
    +--------------------+
    MariaDB [(none)]> USE S_SC_C;
    MariaDB [S_SC_C]> INSERT INTO S_1(sname,sdept) VALUES ('H','AA');
    MariaDB [S_SC_C]> SELECT * FROM S_1;
    +-----+-------+-------+
    | sid | sname | sdept |
    +-----+-------+-------+
    |   1 | HELLO | A     |
    |   2 | HE    | A     |
    |   3 | H     | AA    |
    +-----+-------+-------+
  • 在master上查看

    MariaDB [S_SC_C]> SELECT * FROM S_1;
    +-----+-------+-------+
    | sid | sname | sdept |
    +-----+-------+-------+
    |   1 | HELLO | A     |
    |   2 | HE    | A     |
    |   3 | H     | AA    |
    +-----+-------+-------+
  • 在slave上查看
    MariaDB [S_SC_C]> SELECT * FROM S_1;
    +-----+-------+-------+
    | sid | sname | sdept |
    +-----+-------+-------+
    |   1 | HELLO | A     |
    |   2 | HE    | A     |
    |   3 | H     | AA    |
    +-----+-------+-------+
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI