1、前言:讀寫分離的基本原理mysql
mysql的讀寫分離的基本原理是:讓master(主數據庫)來響應事務性操做,sql
讓slave(從數據庫)來響應select非事務性操做,數據庫
而後再採用主從複製來把master上的事務性操做同步到slave數據庫中。實現簡單的負載均衡。vim
2、前期準備工做:服務器
一、準備兩臺服務器,我這裏準備的是192.168.4.122(主),192.168.4.123(從)負載均衡
另外準備一臺服務器安裝中間件服務器(192.168.4.125)ide
二、首先把兩臺服務器作好主從同步。測試
三、準備讀寫分離的軟件:maxscale-2.1.2-1(中間件)spa
3、maxscale安裝和配置(4.125)router
一、安裝:rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
二、修改配置文件:vim /etc/maxscale.cnf
54-60行註釋掉,87-91註釋掉
10 threads=auto
18 [server1]
19 type=server
20 address=192.168.4.122
21 port=3306
22 protocol=MySQLBackend
23 [server2]
24 type=server
25 address=192.168.4.123
26 port=3306
27 protocol=MySQLBackend
35 [MySQL Monitor] //監視數據庫的配置
36 type=monitor
37 module=mysqlmon
38 servers=server1, server2
39 user=scalemon //監控
40 passwd=123456
41 monitor_interval=10000
63 [Read-Write Service] //配置查詢讀寫權限的賬號
64 type=service
65 router=readwritesplit
66 servers=server1, server2
67 user=maxscale //接收客戶端鏈接請求時,鏈接的用戶名和密碼在數據庫服務上是否存在
68 passwd=123456
69 max_slave_connections=100%
104 port=4010
三、在主庫(4.122)上添加上面須要的兩個受權用戶
grant replication slave,replication client on *.* to scalemon@'%' identified by "123456";
grant select on mysql.* to maxscale@'%' identified by "123456";
四、啓動服務:maxscale -f /etc/maxscale.cnf
中止服務:ps -C maxscale(查進程) kill -9 13109(殺進程)
查看服務是否啓動:netstat -natulp | grep maxscale
五、在主庫(4.122)上添加用於客戶端鏈接服務器的用戶名
grant all on *.* to student@'%' identified by '123456';
六、在4.125上:maxadmin -P4010 -uadmin -pmariadb //訪問控制後臺
list servers //顯示全部服務器主機,能夠看到服務器的運行信息
七、用宿主機作客戶端鏈接中間件的登錄方法:
mysql -h192.168.4.125 -P4006 -utest -p123456
八、測試方法:當從掛掉後,客戶端可寫可讀;
可是當主掛掉後,客戶端不可讀不可寫