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

來源:互聯網
上載者:User

標籤:使用mysql-proxy實現mysql讀寫分離


650) this.width=650;" src="http://note.youdao.com/yws/res/20877/3864DBFB8D264513BA966AF24160FCE4" alt="QQ20150726194151.png" />



靜態分離:直接將伺服器位址寫入程式

   優點:
   缺點:
動態分離:通過Proxy 伺服器進行讀寫操作,由Proxy 伺服器判定讀寫操作,在主伺服器上寫資料,在從伺服器上讀資料。

(Proxy 伺服器不需要安裝Mysql)


#=======================================================

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


# iptables -F

    (master,slave,proxy,client伺服器各一台)

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

   650) this.width=650;" src="http://note.youdao.com/yws/res/20497/6506BFE7C3884C57B8E0A9FADCD62FE6" alt="mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz" title="mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz" id="userfile_d1akkn78a" />


Proxy 伺服器進行的操作(10.0.199.3):

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

  # 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(Proxy 伺服器)

 


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


主從伺服器進行的操作(199.1、199.2):


# iptables -F

  在主從伺服器上對Proxy 伺服器進行授權,使Proxy 伺服器能夠使用主從伺服器上的此使用者進行串連主從。

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

  mysql> flush privileges;           

  repuser是任意使用者名稱 需要在Proxy 伺服器上建立該使用者

  因為下面在用戶端進行測試時,需要用被授權的使用者即該使用者進行登入操作資料庫                                                                    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進行操作
再查看主從伺服器資料

測試時 若出現以下錯誤:

650) this.width=650;" src="http://note.youdao.com/yws/res/20699/0C8941BA7BE748CF84131C6CA1549EDF" alt="QQ20150724175503.png" />

解決辦法:

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

                       mysql> drop user [email protected]; 然後再重新進行授權。

本文出自 “張露露” 部落格,請務必保留此出處http://zhanglulu913.blog.51cto.com/10592685/1688947

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.