一、主從複製的概述
- 在企業網站中,如果對數據庫的讀和寫都在同一個數據庫服務器中操作時,會有以下問題:
- 單點故障,服務不可用
- 無法處理大量的併發數據請求
- 數據丟失-大災難
因此,通過主從複製的方式來同步數據。
1.1、Mysql 主從複製的類型
- 1、基於語句的複製(默認)
在主服務器上執行的語句,從服務器執行同樣的語句。 - 2、基於行的複製
把改變的內容複製到從服務器。 - 3、混合類型的複製
一旦發現基於語句無法精確複製時,就會採取基於行的複製。
1.2、主從複製的工作過程
二、案例模擬
2.1、實驗準備
- 準備兩臺虛擬機,都搭建好 Mysql 服務。
具體的搭建過程見之前的博客,鏈接爲:Mysql5.7版本安裝步驟詳解 - 一臺做主服務器,另外一臺做從服務器
主服務器master | 從服務器slave |
---|---|
192.168.220.136 | 192.168.220.164 |
2.2、主從複製實驗操作
一、設置時間同步
- 主服務器:
1、安裝時間功能
yum -y install ntp
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
- 從服務器:
1、安裝ntp包
yum -y install ntp ntpdate
2、開啓服務,並關閉防火牆
systemctl start ntpd
systemctl stop firewalld
setenforce 0
3、進行時間同步
/usr/sbin/ntpdate 192.168.220.136
//此處IP地址是主服務器的地址
二、修改服務器的配置
- 主服務器:
1、mysql主服務器配置
vim /etc/my.cnf
server-id = 11 //指定id號,服務器的唯一標識,不能相同
log-bin=master-bin //主服務器日誌文件
log-slave-updates=true //從服務器更新二進制日誌
2、重啓服務
systemctl restart mysqld
3、登錄數據庫,給從服務器授權。
mysql -u root -pabc123
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.220.%' IDENTIFIED BY '123123';
flush privileges; //刷新數據庫的權限相關表
File和Position這兩個值在後面配置從服務器的時候會用到,slave應從該點在master上進行新的更新。
- 從服務器:
1、修改配置文件
vim /etc/my.cnf
server-id = 22
relay-log=relay-log-bin //從主服務器上同步日誌文件記錄到本地
relay-log-index=slave-relay-bin.index //定義relay-log的位置和名稱
2、重啓服務
systemctl restart mysqld
3、登錄數據庫,配置同步。
mysql -u root -pabc123
change master to master_host='192.168.220.136',master_user='myslave',master_password='123123',master_log_file='master-bin.000001',master_log_pos=604;
4、啓動同步,查看slave狀態,確保以下兩個值爲YES
start slave; //開啓從服務
show slave status\G; //查看狀態
2.3、實驗驗證
1、在主服務器上新建一個數據庫,查看從服務器上是否有 test 庫。
2、從服務器驗證
驗證得到主、從服務器的數據庫相同,則主從複製成功。下一篇博客將介紹讀寫分離。