使用mysql-proxy實現mysql讀寫分離

 

QQ截圖20150726194151.png

 

 

靜態分離:直接將服務器地址寫入程序mysql

   優勢:
   缺點:
動態分離:經過代理服務器進行讀寫操做,由代理服務器斷定讀寫操做,在主服務器上寫數據,在從服務器上讀數據。
linux

(代理服務器不須要安裝Mysql)sql

 

#=======================================================數據庫

(1)使用mysql-proxy實現讀寫分離vim

 

# iptables -F服務器

 

    (master,slave,proxy,client服務器各一臺)ide

 

     注意:(首先進行主從複製配置。而後開始在代理服務器上使用mysql-proxy進行讀寫分離。最後在客戶端測試)測試

   mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

 

代理服務器進行的操做(10.0.199.3):lua

  # tar -xvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
spa

 

  # mv   mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit   /usr/local/mysql-proxy

    #  vim  /etc/ld.so.conf

     /usr/local/mysql-proxy/lib (導入)

   #  cd /usr/local/mysql-proxy/bin

  # ./mysql-proxy --proxy-backend-addresses=10.0.199.1:3306 --proxy-read-only-backend-
addresses=10.0.199.2:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=mysql --log-level=warning --log-file=/var/log/mysql-proxy.log --max-open-files=2048  --event-threads=4 --proxy-address=10.0.199.3:3306  

  解釋:

  --proxy-backend-addresses            指定主服務器地址(寫數據) 10.0.199.1

  --proxy-read-only-backend-addresses  指定從服務器地址(讀數據) 10.0.199.2
  --proxy-lua-script                   指定用於讀寫分離的腳本程序
  --daemon                             指定以守護進程的方式運行
  --user=mysql                         指定運行的用戶
  --log-level                          指定日誌記錄級別
  --log-file                           指定日誌文件位置
  --max-open-files                     指定最大課打開的文件數,受操做系統限制
  --event-threads                      設置工做線程數
  --proxy-address                      設置監聽的本機地址和端口 10.0.199.3(代理服務器)

 

 

    # lsof -i:3306 查看是否啓動

 

 

主從服務器進行的操做(199.一、199.2):

 

# iptables -F

  在主從服務器上對代理服務器進行受權,使代理服務器可以使用主從服務器上的此用戶進行鏈接主從。

  mysql> grant all on *.* to 'repuser'@'10.0.199.3' identified by 'aixocm'; 

  mysql> flush privileges;            

  repuser是任意用戶名 須要在代理服務器上建立該用戶

  由於下面在客戶端進行測試時,須要用被受權的用戶即該用戶進行登陸操做數據庫                                                                    mysql> create user repuser;

 

 

客戶端進行的操做(10.0.199.4)

測試:
客戶端沒必要安裝Mysql,可是必需要有mysql命令
# yum install mysql
# mysql -u repuser -h 10.0.199.3 -paixocm  -e "select * from sxkj.stu"

# mysql -u repuser -h 10.0.199.3 -paixocm -e "create table sxkj.class(id int primary key,name varchar(10) not null)"
也能夠進入mysql進行操做
再查看主從服務器數據

測試時 若出現如下錯誤:

QQ截圖20150724175503.png

解決辦法:

在主從服務器上:mysql> select user,host,password  from mysql.user;

                       mysql> drop user zll@10.0.199.3; 而後再從新進行受權。

相關文章
相關標籤/搜索