MySQL數(shù)據(jù)庫雙機熱備的配置方法詳解
1. 環(huán)境準備
假設(shè)我們有兩臺服務(wù)器,分別作為主服務(wù)器(Master)和從服務(wù)器(Slave):
- 主服務(wù)器(Master):192.168.1.100
- 從服務(wù)器(Slave):192.168.1.101
1.1 安裝MySQL
確保兩臺服務(wù)器上都安裝了相同版本的MySQL??梢允褂靡韵旅畎惭bMySQL:
sudo apt-get update sudo apt-get install mysql-server
1.2 配置MySQL
1.2.1 主服務(wù)器配置
編輯主服務(wù)器的MySQL配置文件??/etc/mysql/my.cnf??,添加或修改以下內(nèi)容:
[mysqld] server-id=1 log_bin=/var/log/mysql/mysql-bin.log binlog_do_db=your_database_name
- ?
?server-id??:每個MySQL實例必須有一個唯一的ID。 - ?
?log_bin??:指定二進制日志文件的路徑。 - ?
?binlog_do_db??:指定需要同步的數(shù)據(jù)庫名稱。
重啟MySQL服務(wù)以使配置生效:
sudo systemctl restart mysql
1.2.2 從服務(wù)器配置
編輯從服務(wù)器的MySQL配置文件??/etc/mysql/my.cnf??,添加或修改以下內(nèi)容:
[mysqld] server-id=2 relay-log=/var/log/mysql/mysql-relay-bin.log log_bin=/var/log/mysql/mysql-bin.log
- ?
?server-id??:每個MySQL實例必須有一個唯一的ID。 - ?
?relay-log??:指定中繼日志文件的路徑。 - ?
?log_bin??:指定二進制日志文件的路徑。
重啟MySQL服務(wù)以使配置生效:
sudo systemctl restart mysql
2. 配置主從復(fù)制
2.1 創(chuàng)建復(fù)制用戶
在主服務(wù)器上創(chuàng)建一個用于復(fù)制的用戶,并授予相應(yīng)的權(quán)限:
CREATE USER 'repl'@'192.168.1.101' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101'; FLUSH PRIVILEGES;
2.2 獲取主服務(wù)器的二進制日志文件和位置
在主服務(wù)器上執(zhí)行以下命令,獲取當前二進制日志文件和位置:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
記錄下??File??和??Position??的值,例如:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 12345 | your_database| | +------------------+----------+--------------+------------------+
2.3 配置從服務(wù)器
在從服務(wù)器上執(zhí)行以下命令,配置從服務(wù)器連接到主服務(wù)器:
CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345;
2.4 啟動從服務(wù)器的復(fù)制線程
在從服務(wù)器上啟動復(fù)制線程:
START SLAVE;
2.5 檢查復(fù)制狀態(tài)
在從服務(wù)器上檢查復(fù)制狀態(tài):
SHOW SLAVE STATUS\G
確保??Slave_IO_Running??和??Slave_SQL_Running??都為??Yes??,表示復(fù)制正常運行。
3. 測試主從復(fù)制
在主服務(wù)器上創(chuàng)建一個測試表并插入一些數(shù)據(jù):
CREATE DATABASE test_db; USE test_db; CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(100)); INSERT INTO test_table VALUES (1, 'Alice'), (2, 'Bob');
在從服務(wù)器上檢查數(shù)據(jù)是否同步:
USE test_db; SELECT * FROM test_table;
如果數(shù)據(jù)已經(jīng)同步到從服務(wù)器,說明主從復(fù)制配置成功。
MySQL的雙機熱備(也稱為主從復(fù)制)是一種常見的高可用性解決方案,通過在兩臺或多臺服務(wù)器之間同步數(shù)據(jù)來提高系統(tǒng)的可靠性和性能。在主從復(fù)制中,一臺服務(wù)器作為主服務(wù)器(Master),負責處理所有的寫操作;其他服務(wù)器作為從服務(wù)器(Slave),負責讀取數(shù)據(jù)并復(fù)制主服務(wù)器的數(shù)據(jù)變更。
下面是一個基本的MySQL主從復(fù)制配置步驟和示例代碼:
1. 配置主服務(wù)器(Master)
首先,在主服務(wù)器上編輯MySQL配置文件??my.cnf??或??my.ini??,通常位于??/etc/mysql/??目錄下,添加或修改以下內(nèi)容:
[mysqld] server-id=1 log-bin=mysql-bin binlog-format=row
- ?
?server-id??:每個MySQL實例必須有一個唯一的ID。 - ?
?log-bin??:啟用二進制日志,用于記錄所有更改數(shù)據(jù)庫的操作。 - ?
?binlog-format??:設(shè)置二進制日志格式為行格式,這有助于更精確地復(fù)制數(shù)據(jù)。
重啟MySQL服務(wù)以應(yīng)用更改:
sudo systemctl restart mysql
2. 創(chuàng)建復(fù)制用戶
在主服務(wù)器上創(chuàng)建一個專門用于復(fù)制的用戶,并賦予相應(yīng)的權(quán)限:
CREATE USER 'replication'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; FLUSH PRIVILEGES;
3. 獲取主服務(wù)器的狀態(tài)信息
執(zhí)行以下命令獲取主服務(wù)器的當前二進制日志文件名和位置,這些信息將在配置從服務(wù)器時使用:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
輸出示例:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 120 | | | +------------------+----------+--------------+------------------+
記住??File??和??Position??的值,因為它們將用于配置從服務(wù)器。
4. 解鎖表
在獲取了必要的信息后,解鎖表:
UNLOCK TABLES;
5. 配置從服務(wù)器(Slave)
編輯從服務(wù)器上的MySQL配置文件??my.cnf??或??my.ini??,添加或修改以下內(nèi)容:
[mysqld] server-id=2 relay-log=mysql-relay-bin log-slave-updates=1 read-only=1
- ?
?server-id??:確保與主服務(wù)器不同。 - ?
?relay-log??:指定中繼日志文件的名稱。 - ?
?log-slave-updates??:允許從服務(wù)器將其接收到的更新記錄到自己的二進制日志中。 - ?
?read-only??:使從服務(wù)器只讀,防止意外的數(shù)據(jù)修改。
重啟MySQL服務(wù)以應(yīng)用更改:
sudo systemctl restart mysql
6. 配置從服務(wù)器連接主服務(wù)器
在從服務(wù)器上執(zhí)行以下SQL命令,配置從服務(wù)器連接到主服務(wù)器:
CHANGE MASTER TO MASTER_HOST='master_server_ip', MASTER_USER='replication', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120;
- ?
?MASTER_HOST??:主服務(wù)器的IP地址。 - ?
?MASTER_USER??:在主服務(wù)器上創(chuàng)建的復(fù)制用戶的用戶名。 - ?
?MASTER_PASSWORD??:復(fù)制用戶的密碼。 - ?
?MASTER_LOG_FILE?? 和 ??MASTER_LOG_POS??:從主服務(wù)器的??SHOW MASTER STATUS;??命令中獲得的值。
7. 啟動從服務(wù)器的復(fù)制進程
在從服務(wù)器上啟動復(fù)制進程:
START SLAVE;
檢查復(fù)制狀態(tài):
SHOW SLAVE STATUS\G
確保??Slave_IO_Running??和??Slave_SQL_Running??都顯示為??Yes??,表示復(fù)制正在正常運行。
8. 測試復(fù)制
在主服務(wù)器上創(chuàng)建一個測試數(shù)據(jù)庫和表,并插入一些數(shù)據(jù),然后檢查從服務(wù)器上是否同步了這些更改。
-- 在主服務(wù)器上 CREATE DATABASE test_db; USE test_db; CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(100)); INSERT INTO test_table VALUES (1, 'Test'); -- 在從服務(wù)器上 USE test_db; SELECT * FROM test_table;
如果從服務(wù)器上能看到相同的表和數(shù)據(jù),說明主從復(fù)制配置成功。
MySQL數(shù)據(jù)庫的雙機熱備(也稱為主從復(fù)制)是一種常見的高可用性解決方案,它通過在兩臺或多臺服務(wù)器之間同步數(shù)據(jù)來確保系統(tǒng)的可靠性和連續(xù)性。主從復(fù)制的基本原理是將一臺MySQL服務(wù)器設(shè)置為主服務(wù)器(Master),另一臺或多臺設(shè)置為從服務(wù)器(Slave)。主服務(wù)器上的所有更改都會被記錄到二進制日志(Binary Log)中,從服務(wù)器則會讀取這些日志并應(yīng)用相應(yīng)的更改。
以下是配置MySQL主從復(fù)制的基本步驟,包括所需的SQL命令和配置文件修改:
1. 配置主服務(wù)器
修改主服務(wù)器的??my.cnf??配置文件
首先,需要編輯主服務(wù)器的MySQL配置文件(通常是??/etc/mysql/my.cnf??或??/etc/my.cnf??),添加或修改以下內(nèi)容以啟用二進制日志和唯一服務(wù)器ID:
[mysqld] server-id=1 log-bin=mysql-bin binlog-format=row
- ?
?server-id??:每個MySQL實例必須有一個唯一的標識符。 - ?
?log-bin??:指定二進制日志的前綴名。 - ?
?binlog-format??:設(shè)置二進制日志格式,推薦使用??row??模式。
重啟MySQL服務(wù)
保存配置文件后,重啟MySQL服務(wù)使配置生效:
sudo systemctl restart mysql
創(chuàng)建用于復(fù)制的用戶
在主服務(wù)器上創(chuàng)建一個專門用于復(fù)制的MySQL用戶,并賦予相應(yīng)的權(quán)限:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
- ?
?CREATE USER??:創(chuàng)建新用戶。 - ?
?GRANT REPLICATION SLAVE??:授予該用戶復(fù)制權(quán)限。 - ?
?FLUSH PRIVILEGES??:刷新權(quán)限表,使更改立即生效。
獲取二進制日志位置
在開始復(fù)制之前,需要鎖定主服務(wù)器的數(shù)據(jù)表,獲取當前的二進制日志文件名和位置:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
2. 配置從服務(wù)器
修改從服務(wù)器的??my.cnf??配置文件
同樣地,編輯從服務(wù)器的MySQL配置文件,添加或修改以下內(nèi)容:
[mysqld] server-id=2
- ?
?server-id??:設(shè)置與主服務(wù)器不同的唯一標識符。
重啟MySQL服務(wù)
保存配置文件后,重啟MySQL服務(wù):
sudo systemctl restart mysql
配置從服務(wù)器連接主服務(wù)器
在從服務(wù)器上執(zhí)行以下SQL命令,配置從服務(wù)器連接到主服務(wù)器,并指定二進制日志文件和位置:
CHANGE MASTER TO MASTER_HOST='master_host_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
- ?
?MASTER_HOST??:主服務(wù)器的IP地址。 - ?
?MASTER_USER??、??MASTER_PASSWORD??:用于復(fù)制的用戶名和密碼。 - ?
?MASTER_LOG_FILE??、??MASTER_LOG_POS??:從哪個二進制日志文件和位置開始復(fù)制。
啟動復(fù)制進程
啟動從服務(wù)器的復(fù)制進程:
START SLAVE;
3. 驗證復(fù)制狀態(tài)
在從服務(wù)器上檢查復(fù)制狀態(tài),確保一切正常:
SHOW SLAVE STATUS\G
重點查看以下幾個字段:
- ?
?Slave_IO_Running?? 和 ??Slave_SQL_Running?? 應(yīng)該都顯示為 ??Yes??。 - ?
?Last_Error?? 和 ??Last_IO_Error?? 應(yīng)該為空。
如果一切正常,那么主從復(fù)制就已經(jīng)成功配置了。
注意事項
- 確保主從服務(wù)器之間的網(wǎng)絡(luò)連接暢通。
- 定期檢查復(fù)制狀態(tài),確保沒有延遲或錯誤。
- 考慮使用SSL加密復(fù)制通道,提高安全性。
以上就是MySQL數(shù)據(jù)庫雙機熱備的配置方法詳解的詳細內(nèi)容,更多關(guān)于MySQL雙機熱備配置的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
圖文詳解MySQL中兩表關(guān)聯(lián)的連接表如何創(chuàng)建索引
這篇文章通過圖文給大家介紹了關(guān)于MySQL中兩表關(guān)聯(lián)的連接表如何創(chuàng)建索引的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-05-05
MySQL數(shù)據(jù)庫中數(shù)值字段類型長度int(11)和Decimal(M,D)詳解
這篇文章主要介紹了MySQL數(shù)據(jù)庫中數(shù)值字段類型長度int(11)和Decimal(M,D)字段詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
前端傳參數(shù)進行Mybatis調(diào)用mysql存儲過程執(zhí)行返回值詳解
這篇文章主要介紹了前端傳參數(shù)進行Mybatis調(diào)用mysql存儲過程執(zhí)行返回值詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
mysql8.0?.ibd文件恢復(fù)表結(jié)構(gòu)的實現(xiàn)
本文主要介紹了mysql8.0?.ibd文件恢復(fù)表結(jié)構(gòu)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10
MySQL 性能優(yōu)化的最佳20多條經(jīng)驗分享
今天,數(shù)據(jù)庫的操作越來越成為整個應(yīng)用的性能瓶頸了,這點對于Web應(yīng)用尤其明顯。關(guān)于數(shù)據(jù)庫的性能,這并不只是DBA才需要擔心的事,而這更是我們程序員需要去關(guān)注的事情。2010-07-07
MySQL將時間戳轉(zhuǎn)換為年月日格式的實現(xiàn)
在我們的項目開發(fā)過程中,經(jīng)常需要將時間戳或日期時間字段轉(zhuǎn)換為特定的格式,本文主要介紹了MySQL將時間戳轉(zhuǎn)換為年月日格式的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-08-08
MySQL修改安全策略時報錯:ERROR?1193?(HY000)的解決辦法
這篇文章主要給大家介紹了關(guān)于MySQL修改安全策略時報錯:ERROR?1193?(HY000):?Unknown?system?variable?‘validate_password_policy‘的解決方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-02-02

