數據庫讀寫分離mysql

主服務器master記錄數據庫操作日誌到Binary log,從服務器開啓i/o線程將二進制日誌記錄的操作同步到relay log(存在從服務器的緩存中),另外sql線程將relay log日誌記錄的操作在從服務器執行。 
記住這張圖,接下來基於這個圖實際設置主從數據庫。

主從數據庫設置的具體步驟
首先要有兩個數據庫服務器master、slave(也可以用一個服務器安裝兩套數據庫環境運行在不同端口,slave也可以舉一反三設置多個),我們窮人就買虛擬雲服務器玩玩就行 0.0。以下操作假設你的兩臺服務器上都已經安裝好了mysql服務。

1.打開mysql數據庫配置文件
vim /etc/my.cnf
2.在主服務器master上配置開啓Binary log,主要是在[mysqld]下面添加:

server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

3.重啓mysql服務
service mysql restart
ps:重啓方式隨意4.檢查配置效果,進入主數據庫並執行

mysql> SHOW MASTER STATUS;


可以看到下圖表示配置沒問題,這裏面的File名:master-bin.000001 我們接下來在從數據庫的配置會使用:

5.配置從服務器的 my.cnf
在[mysqld]節點下面添加: 

server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin


這裏面的server-id 一定要和主庫的不同,如圖: 

配置完成後同樣重啓從數據庫一下

service mysql restart
6.接下來配置兩個數據庫的關聯
首先我們先建立一個操作主從同步的數據庫用戶,切換到主數據庫執行:

mysql> create user repl;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'從xxx.xxx.xxx.xx' IDENTIFIED BY 'password';
mysql> flush privileges;


這個配置的含義就是創建了一個數據庫用戶repl,密碼是mysql, 在從服務器使用repl這個賬號和主服務器連接的時候,就賦予其REPLICATION SLAVE的權限, *.* 表面這個權限是針對主庫的所有表的,其中xxx就是從服務器的ip地址。 
進入從數據庫後執行:

mysql> change master to master_host='主xxx.xxx.xxx.xx',master_port=3306,master_user='repl',master_password='password',master_log_file='master-bin.000001',master_log_pos=0;


這裏面的xxx是主服務器ip,同時配置端口,repl代表訪問主數據庫的用戶,上述步驟執行完畢後執行start slave啓動配置:

mysql> start slave;

停止主從同步的命令爲:

mysql> stop slave;


查看狀態命令,\G表示換行查看

mysql> show slave status


可以看到狀態如下: 

這裏看到從數據庫已經在等待主庫的消息了,接下來在主庫的操作,在從庫都會執行了。我們可以主庫負責寫,從庫負責讀(不要在從庫進行寫操作),達到讀寫分離的效果。

我們可以簡單測試:
在主數據庫中創建一個新的數據庫:

mysql> create database testsplit;


在從數據庫查看數據庫:

mysql> show databases;


可以看到從數據庫也有testsplit這張表了,親測可用。在主數據庫插入數據,從數據庫也可以查到。 
至此已經實現了數據庫主從同步

代碼層面實現讀寫分離
上面我們已經有了兩個數據庫而且已經實現了主從數據庫同步,接下來的問題就是在我們的業務代碼裏面實現讀寫分離,假設我們使用的是主流的ssm的框架開發的web項目,這裏面我們需要多個數據源。

在此之前,我們在項目中一般會使用一個數據庫用戶遠程操作數據庫(避免直接使用root用戶),因此我們需要在主從數據庫裏面都創建一個用戶mysqluser,賦予其增刪改查的權限:
mysql> GRANT select,insert,update,delete ON *.* TO 'mysqluser'@'%' IDENTIFIED BY 'mysqlpassword' WITH GRANT OPTION;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章