Security

使用 MySQL 複製在 DMZ 中啟用數據庫的只讀副本

  • June 12, 2009

我需要在 DMZ 中設置一個 MySQL 數據庫實例,該實例是安全網路中活動主伺服器的只讀副本。

MySQL 複製似乎對此很理想,除了它通過從屬從主“拉”變化來工作。這意味著 DMZ 中的從站必須能夠打開與主站的連接,這是安全人員不允許的。

我玩過從主伺服器設置 ssh 隧道,但從伺服器似乎保持連接打開(即使在呼叫“SLAVE STOP”之後),這意味著隧道始終是打開的(有點違反安全限制)。

除了停止 mysqld 之外,是否有某種方法可以強制 mysql 斷開連接?

是否有另一種方法可以實現我沒有想到的相同目標?

從主設備到從設備的更新需要接近實時(即幾分鐘的延遲是可以​​接受的,但不能超過)。

另一個想法,與您所描述的內容略有不同:

  • 從主設備建立隧道
  • 從master啟動slave(注意master的binlog位置)
  • 執行slave直到滿足或超過master的binlog位置
  • 停止奴隸
  • 關閉隧道
  • 每 x 分鐘重複一次

這裡的關鍵是隧道由主伺服器創建和銷毀,更新是定期執行的。

從站保持與主站的永久連接,但在您發出“STOP SLAVE”時會關閉它。

如果您的數據非常小並且您可以容忍幾分鐘的延遲,您可能會使用來自 Maatkit 的 mk-table-sync 工具編寫一些腳本來完成這項工作。它將校驗您的表格並找出應用它們的更改。您可以從主機執行它並定期連接到 DMZ 中的從機,從安全形度來看,這會更安全 - 即使攻擊者破壞了 DMZ 機器並完全用他們自己的軟體替換它,他們仍然會只獲得數據庫快照的訪問權限。

引用自:https://serverfault.com/questions/22360