文章目錄
-
- 一、為何要進行主從複制?
- 二、Mysql 主從複制的類型:
- 三、主從複制的工作過程:
- 四、案例示範:
-
- 第一步:設定時間同步
- 第二步:主伺服器配置
- 第三步:從伺服器配置
- 第四步:測試主從同步
一、為何要進行主從複制?
在企業網站中,如果後端隻要一台 Mysql 伺服器時,就會造成,比如單點故障,無法處理大量的并發資料請求和造成資料丢失等一系列問題。
是以,這就展現了 Mysql 主從複制的重要性了:
- 一台主 Mysql 伺服器,多台從服務對資料進行備份,形成主備;
- 確定主備 Mysql資料庫伺服器的資料是一樣的;
- 主伺服器當機了,備伺服器依舊可以繼續工作,資料有保障。
二、Mysql 主從複制的類型:
(1)基于語句的複制(預設):
在主伺服器上執行的語句,從伺服器執行同樣的語句。
(2)基于行的複制:
把改變的内容複制到從伺服器。
(3)混合類型的複制:
一旦發現基于語句無法精确複制時,就會采取基于行的複制。
三、主從複制的工作過程:
四、案例示範:
環境準備:
- 兩台虛拟機,都搭建好 Mysql 服務;
- 一台做主伺服器,另外一台做從伺服器;
- 實驗結果驗證:在主伺服器上執行的語句,從伺服器都會執行同樣語句。
主伺服器(master) | IP位址:192.168.220.141 |
---|---|
從伺服器 (slave) | IP位址:192.168.220.140 |
第一步:設定時間同步
1、主伺服器上:
(1)安裝時間伺服器:
yum install ntp -y
(2)修改配置檔案:
vim /etc/ntp.conf
server 127.127.220.0 //本地是時鐘源
fudge 127.127.220.0 stratum 8 //設定時間層級為8
(3)重新開機服務,并且關閉防火牆等
systemctl start ntpd //開啟時間同步服務
systemctl stop firewalld //關閉防火牆
setenforce 0
2、從伺服器上:
(1)安裝時間伺服器:
yum install ntp ntpdate -y
(2)開啟服務,關閉防火牆:
systemctl start ntpd
systemctl stop firewalld
setenforce 0
(3)進行時間同步:
/usr/sbin/ntpdate 192.168.220.141
第二步:主伺服器配置
1、修改配置檔案:
vim /etc/my.cnf
server-id = 11 //指定id号,伺服器的唯一辨別
log-bin=master-bin //主伺服器日志檔案
log-slave-updates=true //從伺服器更新二進制日志
2、重新開機服務:
systemctl restart mysqld.service
3、進行資料庫:
mysql -uroot -p //進入資料庫
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.220.%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES; //重新整理MySQL的系統權限相關表
show master status; //檢視主伺服器狀态
第三步:從伺服器配置
1、修改配置檔案:
vim /etc/my.cnf
server-id = 22 //指定id号,伺服器的唯一辨別
relay-log=relay-log-bin //從主伺服器上同步日志檔案記錄到本地
relay-log-index=slave-relay-bin.index //定義relay-log的位置和名稱
2、重新開機mysql服務:
systemctl restart mysqld.service
3、進入資料庫:
mysql -uroot -p
change master to master_host='192.168.220.141',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=604;
start slave;
show slave status\G; //檢視狀态
第四步:測試主從同步
1、先主伺服器上建立一個名為 school 的資料庫:
create database school;
2、在從伺服器上檢視一下資料庫,是否也有 school 這個庫:
至此,主從同步已經配置完成。