有時您可能需要將數據從一台 MySQL DB 服務器自動複製到一台或多台 MySQL DB 服務器。本質上,數據庫管理員執行與數據庫相關的任務,例如復制、集群和自動故障轉移。 管理 MySQL 數據庫服務器和執行複制任務是數據庫專家的職責。在本文中,您將學習如何在 Ubuntu 20.04 上設置主/從 MySQL 數據庫複製。本文使用 MySQL 8 進行複制。
先決條件
- 2個ubuntu服務器
- root 特權用戶帳戶
- 用於下載軟件包的 Internet 連接
此示例中使用以下服務器:
- 大師 – 192.168.178.135
- 奴隸 – 192.168.178.137
在兩個節點上安裝 MySQL 8 服務器
安裝 MySQL 是一個簡單的過程。 在 Ubuntu 系統上,可以使用 APT 包存儲庫安裝 MySQL。安裝前,使用以下命令更新 Ubuntu 包索引:
$apt update
使用以下命令安裝 MySQL 服務器包:
$apt install mysql-server -y
全新安裝 MySQL 服務器是不安全的。運行腳本“mysql_secure_installation”來更改安全性較低的默認選項,例如遠程 root 登錄、測試數據庫、示例用戶等。
$ mysql_secure_installation
啟動並啟用 MySQL 服務
$ systemctl start mysql
$ systemctl enable 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 – 二進制日誌文件的大小。
同樣註釋掉綁定地址如下:
#bind-address =127.0.0.1
重啟mysql服務
$systemctl restart mysql
在主站點上為複制服務創建一個新用戶
現在您需要在主節點上創建一個數據庫用戶,供從節點在連接時使用。 以 root 用戶身份登錄數據庫並創建一個用戶。
$ mysql -u root -p
$ mysql> CREATE USER [email protected] IDENTIFIED BY '[email protected]';
注意:如果你在創建用戶時指定了IP地址,它將只接受來自指定主機的MySQL連接。來自其他主機的連接被拒絕。在這個例子中,我們使用了 MySQL 從服務器的 IP 地址。根據您的環境,您可能需要更改此 IP 地址。
複製 MySQL 數據需要 REPLICATION SLAVE 權限。使用以下查詢授予權限:
mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;
使用以下查詢檢查授予的權限:
mysql> SHOW GRANTS FOR [email protected];
配置從數據庫節點
您在上一步中安裝了 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
在哪裡,
- 服務器編號 – 唯一的 MySQL 服務器 ID。
- 只讀 – 從節點設置為只讀模式
- log_bin – 在從節點上啟用二進制日誌記錄
- 慢查詢日誌 – 啟用慢查詢日誌
同時註釋掉 bind-address 行。
# bind-address = 127.0.0.1
重啟MySQL服務
$ systemctl restart mysql
將從服務器連接到主服務器
在設置從服務器之前,先去主服務器查看狀態。
$ mysql -u root -p
mysql> SHOW MASTER STATUSG
請注意以下要在從屬服務器上使用的標誌。
- 文件:mysql-bin.000002
- 職位:156
現在在將用於連接到主站的從站上配置參數。請按照以下步驟操作。
- 使用根憑據登錄到 MySQL 服務器。
$ mysql -u root -p
- 停止從屬線程
mysql> STOP SLAVE;
- 設置一個slave來複製master
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[email protected]', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;
在哪裡,
- 192.168.178.137 – 主服務器的 IP 地址
- 複製用戶 – 主服務器上的 MySQL 用戶
- 密碼 – 複製用戶密碼
- mysql-bin.000002 – 主服務器日誌文件
- 156- 主服務器日誌位置
然後激活從服務器。
mysql> START SLAVE;
使用以下查詢檢查從站的狀態
mysql> SHOW SLAVE STATUSG
請注意以下標誌的狀態。
- Slave_IO_Running:連接
- Slave_IO_Running:連接
檢查主/從復制
主/從配置為複制。您可以看到主/從復制正在運行。登錄到主服務器上的 MySQL shell 並創建一個測試數據庫。
$ mysql -u root -p
mysql> CREATE DATABASE example_db;
檢查創建的數據庫。
mysql> SHOW DATABASES;
登錄從服務器
$ mysql -u root -p
運行以下查詢以列出數據庫。
mysql> SHOW DATABASES;
可以看到主服務器上創建的數據庫已經復製到從服務器上了。
結論是
在本文中,您了解瞭如何在 Ubuntu 20.04 上設置 MySQL 主節點和從節點。您也可以按照本文在 Ubuntu 18.04 上設置主/從 MySQL 複製。