天天看點

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

實作Mysql主從複制讀寫分離記錄

本次研究是通過配置Mysql實作主從複制,使用Amoeba代理實作讀寫分離。

參照資料:http://my.oschina.net/u/1169079/blog/390726

Mysql主從複制:

根據查資料發現,隻需修改對應的mysql檔案目錄下的my.ini配置檔案,之後在指令行界面執行相關指令後,即可實作主從複制。分工及工具如下

主資料庫:董勝燕  IP:192.168.1.102  Mysql版本:5.7

從資料庫:高宇飛  IP:192.168.1.103  Mysql版本:5.7

修改主資料庫配置

首先,修改主資料庫的my.ini配置檔案 :

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

在[mysqld] 下增加如圖所示部分語句,其中字段代表含義:

binlog-ignore-db 指定忽略複制的資料庫
log-bin 指定資料庫記錄檔,複制資料讀取此日志
server-id Mysql服務id,多個主從時一定不能重複。
symbolic-links 禁用符号連結,防止安全風險

修改完成後,重新開機Mysql服務,打開指令行視窗,驗證是否已打開主資料庫:

    輸入指令登入mysql,輸入 show master status\G;檢視主資料庫狀态,出現以下結果,既是配置成功。

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

此時,需要記住File與Position的值,修改從資料庫配置時需要使用。

啟動成功後,需要對從資料庫進行授權,執行以下語句即可:

GRANT REPLICATION SLAVE ON *.* to 'slave'@'192.168.1.103' 

identified by 'root'

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

修改從資料庫配置

其次,修改從資料庫的my.ini配置檔案:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

在[mysqld]下,增加

server-id 從資料庫的服務id,保證其唯一性即可;

slave-skip-errors = all,因為複制過程中如果遇到錯誤異常,則會導緻複制中斷,無法繼續運作,是以設定此語句 跳過所有錯誤。

修改完成後,重新開機Mysql服務,打開指令行視窗,登入mysql,執行設定主從資料庫同步點:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

change master to master_host='192.168.1.102',master_user='slave',master_password='root',master_log_file='test.000003',master_log_pos=1365332

其中設定參數代表含義:

master_host 主資料庫的IP位址
master_user 主資料庫的使用者
master_password 主資料庫的密碼
master_log_file 主資料庫的日志檔案,主資料庫中得到
master_log_pos 主資料庫的端口,主資料庫中得到

設定完成之後,執行startslave啟動從資料庫:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

啟動成功後,檢視從資料庫狀态:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

當Slave_IO_Runing顯示Connecting或Yes,Slave_SQL_Running顯示Yes時,即為主從連接配接成功。

驗證主從複制是否成功

         打開連接配接工具,連接配接資料庫,随意進行資料庫增删、資料增删改操作,都能同步:

         未修改前:                                              主資料庫新增一個資料庫後,重新整理從資料庫:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄
實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

在test資料庫下建立一個sixt表,字段為id,name。進行增删改查均可複制。

讀寫分離

根據查資料,本次決定采用Amoeba實作讀寫分離。在參考資料中詳細寫明了優缺點。

使用Amoeba前需要去官網下載下傳相應版本的檔案包,本次下載下傳的是Windows64位的:

amoeba-mysql-3.0.5-RC版本,解壓至目錄即可。

修改Amoeba配置檔案

打開解壓目錄,找到amoeba-mysql-3.0.5-RC\conf,其中amoeba.xml和dbServices.xml是主要配置檔案。

配置dbServices.xml檔案:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

其中隻需修改,預設連接配接的資料庫資訊。設定主從資料庫的IP位址資訊即可。其餘設定可參照API按需進行更改。

配置amoeba.xml檔案:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄
實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

需要設定資料庫連接配接密碼,和讀寫的配置,其中寫入資料庫為主資料庫,讀取資料庫為從資料庫。

啟動Amoeba

修改配置完成後,需要打開指令行視窗,執行運作Amoeba:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

運作檔案目錄amoeba-mysql-3.0.5-RC\bin下的launcher.bat即可。

內建進系統并測試

最終,将Amoeba內建進系統一起測試。

直接更改項目中JDBC連接配接配置,簡單寫出來一個增删該查進行驗證。

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

隻需修改連接配接端口為8066即可,連接配接資料庫為test,打開資料庫

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄
實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

可以發現此時主資料庫中隻有一條資料,從資料庫中有兩條資料。

程式sql語句部分的代碼如下:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

查詢

運作程式,檢視讀取的資料:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

可以看到,查詢結果是從資料庫的兩條記錄。讀的操作來自于從資料庫

新增

點選新增,進行新增操作:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

儲存後,自動重新整理頁面:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

此時打開資料庫檢視:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄
實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

主資料庫和從資料庫中都有一條新增的記錄。

修改

此時點選修改,因為修改為寫操作,操作于主資料庫,我們修改主資料庫沒有的id=2的記錄:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄
實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

提示資訊為修改失敗,檢視背景斷點,可以看出傳回值為0,沒有這條記錄,操作的是主資料庫:

實作Mysql主從複制讀寫分離實作Mysql主從複制讀寫分離記錄

删除

删除與修改相同,删除主資料庫中存在的資料,則從資料庫同步複制執行删除語句,   删除主資料中不存在的資料,則删除失敗。

繼續閱讀