天天看點

Mysql ------ 主從複制(主從同步)

文章目錄

    • 一、為何要進行主從複制?
    • 二、Mysql 主從複制的類型:
    • 三、主從複制的工作過程:
    • 四、案例示範:
      • 第一步:設定時間同步
      • 第二步:主伺服器配置
      • 第三步:從伺服器配置
      • 第四步:測試主從同步

一、為何要進行主從複制?

在企業網站中,如果後端隻要一台 Mysql 伺服器時,就會造成,比如單點故障,無法處理大量的并發資料請求和造成資料丢失等一系列問題。

是以,這就展現了 Mysql 主從複制的重要性了:

  • 一台主 Mysql 伺服器,多台從服務對資料進行備份,形成主備;
  • 確定主備 Mysql資料庫伺服器的資料是一樣的;
  • 主伺服器當機了,備伺服器依舊可以繼續工作,資料有保障。

二、Mysql 主從複制的類型:

(1)基于語句的複制(預設):

在主伺服器上執行的語句,從伺服器執行同樣的語句。

(2)基于行的複制:

把改變的内容複制到從伺服器。

(3)混合類型的複制:

一旦發現基于語句無法精确複制時,就會采取基于行的複制。

三、主從複制的工作過程:

Mysql ------ 主從複制(主從同步)

四、案例示範:

環境準備:

  • 兩台虛拟機,都搭建好 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
           
Mysql ------ 主從複制(主從同步)

(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
           
Mysql ------ 主從複制(主從同步)

第二步:主伺服器配置

1、修改配置檔案:

vim /etc/my.cnf

server-id  = 11              //指定id号,伺服器的唯一辨別
log-bin=master-bin           //主伺服器日志檔案
log-slave-updates=true       //從伺服器更新二進制日志
           
Mysql ------ 主從複制(主從同步)

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;             //檢視主伺服器狀态
           
Mysql ------ 主從複制(主從同步)

第三步:從伺服器配置

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;    //檢視狀态
           
Mysql ------ 主從複制(主從同步)

第四步:測試主從同步

1、先主伺服器上建立一個名為 school 的資料庫:

create database school;

Mysql ------ 主從複制(主從同步)

2、在從伺服器上檢視一下資料庫,是否也有 school 這個庫:

Mysql ------ 主從複制(主從同步)

至此,主從同步已經配置完成。

繼續閱讀