MySQL ---- 主從複製

MySQL ---- 主從複製(主從同步)

一:主從複製的作用

​ 在企業網站中,如果後端只要一臺 Mysql 服務器時,就會造成故障。比如單點故障,無法處理大量的併發數據請求和造成數據丟失等一系列問題。

1、改造辦法
  • 增加MySQL 數據庫服務器,對數據進行備份,形成主備

  • 確保主備mysql 數據庫服務器數據是一樣的

  • 主服務器宕機了,備份服務器繼續工作,數據有保障

  • Mysql 主從複製與讀寫分離是密切相關的

2、更高級解決方案

​ 通過主從複製的方式同步數據,再通過讀寫分離來提升數據庫的併發負載能力 。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MAFzgkc1-1578837300432)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578639463819.png)]

二、Mysql 主從複製的類型

  • 基於語句的複製(默認)

​ 在主服務器上執行的語句,從服務器執行同樣的語句

  • 基於行的複製

​ 把改變的內容複製到從服務器

  • 混合類型的複製

​ 一旦發現基於語句無法精確複製時,就會採用基於行動的複製

三:實驗過程

1、實驗環境

2臺centos7虛擬機,搭建好mysql服務 。一臺主服務器 (master),一臺從服務器 (slave)

實驗結果驗證:在主服務器上執行的命令,從服務器上也會出現。

2、建立時間同步環境
  • 在主服務器上安裝配置NTP時間同步服務器

(使用yum 安裝ntp服務 ,修改ntp.conf ,設置主服務器爲時間同步源)

  • 在從服務器上進行時間同步

(使用yum 安裝ntpdate 並進行時間同步)

3、主服務器上配置 (1)

  • 修改主機名 爲master
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]#su
[root@master ~]#[root@master ~]# systemctl stop firewalld.service 
[root@master ~]# setenforce 0             ‘關閉防火牆’
  • 安裝時間服務器:
[root@master ~]# yum install ntp -y
  • 修改配置文件
[root@master ~]# vim /etc/ntp.conf             ‘添加兩行命令’

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-exRNpUwM-1578837300434)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578643725051.png)]

[root@master ~]# systemctl start ntpd         ‘開啓ntpd’

4、從服務器上配置 (1)

  • 修改主機名
[root@localhost ~]# hostnamectl set-hostname slave
[root@localhost ~]#su
[root@master ~]#[root@master ~]# systemctl stop firewalld.service 
[root@master ~]# setenforce 0             ‘關閉防火牆’
  • 安裝時間服務器
[root@slave ~]# yum install ntp ntpdate -y
  • 進行時間同步
[root@slave ~]# systemctl start ntpd        ‘開啓ntpd服務’
[root@slave ~]# /usr/sbin/ntpdate 192.168.34.172    ‘同步主服務器的IP地址’

5、主服務器配置(2)

  • 修改配置文件
[root@master ~]# vim /etc/my.cnf
‘插入三行命令’
server-id  = 1             ‘指定id號,服務器的唯一標識’
log-bin=master-bin           ‘主服務器日誌文件’
log-slave-updates=true       ‘從服務器更新二進制日誌’
  • 重啓服務
[root@master system]# systemctl restart mysqld.service
  • 進入數據庫
[root@master system]# mysql -uroot -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.34.%' IDENTIFIED BY '123';       ‘給從服務器授權訪問主服務器’  
mysql> flush privileges;       ‘刷新’
mysql> show master status;      ‘查看主服務器的日誌文件’

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-feTTUroB-1578837300434)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578836402879.png)]

6、從服務器配置(2)

  • 修改配置文件
[root@slave ~]# vim /etc/my.cnf
‘添加3行命令’
server-id = 2        ‘指定id號,服務器的唯一標識’
relay-log=relay-log-bin      ‘從服務器上同步日誌文件記錄到本地’
relay-log-index=slave-relay-bin.index      ‘定義relay-log的位置和名稱’

[root@slave ~]# systemctl restart mysqld      ‘開啓mysqld服務’
  • 進入數據庫,配置同步
[root@slave ~]# mysql -uroot -p
mysql> change master to master_host='192.168.34.172',master_user='myslave',master_password='123',master_log_file='master-bin.000004',master_log_pos=603;
mysql> start slave;     ‘開啓從服務’

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fzhWiyB4-1578837300435)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578649264513.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RIZJDSGb-1578837300435)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578835416273.png)]

四:實驗驗證

(1)在主服務器中新建一個數據庫,在從服務器上查看 是否有新建的數據庫 。有,則主從複製成功。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2AW2tIBv-1578837300436)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1578835895981.png)]

(2)在 從服務器中查看
在這裏插入圖片描述

Mysql 主從複製與讀寫分離是密切相關的,下一篇將介紹讀寫分離。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章