一、主從同步的作用
1、數據分佈
2、負載均衡(load balancing)
4、高可用性(high availability)和容錯
二、主從同步原理
mysql(MariaDB)的主從複製其實很簡單,只要搞懂了原理,配置一個主從複製就是三下五除二的工夫
1、二進制日誌
想要做主從複製必須得有這個二進制日誌,那二進制日誌記錄的是什麼呢?二進制日誌中保存的只是跟服務器修改相關的操作,也叫複製日誌
二進制日誌爲了避免日誌文件過大,要進行不停地滾動,其主要有兩個功能:
(1)即時點恢復
(2)複製
因爲二進制日誌有即時點恢復功能,所以萬一某天一個不小心失誤把數據庫刪了,只要二進制日誌文件保存完好,就可以把我們的數據恢復回來。可見二進制日誌是非常重要的,因此二進制日誌千萬不要和你的數據庫目錄放到一起,而要另找一個位置保存
今天我們要做的是利用他的第二個功能完成主從複製
2、中繼日誌
中繼日誌和複製相關,中繼日誌是從服務器從主服務器上讀取主服務器上二進制日誌中的事件,每讀一個過來,並保存到本地。
3、主從同步原理
原理詳解:
1)主服務器發生數據更改操作,數據寫入到數據文件和二進制文件中,然後去喚醒從服務器的I/O線程(IO thread)
2)從服務器的IO thread來請求主服務器並把從主服務器的binlog dump線程返回結果寫入到本地中繼日誌中
3)從服務器的SQL thread每讀一條中繼日誌,然後寫一條到本地數據文件中
4)此過程中,從服務器只是同步主服務器的數據,所以他無需開啓二進制日誌,而且從服務器最好設爲只讀模式
5)主從複製並不是一個備份的過程,它只是一個數據同步的過程,因爲,如果你在主服務器上刪除一個庫,那你會發現從服務器上也沒有了
6)從服務器並不能負載主服務器的寫操作,它只可以負載主服務器的讀操作;因爲,不管你主服務器寫多少,從服務器都會通過它的中繼日誌和主服務器的二進制日誌同步到它本地的
三、主從同步的實現
1、修改主服務器的配置文件,我這裏的數據目錄在/mydata/data下,爲了安全,我把二進制日誌放到了/mydata/binlogs下,別忘了給這幾個目錄設置屬主和屬組爲mysql用戶,mysql組
2、在從服務器上修改主配置文件,方法同上一步
3、查看從服務器的中繼日誌是否啓動成功
4、在主服務器上創建有複製權限的賬號
grant replication slave on *.* to 'moba'@'192.168.100.137' identified by 'moba2015'; flush privileges;
5、在主服務器上查看其狀態信息
6、從服務器連接主服務器
7、查看從服務器的狀態信息,檢查是否連接主服務器成功
這裏的Slave_IO_Running和Slave_SQL_Running兩個線程必須都爲Yes纔是正確的,出現了什麼connecting啊還是no什麼的都是沒連接成功的。IO thread是去請求主服務器的二進制日誌並寫入到本地中繼日誌的,SQL thread是從中繼日誌寫入到本地數據文件的。
8、在主服務器上創建一個數據庫
9、在從服務器上啓動複製線程,測試hlbrc這個庫是否同步成功
mysql>start slave;
四、主從同步配置過程總結
1、主服務器
1)修改server-id
2)啓用二進制日誌
3)創建有複製權限的賬號
2、從服務器
1)修改server-id
2)啓用中繼日誌
3)連接主服務器
4)啓程複製線程