Ubuntu 20.04 上的 MySQL 8 主從復制

有時我們可能需要自動將數據從一台 MySQL DB 服務器複製到一台或多台 MySQL DB 服務器。 基本上,數據庫管理員執行與數據庫相關的任務,例如復制、集群和自動故障轉移。 管理 MySQL 數據庫服務器和執行複制任務是數據庫專家的職責。 在本文中,我們將學習如何在 Ubuntu 20.04 中設置主從 MySQL 數據庫複製。 在本文中,我們將使用 MySQL 8 進行複制。

先決條件

  • 兩個 ubuntu 服務器
  • root 特權用戶帳戶
  • 用於下載軟件包的 Internet 連接

在這 example,正在使用以下服務器。

  • 大師 – 192.168.178.135
  • 奴隸 – 192.168.178.137

在兩個節點上安裝 MySQL 8 服務器

MySQL的安裝是一個簡單直接的過程。 在Ubuntu系統中,可以使用APT包倉庫安裝MySQL。 在安裝之前,使用以下命令更新 Ubuntu 包索引。

$apt 更新

使用以下命令安裝 MySQL 服務器包。

$apt 安裝 mysql-server -y

MySQL 服務器的全新安裝使其不安全。 運行腳本“mysql_secure_installation”來更改一些安全性較低的默認選項,例如遠程 root 登錄、測試數據庫、示例用戶等。

$ mysql_secure_installation

啟動並啟用 MySQL 服務

$ systemctl 啟動mysql $ systemctl 啟用mysql

配置主數據庫服務器

現在我們需要在主服務器上進行一些更改以進行複制。 編輯 配置文件 目錄下的文件 /etc/mysql/mysql.conf.d 並添加以下幾行。 記得在下面添加配置變量 [mysqld] 部分。

$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql log-error = /var/log/mysql/error.log server- id = 1 log-bin = /var/log/mysql/mysql-bin.log tmpdir = /tmp binlog_format = ROW max_binlog_size = 800M sync_binlog = 1 expire-logs-days = 5 slow_query_log=1 slow_query_log_file=/var/lib/mysql /mysqld-slow.log

在哪裡:

  • server-id – MySQL 服務器的唯一 ID。 此 ID 不能在集群中的任何節點中重複使用。
  • log-bin – 這是存儲所有復制信息的文件。
  • max_binlog_size – binlog 文件的大小。

另外,將綁定地址註釋為:

#綁定地址=127.0.0.1

重啟mysql服務

$systemctl 重啟 mysql

在主節點上為 Replication 服務創建一個新用戶

現在我們需要在主節點中創建一個數據庫用戶,該用戶將在連接時由從屬節點使用。 使用root用戶登錄數據庫並創建用戶。

$ mysql -u root -p $ mysql> 創建用戶 [email protected] 由 ‘ 識別[email protected]’;

注意:在創建用戶時指定 IP 地址將只接受來自指定主機的 MySQL 連接。 來自其他主機的連接將被拒絕。 在這 example, 我已經使用了我的 MySQL 從服務器的 IP 地址。 您可能需要相應地將此 IP 地址更改為您的環境。

用戶需要 REPLICATION SLAVE 權限才能複制 MySQL 數據。 使用以下查詢授予權限。

mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;

使用以下查詢驗證授予的權限。

mysql> 顯示贈款 [email protected]192.168.178.137;

創建複製用戶

配置從數據庫節點

我們在上一步中已經安裝了 MySQL 服務器。 現在我們將更改一些配置文件以啟用複製過程。 編輯 配置文件 檔案在 /etc/mysql/mysql.conf.d 目錄並添加以下內容。

$ vi /etc/mysql/mysql.conf.d/mysqld.conf

配置文件內容:

[mysqld]

log_bin = /var/log/mysql/mysql-bin.log server-id = 2 read_only = 1 tmpdir = /tmp binlog_format = ROW max_binlog_size = 800M sync_binlog = 1 expire-logs-days = 5 slow_query_log = 2

在哪裡,

  • 服務器 ID – 唯一的 MySQL 服務器 ID。
  • 只讀 – 從節點設置為只讀模式
  • log_bin – 在從節點啟用二進制日誌記錄
  • 慢查詢日誌 – 啟用慢查詢日誌

另外,註釋掉綁定地址行。

# 綁定地址 = 127.0.0.1

從數據庫服務器配置

現在重啟 MySQL 服務

$ systemctl 重啟mysql

連接從服務器到主服務器

配置從服務器前,先到主服務器查看狀態。

$ mysql -u root -p mysql> 顯示主狀態G

連接數據庫服務器

記下我們將在從服務器中使用的以下標誌。

  • 文件:mysql-bin.000002
  • 職位:156

現在在從服務器中配置將用於連接主服務器的參數。 請按照以下步驟操作。

  • 使用 root 憑據登錄到 MySQL 服務器

$ mysql -u 根 -p

  • 停止從線程

mysql> 停止奴隸;

  • 設置從服務器以復制主服務器

mysql> 將 MASTER 更改為 MASTER_HOST=’192.168.178.137′, MASTER_USER=’replication_user’, MASTER_PASSWORD='[email protected]’, MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=1050;

主/從 MySQL 複製設置

在哪裡,

  • 192.168.178.137 – 主服務器的 IP 地址
  • 複製用戶 – 主服務器的 MySQL 用戶
  • 密碼 – 複製用戶密碼
  • mysql-bin.000002 – 主服務器的日誌文件
  • 156 – 主服務器的日誌位置

現在激活從服務器。

mysql> 啟動從機;

使用以下查詢驗證從站狀態

mysql> 顯示從屬狀態G

請注意以下標誌的狀態。

  • Slave_IO_Running:連接
  • Slave_IO_Running:連接

複製處於活動狀態並且正在工作

驗證主從復制

主從配置為複制。 我們可以驗證主從復制是否正常工作。 在主服務器中,登錄MySQL shell並創建一個測試數據庫。

$ mysql -u root -p mysql> CREATE DATABASE example_db;

驗證創建的數據庫。

mysql> 顯示數據庫;

檢查復制是否有效

現在登錄從服務器

$ mysql -u 根 -p

運行以下查詢以列出數據庫。

mysql> 顯示數據庫;

自動在從節點上創建數據庫

可以看到在主服務器上創建的數據庫被複製到從服務器上。

結論

在本文中,我們學習瞭如何在 Ubuntu 20.04 上設置 MySQL 主從節點。 您也可以按照本文在 Ubunutu 18.04 上設置主從 MySQL 複製。