1、主從數據庫的作用
其中Master負責寫操作的負載,也就是說一切寫的操作都在Master上進行,而讀的操作則分攤到Slave上進行。這樣一來的可以大大提高讀取的效率。在一般的互聯網應用中,經過一些數據調查得出結論,讀/寫的比例大概在 10:1左右 ,也就是說大量的數據操作是集中在讀的操作,這也就是爲什麼我們會有多個Slave的原因。但是爲什麼要分離讀和寫呢?熟悉DB的研發人員都知道,寫操作涉及到鎖的問題,不管是行鎖還是表鎖還是塊鎖,都是比較降低系統執行效率的事情。我們這樣的分離是把寫操作集中在一個節點上,而讀操作其其他的N個節點上進行,從另一個方面有效的提高了讀的效率,保證了系統的高可用性。
2、主從配置之前的須知
MySQL主從複製要求版本最好一致,至少前兩個版本號相同,因爲官方推薦這樣,最主要還是怕版本不一致帶來的不兼容問題。
首先注意的是,搭建好一臺虛擬機Centos7的MySQL,以及你本機的MySQL,我這裏是用本機MySQL作爲主,用虛擬機作爲從,此篇教程略過搭建系統和MySQL的過程,直接講配置。
3、主服務器MySQL版本8.0.19
4、從服務器MySQL版本8.0.20
5、修改主服務器MySQL的my.cnf配置文件
主服務器MySQL的具體的三項配置,保存之後記住重啓MySQL。
#skip-networking
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 131
6、修改從服務器MySQL的my.cnf配置文件
從服務器MySQL的具體的三項配置,保存之後記住重啓MySQL。
log_bin=mysql-bin
binlog_format=mixed
server_id = 104
7、在主庫的MySQL創建用於複製操作的用戶
##創建用戶
CREATE USER 'Slave1'@'192.168.62.131' IDENTIFIED WITH mysql_native_password BY 'Slave_xiaoxuan123';
##給用戶授權
GRANT REPLICATION SLAVE ON *.* TO 'Slave1'@'192.168.62.131';
##刷新權限信息
flush privileges;
8、獲取文件名和位置
SHOW MASTER STATUS;
9、在從(Slave)庫設置參數
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.104',
MASTER_USER='Slave1',
MASTER_PASSWORD='Slave_xiaoxuan123',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=870;
10、查看主從同步狀態
show slave status\G;
11、開啓主從同步
start slave;
12、再次查看
show slave status\G;
13、在主庫創建數據庫進行測試
##創建名爲xiaoxuan的數據庫進行測試
Create database xiaoxuan;
14、去從庫看看會不會產生xiaoxuan的數據庫
15、注意事項
每次主服務器,重新啓動MySQL後,position參數位置需要改變,也就是上面的第9步的最後一位參數需要改變,當然ip地址也是一樣,如果服務器ip地址經常性修改,則也要修改,不過這種情況很少,重啓MySQL的情況比較多。