MySQL 原生複製傳輸明文,不符合數據隱私合規要求。雖可編譯啟用 SSL,但二進制分發版常未激活。SSH 隧道提供透明加密、零代碼改動的替代方案。
M_IP,MySQL 端口 3306,SSH 服務開啟。S_IP,建立本地端口 7777 映射到 M_IP:3306。ssh -f tunnel_user@M_IP -L 7777:M_IP:3306 -N
-f 後台運行;-N 不執行遠程命令;-L 本地端口轉發。tunnel_user,Shell 設為 /bin/false,僅用於隧道。mysql -h 127.0.0.1 -P 7777 -u repl_user -p
關鍵點:必須用 127.0.0.1 而非 localhost,否則 MySQL 客戶端會走 Unix Socket 而非 TCP,繞過隧道。
CREATE USER 'repl_user'@'M_IP' IDENTIFIED BY 'repl_pass';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'M_IP';
授權 Host 必須為 主庫真實 IP,因轉發連接在主庫顯示源 IP 為 M_IP,而非 127.0.0.1。
主庫 my.cnf:
[mysqld]
server-id=1
log-bin=mysql-bin
從庫 my.cnf:
[mysqld]
server-id=2
master-host=127.0.0.1
master-port=7777
master-user=repl_user
master-password=repl_pass
master-connect-retry=60
SHOW MASTER STATUS; 記錄 File/Position。CHANGE MASTER TO ... 指定位點,啟動 START SLAVE;。SHOW SLAVE STATUS\G 確認 Slave_IO_Running=Yes、Slave_SQL_Running=Yes。autossh 或 Systemd 服務守護隧道自動重連。DELETE 無 WHERE 會同步刪除從庫數據;嚴禁在從庫直接寫入業務數據。