MySQL 8.0主從(Master-Slave)配置


版權聲明:轉載請注明出處,謝謝配合。 https://blog.csdn.net/zyhlwzy/article/details/80569422

MySQL 主從復制的方式有多種,本文主要演示基於基於日志(binlog)的主從復制方式。

MySQL 主從復制(也稱 A/B 復制) 的原理

  • Master將數據改變記錄到二進制日志(binary log)中,也就是配置文件log-bin指定的文件, 
    這些記錄叫做二進制日志事件(binary log events);

  • Slave 通過 I/O 線程讀取 Master 中的 binary log events 並寫入到它的中繼日志(relay log);

  • Slave 重做中繼日志中的事件, 把中繼日志中的事件信息一條一條的在本地執行一次,完 
    成數據在本地的存儲, 從而實現將改變反映到它自己的數據(數據重放)。

主從配置需要注意的點

  • 主從服務器操作系統版本和位數一致;

  • Master 和 Slave 數據庫的版本要一致;

  • Master 和 Slave 數據庫中的數據要一致;

  • Master 開啟二進制日志, Master 和 Slave 的 server_id 在局域網內必須唯一;

主從配置的簡要步驟 
Master 上的配置

  1. 安裝數據庫;
  2. 修改數據庫配置文件, 指明 server_id, 開啟二進制日志(log-bin);
  3. 啟動數據庫, 查看當前是哪個日志, position 號是多少;
  4. 登錄數據庫, 授權數據復制用戶(IP 地址為從機 IP 地址, 如果是雙向主從, 這里的還需要授權本機的 IP 地址, 此時自己的 IP 地址就是從 IP 地址);
  5. 備份數據庫(記得加鎖和解鎖);
  6. 傳送備份數據到 Slave 上;
  7. 啟動數據庫;

以下步驟, 為單向主從搭建成功, 想搭建雙向主從需要的步驟:

  1. 登錄數據庫, 指定 Master 的地址、 用戶、 密碼等信息(此步僅雙向主從時需要);
  2. 開啟同步, 查看狀態;

Slave 上的配置

  1. 安裝數據庫;
  2. 修改數據庫配置文件, 指明 server_id(如果是搭建雙向主從的話, 也要開啟二進制 
    日志 log-bin);
  3. 啟動數據庫, 還原備份;
  4. 查看當前是哪個日志, position 號是多少(單向主從此步不需要, 雙向主從需要);
  5. 指定 Master 的地址、 用戶、 密碼等信息;
  6. 開啟同步, 查看狀態。

1、主節(Master)點配置

修改 Master 的配置文件/etc/my.cnf

vi /etc/my.cnf
  • 1

在my.cnf文件中加入如下配置內容

[mysqld] log-bin=mysql-bin server-id=1
  • 1
  • 2
  • 3

2、從節點(Slave)配置

修改 Slave 的配置文件/etc/my.cnf

vi /etc/my.cnf
  • 1

在my.cnf文件中加入如下配置內容

[mysqld] server-id=2
  • 1
  • 2

3、創建用於復制操作的用戶

在主節點創建一個用戶repl,用於從節點鏈接主節點時使用。

mysql> CREATE USER 'repl'@'192.168.199.198' IDENTIFIED WITH mysql_native_password BY 'Ron_master_1'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.199.198';
  • 1
  • 2

刷新授權表信息

mysql> flush privileges;
  • 1

4、獲取主節點當前binary log文件名和位置(position)

mysql> SHOW MASTER STATUS;
  • 1

 


這里寫圖片描述 

 

5、在從(Slave)節點上設置主節點參數

mysql> CHANGE MASTER TO MASTER_HOST='192.168.199.149', MASTER_USER='repl', MASTER_PASSWORD='Ron_master_1', MASTER_LOG_FILE='binlog.000006', MASTER_LOG_POS=856;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

6、查看主從同步狀態

mysql> show slave status\G;
  • 1

7、開啟主從同步

mysql> start slave;
  • 1

8、再查看主從同步狀態

mysql> show slave status\G;
  • 1

查看狀態時,可能會出現I/O任務啟動失敗的情況,即如下錯誤:

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

這是因為在MySQL主從結構中,從機上的server_id和主機上的server_id不能相同,我們可以看一下主機上的server_id和從機上的server_id是否相同。

mysql> show variables like 'server_id'; 
  • 1

主機: 
這里寫圖片描述 
從機: 
這里寫圖片描述 
這里我們把從機的server_id改成2

mysql> set global server_id=2; #此處的數值和my.cnf里設置的一樣就行 
  • 1

9、重新開啟同步並查看裝態

mysql> start slave;
mysql> show slave status\G;
  • 1
  • 2

這里寫圖片描述
開啟主從之后,如果狀態如上圖所示,那么說明主從信息就已經配置好了,接下來我們測試一下在主機上創建一個數據庫,然后在從機上是否能夠同步創建。

首先看一下我們主機和從機除了MySQL本身自帶的數據庫之前目前是沒有任何數據的。 
這里寫圖片描述 
這里寫圖片描述 
這里寫圖片描述 
這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM