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

基於 SSH 隧道的 MySQL 加密複製架構實戰部署

     編輯:MySQL 綜合教學

背景動機

MySQL 原生複製傳輸明文,不符合數據隱私合規要求。雖可編譯啟用 SSL,但二進制分發版常未激活。SSH 隧道提供透明加密、零代碼改動的替代方案。

架構拓撲

  • Master(主庫):IP M_IP,MySQL 端口 3306,SSH 服務開啟。
  • Slave(從庫):IP S_IP,建立本地端口 7777 映射到 M_IP:3306。

步驟 1:建立 SSH 隧道(從庫執行)

ssh -f tunnel_user@M_IP -L 7777:M_IP:3306 -N
  • -f 後台運行;-N 不執行遠程命令;-L 本地端口轉發。
  • 建議創建專用系統用戶 tunnel_user,Shell 設為 /bin/false,僅用於隧道。
  • 首次連接需輸入密碼;後續建議配置 RSA 密鑰免密認證。

步驟 2:驗證隧道連通性

mysql -h 127.0.0.1 -P 7777 -u repl_user -p

關鍵點:必須用 127.0.0.1 而非 localhost,否則 MySQL 客戶端會走 Unix Socket 而非 TCP,繞過隧道。

步驟 3:主庫授權(綁定真實 IP)

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。

步驟 4:配置複製參數

主庫 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

步驟 5:初始化與驗證

  1. 重啟主從 MySQL 服務。
  2. 主庫執行 SHOW MASTER STATUS; 記錄 File/Position。
  3. 從庫執行 CHANGE MASTER TO ... 指定位點,啟動 START SLAVE;。
  4. 檢查 SHOW SLAVE STATUS\G 確認 Slave_IO_Running=Yes、Slave_SQL_Running=Yes。

高可用增強

  • 使用 autossh 或 Systemd 服務守護隧道自動重連。
  • 主庫部署 Cron 任務定期寫入心跳時間戳;從庫監控延遲超閾值發送告警。
  • 切記:複製 ≠ 備份。誤執行 DELETE 無 WHERE 會同步刪除從庫數據;嚴禁在從庫直接寫入業務數據。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved