基於Mysql-Proxy實現Mysql的主從複製以及讀寫分離(上)

來源:互聯網
上載者:User

標籤:

基於Mysql-Proxy實現Mysql的主從複製以及讀寫分離(上)

  上周BOSS給分配任務讓實現一下Mysql資料庫的主從複製以及讀寫分離,然後花了一盞茶的功夫進行了調研,發現主從複製資料庫進行一番配置直接可以實現,而讀寫分離則需要一些軟體的支援,基本上讀寫分離的實現有兩種:

  • Amoeba(變形蟲):是由前阿里員工實現的一個以MySQL為底層資料存放區,並對應用提供MySQL協議介面的proxy。但是由於沒人維護了,而且據說作者也不再回答開發人員的問題,所以不予考慮。
  • Mysql-Proxy:是一個處於你的client端和MySQL server端之間的簡單程式,它可以監測、分析或改變它們的通訊。它使用靈活,沒有限制,常見的用途包括:Server Load Balancer,故障、查詢分析,查詢過濾和修改等等。簡單的說,MySQL Proxy就是一個串連池,負責將前台應用的串連請求轉寄給背景資料庫,並且通過使用lua指令碼,可以實現複雜的串連控制和過濾,從而實現讀寫分離和Server Load Balancer。並且還有各種資料以及維護,雖然需要瞭解一些lua語言的東西,但是語言麼,上手還是很簡單的。

  在基於穩定性、後期遇到問題解決難易性、與現有平台整合的難易性、實現的難易性以及種種情況考慮之後,最終決定使用mysql-proxy來實現資料庫的讀寫分離。囉嗦那麼多,接下來開始說說具體的實現方法。

環境與配置

  系統:CentOS6.5

  Master:172.16.19.2

  Slave:172.16.19.24

  mysql-proxy:172.16.19.14

  安裝就不說了,基本都是yum install進行安裝的。是基本的架構圖(忘了從哪裡扒拉出來的了,感謝作者)。

主從複製的實現

  主從複製的實現極其簡單,只需要改一下vim /etc/my.cnf。

  Master的配置:

vim /etc/my.cnflog-bin=mysql-bin   #新增server-id=1              #新增

  配置完之後,重啟mysql,然後執行如下指令:

master:mysql> grant replication slave on *.* to ‘root‘@‘%‘ identified by ‘123456‘;然後執行show master statusMysql> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000005 | 261 | | |+------------------+----------+--------------+------------------+

  用腦袋或者紙筆記錄一下File以及Positin,在這裡是mysql-bin.000005以及261。

  Slave的配置:

1 vim /etc/my.cnf2 log-bin=mysql-bin   #新增3 server-id=2             #新增  server-id不能一樣

  同樣的,配置完成之後需要重啟mysql服務,然後執行如下指令:

mysql> change master to master_host=‘172.16.19.2‘,master_user=‘root‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000005‘,master_log_pos=261;mysql> start slave;

  接下來,查看slave的狀態,查看是否配置成功:

 1 show slave status\G 2 ============================================== 3 **************** 1. row ******************* 4 Slave_IO_State: 5 Master_Host: 192.168.10.130 6 Master_User: rep1 7 Master_Port: 3306 8 Connect_Retry: 60 9 Master_Log_File: mysql-bin.00000510 Read_Master_Log_Pos: 41511 Relay_Log_File: localhost-relay-bin.00000812 Relay_Log_Pos: 56113 Relay_Master_Log_File: mysql-bin.00000514 Slave_IO_Running: YES15 Slave_SQL_Running: YES16 Replicate_Do_DB:17 ……………省略若干……………18 Master_Server_Id: 119 1 row in set (0.01 sec)20 ==============================================

  其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,才表明狀態正常。

主從複製的測試

  先查看主伺服器Master:

  

  然後建立一個資料庫,y:

  接著去從伺服器slave查看,會發現從伺服器也有了y資料庫。至此資料庫的主從複製就實現了。有點晚了,至於說讀寫分離就下次再說吧。

 

PS:本部落格歡迎轉寄,但請註明部落格地址及作者,因本人水平有限,若有不對之處,歡迎指出,謝謝~

  部落格地址:http://www.cnblogs.com/voidy/

  部落格新址:http://voidy.net

  <。)#)))≦

 

基於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.