| 角色 | IP | MySQL 版本 |
|---|---|---|
| Master | 192.168.0.1 | 5.1.48 |
| Slave | 192.168.0.2 | 5.1.48 |
主從版本保持一致可減少相容性問題。
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = data
binlog-ignore-db = mysql
log-bin = /var/log/mysql/updatelog
log-slave-updates
slave-skip-errors
關鍵參數: server-id 唯一識別,log-bin 啟用二進制日誌,binlog-do-db 指定同步資料庫。
GRANT REPLICATION SLAVE ON *.* TO 'test'@'192.168.0.2' IDENTIFIED BY 'password';
# 重啟
/usr/bin/mysqladmin -uroot shutdown
/usr/bin/mysql_safe &
# 鎖表備份
mysql> FLUSH TABLES WITH READ LOCK;
cd /var/lib/mysql
tar czf data.tar.gz data
scp data.tar.gz root@192.168.0.2:/var/lib/mysql
[mysqld]
server-id = 3
log-bin = mysql-bin
master-host = 192.168.0.1
master-user = test
master-password = password
master-port = 3306
master-connect-retry = 60
replicate-ignore-db = mysql
replicate-do-db = data
log-slave-updates
slave-skip-errors
cd /var/lib/mysql
tar xzf data.tar.gz
mysql> SLAVE START;
mysql> SHOW SLAVE STATUS\G
確認 Slave_IO_Running: Yes 且 Slave_SQL_Running: Yes。
若 SHOW MASTER STATUS 與 Slave 顯示的 Master_Log_File/Read_Master_Log_Pos 不一致,需手動校正:
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.0.1',
MASTER_USER='test',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='updatelog.000012',
MASTER_LOG_POS=15016;
mysql> SLAVE START;
UNLOCK TABLES;
./configure --without-server)| 錯誤現象 | 解決方法 |
|---|---|
| lua make linux 缺 readline/history.h | yum install readline-devel ncurses-devel libtermcap-devel |
| configure: Package 'lua5.1' not found | cp etc/lua.pc /usr/local/lib/pkgconfig/lua5.1.pc |
| configure: Package 'glib-2.0' not found | 編譯安裝 glib-2.18.4 或更新 pkg-config 路徑 |
| mysql_config not exists | 指定 --with-mysql=/usr/local/mysql(需先編譯安裝 mysql client) |
#!/bin/bash
LUA_PATH="/usr/local/mysql-proxy/lib/mysql-proxy/lua/?.lua" \
/usr/local/mysql-proxy/bin/mysql-proxy \
--proxy-backend-addresses=192.168.0.1:3306 \
--proxy-read-only-backend-addresses=192.168.0.2:3306 \
--proxy-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/rw-splitting.lua \
>> /var/log/mysql-proxy.log &
驗證埠 4040(讀寫)與 4041(管理)是否監聽。
主從同步核心在於 server-id 唯一、Binlog 正確、複寫帳號權限、資料一致性基準點對齊。讀寫分離雖可用 MySQL-Proxy 實現,但該專案已停止維護,生產環境建議改用 ProxySQL、MaxScale 或中間件層處理。