首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 雙機同步部署實戰:FreeBSD 環境下單向主從配置全記錄

     編輯:MySQL 資料庫相關知識

記錄一次基於 FreeBSD 5.4、MySQL 4.1.15 的雙機單向同步部署實戰,涵蓋安裝佈局、配置文件佈放、主庫啟用 binlog、從庫動態配置、啟動驗證全流程,適合老版本環境維護參考或理解同步核心邏輯。

一、 環境規劃

角色主機名IPMySQL 安裝路徑數據目錄
Masterdb1192.168.0.1/usr/local/MySQL/usr/local/MySQL/var
Slavedb2192.168.0.2/usr/local/MySQL/usr/local/MySQL/var

同步策略:**單向**,Master 為寫入源,Slave 主動拉取同步。同步庫:abc。同步用戶:root(測試環境,生產嚴禁)。

二、 配置文件佈放

MySQL 4.1 默認配置文件在 /usr/local/MySQL/share/MySQL/,提供 my-small.cnf、my-medium.cnf、my-large.cnf。測試環境選用 my-medium.cnf:

cp /usr/local/MySQL/share/MySQL/my-medium.cnf /usr/local/MySQL/var/my.cnf

雙機均執行上述操作。

三、 Master 配置 (192.168.0.1)

vi /usr/local/MySQL/var/my.cnf

在 [mysqld] 區塊添加/修改:

server-id = 1
log-bin
binlog-do-db = abc

說明: log-bin 無參數則用主機名作前綴;sql-bin-update-same 為舊版參數,新版已廢棄。

重啟 Master

/usr/local/MySQL/bin/mysqladmin shutdown
/usr/local/MySQL/bin/mysqld_safe --user=mysql &

四、 Slave 配置 (192.168.0.2)

vi /usr/local/MySQL/var/my.cnf

在 [mysqld] 區塊添加:

server-id = 2
master-host = 192.168.0.1
master-user = root
master-password = your_root_password
master-port = 3306
master-connect-retry = 60
replicate-do-db = abc

關鍵差異: Slave 用 master-host 等參數聲明主庫連接信息(舊版靜態配置方式),新版 5.1+ 推薦 CHANGE MASTER TO 動態配置。

五、 初始化同步基準數據

  1. Master 執行 FLUSH TABLES WITH READ LOCK;。
  2. 備份 abc 庫數據(mysqldump --master-data=2 abc > abc.sql 或打包 datadir)。
  3. Master SHOW MASTER STATUS; 記錄 File、Position。
  4. Master UNLOCK TABLES;。
  5. 將備份導入 Slave abc 庫。

六、 啟動 Slave 同步

啟動 Slave MySQL 服務(建議加 --skip-slave-start 參數防自動啟動):

mysql> STOP SLAVE;
mysql> CHANGE MASTER TO
    MASTER_HOST = '192.168.0.1',
    MASTER_USER = 'root',
    MASTER_PASSWORD = 'your_root_password',
    MASTER_LOG_FILE = 'mysql-bin.000001',  -- Master SHOW MASTER STATUS 的 File
    MASTER_LOG_POS = 98;                   -- Master SHOW MASTER STATUS 的 Position
mysql> START SLAVE;

七、 驗證同步狀態

mysql> SHOW SLAVE STATUS\G

核心指標:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

八、 測試同步效果

-- Master 執行
USE abc;
CREATE TABLE test_sync (id INT PRIMARY KEY, val VARCHAR(20));
INSERT INTO test_sync VALUES (1, 'from_master');

-- Slave 查詢
USE abc;
SELECT * FROM test_sync;

若 Slave 能查到數據,同步生效。

九、 老版本遷移到新版本注意事項

舊版 (4.1/5.0/5.1)新版 (5.6/5.7/8.0)遷移建議
master-host 等靜態參數CHANGE MASTER TO 動態配置配置文件移除靜態參數,改用 SQL 動態配置
單線程 SQL 重放多線程 Slave (MTS) slave_parallel_workers開啟 MTS 提升重放並發
基於文件位置同步GTID (Global Transaction ID) 同步啟用 GTID 簡化切主、故障恢復
無半同步半同步複制 rpl_semi_sync_master關鍵業務開啟半同步保證零數據丟失
字符集 latin1 常見默認 utf8mb4統一字符集避免亂碼

十、 總結

雖環境版本較老,但 MySQL 主從同步核心邏輯**二十年未變**:Master 開 binlog → Slave 拉取 binlog → 重放 Relay Log。掌握 server-id、log-bin、CHANGE MASTER TO、SHOW SLAVE STATUS 四大核心,即可在任何版本環境落地同步架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved