從 Linode 遷移到 AWS

從 Linode 遷移到 AWS

當我們擁有大型資料庫時,遷移到另一台伺服器並不容易。我們想將 Linode 中的資料庫移至亞馬遜 RDS 資料庫,我嘗試過pg_dump並且pg_restore成功了,但它消耗了大量時間。

我的問題是:是否有像壓縮這樣的快速方法,或者我可以將 linode 中的資料庫與 Amazon RDS 中的資料庫同步

所以我只需要更改 CNAME 以引用亞馬遜,然後它將繼續工作,因為我們已經將資料庫同步在一起了?

任何建議都會有所幫助!

答案1

如果您要遷移到另一個真實主機,而不是 RDS,您可以使用流複製來執行您想要的操作:

  • pg_basebackup資料庫到新主機
  • 啟動副本並recovery.conf指向目前主伺服器
  • 讓複製趕上
  • 重新載入主伺服器並為副本啟用同步複製
  • ....然後關閉主伺服器,重新啟動副本作為主伺服器,然後繼續。

這不適用於 RDS,因為 RDS 不允許您存取底層伺服器。您無法使用pg_basebackup或控制自己的流複製。因此,如果您使用 RDS,唯一真正的選擇是轉儲並重新載入。

理論上,亞馬遜可以允許用戶為不在 RDS 中的主伺服器設定 RDS 副本,然後將它們升級為主伺服器。這將是一個非常好的主意,因為它可以讓人們更輕鬆地將資料庫遷移到 RDS。不過,在撰寫本文時,它還不具備這種功能,而且做起來可能會很複雜,因為它只有在使用相容選項、相同主要版本和相同 CPU 架構編譯原始資料庫時才有效。例如,您無法在 x86 和 x64 之間進行複製。它還會阻止亞馬遜隨意修改他們的 PostgreSQL 以滿足他們的需求。

這也適用於相反的情況。你無法遷移使用串流複製的 RDS。因此,如果 RDS 中有一個大而繁忙的資料庫,那麼在不造成大量停機的情況下,您將很難再次恢復。

坦白說,如果您已經在運行自己的資料庫,我看不到 RDS 的吸引力。它價格昂貴,並且消除了您對數據的大部分控制。 (請注意,我在 PostgreSQL 服務領域的另一家公司工作,所以我的意見需要考慮到這一點)。

可能能夠使用 Londiste、Bucardo 或 Slony-I 等第 3 方複製解決方案將資料庫複製到 RDS。我還沒有在 RDS 上嘗試過任何這些工具,並且懷疑它們由於需要安裝擴展、運行股票守護程序等而無法工作。

相關內容