MySQL 5.7主從部署
Mysql主從概念:
- mysql的主從複製,是用來建立一個和主資料庫完全一樣的資料庫環境,從庫會同步主庫得所有資料,可輕鬆實現故障轉移。
mysql主從主要作用:
- 實現資料備份;
- 基於資料備份,實現故障轉移(災備);
- 基於資料備份,實現讀寫分離;
常見mysql主從架構:
- 一主一從;
- 一主多從;
- 互為主從;
1)一主一從
主從工作原理:
這裡以一主一從為例:
# 主庫
master: 192.168.1.13
#從庫
slave: 192.168.1.8
# master端配置
第一步:主資料庫開啟二進位制日誌檔案。修改主庫配置檔案,在[mysqld]指令段新增以下行。
vim /etc/my.cnf #主配檔案路徑根據實際情況修改 server-id=1 #設定主庫叢集唯一標識 log-bin=jfedu-bin #主庫開啟二進位制檔案功能,(名稱可自定義)
修改後重啟mysql服務。mysql會自動給我們建立二進位制檔案。
- 檢視二進位制檔案配置是否生效
mysql
show master status;
或
show master logs;
如圖,能看到我們配置的二進位制檔案,說明功能已經開啟了。
注意,二進位制檔名稱在你每次重啟服務或者是重新整理時,都會重新生成。
- 檢視變數是否開啟,預設是開啟的,且必須為
show variables like "%log_bin";
第二步:主資料庫授權從資料庫,授權從資料庫能夠讀取主資料庫二進位制檔案。
# 授權從庫,擁有複製許可權 grant replication slave on *.* to "root"@"192.168.1.8" identified by "123456"; flush privileges;
說明:
replication:複製許可權,也可以是all
slave: 表示從庫。
*. 表示同步所有資料庫,也可以指定某一個庫。
root:使用者不需要在遠端伺服器或本機伺服器去建立,它會自動幫你建立,這個使用者僅僅是
192.168.1.x :指定從庫伺服器能夠登陸訪問,也可以設定成某一個網段都可以訪問。
---
# slave端配置
- 修改從庫配置檔案,在[mysqld]指令段新增以下行
vim /etc/my.cnf #主配檔案路徑根據實際情況修改
server-id=2 #設定從庫ID # 注意:這裡server-id的值可以是除1之外的任意數字,切記不能為1。
修改後重啟mariadb服務。
- 發請求告訴主庫要同步的認證資訊。
注意:同步主庫資料時,先將從庫salve服務關閉(關閉命令:slave stop;)
Mysql關閉命令:stop slave; 反之,start slave;
Mariadb關閉命令:slave stop; 反之,slave start;
change master to master_host="192.168.1.13", master_user="root", master_password="123456", master_log_file="jfedu-bin.000005", master_log_pos=699;
說明:
master_host="192.168.1.13", # 指定主資料庫地址
master_user="root", # 指定連線使用者
master_password="123456", # 指定連線密碼
master_log_file="jfedu-bin.000005", # 指定要連線主庫的最新的二進位制檔案,主庫二進位制檔案通過 show master status; 命令查詢。
master_log_pos=699; # 指定最新二進位制檔案的ID
發請求告訴主庫要同步的認證資訊後, 啟動從庫同步服務。
start slave;
當執行了啟動命令後,從庫就會立馬去根據指定的主庫資訊去連線主庫。
- 檢視從庫狀態
show slave status\G;
當看到Slave_IO、Slave_SQL均為YES即說明從庫已正常開啟,且與主庫建立了連線通道。
還可通過netstat -nltpa檢視從庫與主庫通訊埠。
這裡千萬注意:由於這裡我們同步的是最新的二進位制檔案,所以在該二進位制檔案之前生成的資料庫是無法進行同步的;若要將全部資料庫同步,需先將所有資料庫匯出。
#測試驗證
- 測試主庫新建一個數據庫,驗證從庫同步。
- 從庫驗證:這裡可以看到,當主庫有新的資料庫產生時,從庫會及時去進行同步。
2)一主多從
3)互為主從