2015-01-09 26 views
1

我們在Engine Yard中有幾個環境。他們每個人都運行相同的應用程序,但在不同的階段:生產,分期等。總共約10個環境。現在,我們希望每天晚上轉儲生產數據庫,並在其他環境中恢復以獲取最新數據。從發動機場的另一個環境訪問一個環境

問題是,來自一個環境的實例無法訪問其他環境中的實例。有兩種連接方式適合我們:

  • SSH。
  • 指定RDS主機爲--host參數爲mysqldump。 RDS主機的格式爲environment.random_string.region.rds.amazonaws.com,而不是常規的EC2主機名。

它們兩個都沒有開箱。直接的解決方案是在需要訪問的所有服務器上生成RSA密鑰,並將它們添加到authorized_hosts以允許所有應允許訪問的服務器。但是,這種解決方案不具有可擴展性:一旦添加或重新創建環境,我們需要重複處理。

有沒有更好的解決方案?

回答

0

是否可以僅使用FTP或SFTP服務設置單獨的HUB服務器?

  • 從所有環境向HUB服務器打開入站端口21/22,因此所有客戶端都可以下載數據庫轉儲。
  • 打開入站端口3306或從Hub服務器到RDS /數據庫的其他數據庫端口。
  • 在Hub服務器上運行cron作業以獲取數據庫轉儲,將轉儲推送到其他環境等等。
1

有一種方法可以在其他實例上設置特殊的備份配置文件,以便您可以從同一帳戶的其他環境直接訪問Production S3存儲桶。這樣做有一定的風險,因爲它也會在技術上允許非生產環境編輯生產桶內容。

根據您的配置的具體情況,可能會有其他一些選項。您最好的選擇是與Engine Yard支持團隊聯繫,以便我們可以進一步討論您的需求。

+0

[eyrestore](https://support.cloud.engineyard.com/hc/en-us/articles/205408058-Restore-or-Load-a-Database#topic3)是最近發佈的一個工具,旨在幫助解決以安全的方式在Engine Yard內部使用這個用例。它可用於最新版本的Stable-v4和Stable-v5堆棧。 – tpol

0

將您的生產備份到爲此創建的S3存儲桶。 使用IAM角色來控制其他環境如何連接到同一個存儲分區。

由於應該知道生產環境的服務器,因此可以使用腳本將mysqldump將該服務器轉儲到共享的S3存儲桶。 完成後,您的其他服務器可以使用經過適當授權的IAM角色從該S3存儲桶收集數據。

相關問題