首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 下 MySQL 4.1 主從鏡像(複製)搭建標準化操作手冊

     編輯:MySQL 綜合教學

Linux 環境 MySQL 4.1 主從複製(鏡像)標準化部署指南

基於 MySQL 4.1 實測,採用基於二進制日志的異步複製架構。主庫 192.168.0.205,從庫 192.168.0.206。本文提供 7 步標準化流程、驗證方法與日常運維命令。

環境準備

  • MySQL 版本:4.1.x(主從版本一致,或從庫版本 ≥ 主庫版本)
  • 網絡互通,防火牆放行 3306 端口
  • 主庫數據目錄權限正確,server-id 唯一

標準化 7 步部署流程

第一步:主庫配置 /etc/my.cnf

[mysqld]
server-id=1
log-bin=mysql-bin
# 可選:只複製特定庫
# binlog-do-db=business_db
# binlog-ignore-db=test,tmp

重啟主庫 service mysql restart。

第二步:主庫創建複製賬號

GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* 
TO 'repl_user'@'192.168.0.206' IDENTIFIED BY 'repl_password';
FLUSH PRIVILEGES;

最小權限原則:僅授予 REPLICATION SLAVE、RELOAD(FLUSH TABLES)、SUPER(CHANGE MASTER/殺線程)。

第三步:從庫測試連接主庫

/opt/mysql/bin/mysql -u repl_user -p -h 192.168.0.205
# 能登錄說明網絡/權限無問題

第四步:從庫配置 /etc/my.cnf

[mysqld]
server-id=2
master-host=192.168.0.205
master-user=repl_user
master-password=repl_password
master-port=3306
master-connect-retry=60
# 可選:只複製特定庫
# replicate-do-db=business_db
# replicate-ignore-db=test,tmp

重啟從庫 service mysql restart。

第五步:初始化從庫數據(三種方式擇一)

  1. LOAD DATA FROM MASTER(MySQL 4.0+ 支持,會鎖表,僅適合小庫):
    /opt/mysql/share/mysql/mysql.server start
    /opt/mysql/bin/mysql -u root -p
    mysql> LOAD DATA FROM MASTER;
    
  2. mysqldump + 導入(推薦,不鎖表需 --single-transaction):
    # 主庫
    mysqldump --single-transaction --master-data=2 --all-databases > /tmp/full.sql
    scp /tmp/full.sql 192.168.0.206:/tmp/
    # 從庫
    mysql -u root -p < /tmp/full.sql
    
  3. 物理文件複製(大庫最快,需停主庫或鎖表 + 刷盤):
    # 主庫
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;  -- 記錄 File + Position
    tar czf /tmp/mysql_data.tar.gz /var/lib/mysql/
    UNLOCK TABLES;
    # 從庫解壓覆蓋 datadir,修改 server-id,啟動
    

第六步:啟動複製並驗證

# 從庫
mysql> SLAVE START;
mysql> SHOW SLAVE STATUS\G;

關鍵指標:

  • Slave_IO_Running: Yes — I/O 線程連接主庫正常
  • Slave_SQL_Running: Yes — SQL 線程重放日志正常
  • Seconds_Behind_Master: 0 — 無延遲

第七步:功能驗證測試

# 主庫
CREATE DATABASE sampdb;
USE sampdb;
CREATE TABLE test_tbl (name CHAR(20), phone CHAR(20));
INSERT INTO test_tbl VALUES ('abc', '0532555555');

# 從庫
SHOW DATABASES;  -- 應見 sampdb
USE sampdb;
SHOW TABLES;     -- 應見 test_tbl
SELECT * FROM test_tbl;  -- 數據一致

日常運維核心命令速查

操作命令說明
暫停/恢復複製SLAVE STOP; / SLAVE START;線程級控制,不影響主庫
查看複製狀態SHOW SLAVE STATUS\G;重點關注 Master_Log_File、Read_Master_Log_Pos、Exec_Master_Log_Pos
清理主庫舊 BinlogPURGE MASTER LOGS TO 'mysql-bin.000004';極度謹慎:確認從庫已執行至該位置,否則導致從庫斷檔
動態修改主庫參數CHANGE MASTER TO MASTER_HOST='...', MASTER_LOG_FILE='...', MASTER_LOG_POS=...;需先 SLAVE STOP,修改後 SLAVE START
跳過報錯事務SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; SLAVE START;慎用,可能導致數據不一致

避坑指南

  • server-id 主從必須不同,集群中全局唯一
  • 主庫 log-bin 未開啟無法複製
  • 從庫 master.info 文件記錄連接信息,手動修改 my.cnf 後需 CHANGE MASTER TO 同步
  • 跨版本複製:從庫版本 ≥ 主庫版本(如 5.0 主 → 5.1 從 可行,反之不可)
  • 網絡抖動導致 I/O 線程斷開,master-connect-retry 控制重試間隔
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved