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

MySQL Master/Slave 複寫架設實戰:從資料同步到高可用部署

     編輯:MySQL 資料庫相關知識

複寫原理與適用場景

MySQL Replication 透過定義 Master(主庫)與 Slave(從庫)關係,將二進位日誌事件即時重放至從庫,實現資料近乎同步的備份。適用於:讀寫分離、異地災備、報表查詢分流等場景。MySQL 3.23 起支援,4.1 後功能大幅增強。

測試環境規劃

角色版本OSIP
MasterMySQL 4.1.12RedHat 9.0192.168.0.217
SlaveMySQL 4.1.12RedHat 9.0192.168.10.244

步驟一:主從雙邊編譯安裝 MySQL 4.1.12

# tar zxvf mysql-4.1.12.tar.gz
# cd mysql-4.1.12
# ./configure --prefix=/var/eyou/mysql
# make && make install
# chown -R root /var/eyou/mysql
# chown -R mysql /var/eyou/mysql/var
# chgrp -R mysql /var/eyou/mysql
# scripts/mysql_install_db
# cp support-files/my-medium.cnf /etc/my.cnf

步驟二:Master 授權與資料打包

# /var/eyou/mysql/bin/mysql -u root -p
mysql> GRANT FILE, REPLICATION SLAVE ON *.* TO 'rep'@'192.168.10.244' IDENTIFIED BY 'eyou';
mysql> FLUSH PRIVILEGES;

# cd /var/eyou/mysql/var
# tar czvf reptest.tar.gz reptest   # 打包需同步的資料庫

關鍵點:MySQL 4.1.12 要求 Slave 同時擁有 FILE 與 REPLICATION SLAVE 兩項權限。

步驟三:設定 Master 的 my.cnf

[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=reptest

步驟四:設定 Slave 的 my.cnf 並啟動複寫

[mysqld]
server-id=2
master-host=192.168.0.217
master-user=rep
master-password=eyou
master-port=3306
master-connect-retry=60
replicate-do-db=reptest
# 將 Master 打包檔傳至 Slave 並解壓
# tar xzvf reptest.tar.gz -C /var/eyou/mysql/var
# service mysqld start
# mysql -u root -p
mysql> SLAVE START;
mysql> SHOW SLAVE STATUS\G

驗證複寫狀態

重點檢查 Slave_IO_Running: Yes 與 Slave_SQL_Running: Yes,以及 Seconds_Behind_Master: 0。

常見故障排查

  • 防火牆阻擋 3306 埠 → 開放 Master 對 Slave 的 TCP 3306;
  • server-id 衝突 → 主從必須不同;
  • binlog 格式不一致 → 統一使用 ROW 或 MIXED 模式;
  • 資料不一致 → 使用 pt-table-checksum 或 mysqlbinlog 修復。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved