在主庫讀取請求壓力很是大的場景下, 能夠經過配置一主多從複製架構實現讀寫分離, 把大量對實時性要求不是特別高的讀請求經過負載均衡分佈到多個從庫上, 下降主庫的讀取壓力,在主庫出現異常宕機的狀況下, 能夠把一個從庫切換爲主庫繼續提供服務 (中間切換過程沒法提供服務)。
mysql
先用2臺主機作測試sql
主庫:192.168.5.149:3306vim
從庫1:192.168.5.150:3307安全
主機配置文件bash
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 複製代碼
bind-address 改 0.0.0.0 或者 註釋掉 (這樣mysql服務就能夠監聽全網的鏈接)服務器
systemctl restart mysql複製代碼
確保要登陸的用戶host爲 %架構
select user, host from mysql.user; 複製代碼
(這步在後面grant replication slave on *.* to 'slave'@'%' identified by 'slave';
能夠保證)
負載均衡
設置防火牆ide
sudo ufw allow 3306 或者 sudo ufw disable
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 複製代碼
port修改(主庫就用3306)post
開啓server-id log_bin
systemctl restart mysql 複製代碼
// 啓用一個用戶 slave,用於從庫登陸到主庫
grant replication slave on *.* to 'slave'@'%' identified by 'slave';複製代碼
// 這裏給 slave用戶賦all privileges
grant all privileges on *.* to 'slave'@'%' identified by 'slave';複製代碼
flush privileges;複製代碼
show master status; // 查看master狀態複製代碼
主庫配置好了之後就先不要改動了,改動會影響狀態
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 複製代碼
修改port
把server-id改爲與主機不一樣的,log_bin打開
systemctl restart mysql 複製代碼
把slave主機的master_host切換到192.168.5.149
change master to master_host='192.168.5.149', master_port=3306, master_user='slave', master_password='slave', master_log_file='mysql-bin.000001', master_log_pos=1023;複製代碼
start slave; // stop slave; 可中止進行slave模式複製代碼
show slave status\G複製代碼
(看到兩個Yes了不,上面的slave_io_running破玩意總是NO,翻到下面報錯The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
能夠參考這篇,什麼,不是報這個錯,本身搜過別的!!!!)
主機給個命令 (你能感覺到個人憤怒┗|`O′|┛ 嗷~~)
從機 成功啦~