2016-06-13 46 views
6

首先讓我們來列舉一些事實:遷移到Redis的AWS Elasticache用最少的停機時間

  • Elasticache不能成爲我現有的Redis設置的奴隸。真正的恥辱,那會更有效率。
  • 我只有一臺Redis服務器進行遷移,大約有3GB的數據。
  • 停機時間必須小於10分鐘。我假設通常的「停止站點,停止redis,提供快照集羣」將花費比這更長的時間。

這個問題類似:How do I set an elasticache redis cluster as a slave?如何這可能工作

一個想法:

  1. 集的Redis使用的AOF和觸發BGSAVE在同一時間。
  2. 當BGSAVE完成時,使用RDB種子設置Elasticache羣集。
  3. 停止該站點並關閉我的本地Redis實例。
  4. 使用aof-replay工具將AOF重播到Elasticache中。
  5. 再次啓動站點,指向Elasticache羣集。

我的問題:

  1. 我怎麼能保證我的AOF文件開始在準確的RDB文件結束點,並且沒有數據之間寫成?
  2. 是否存在被Redis的的維護支持的AOF工具,或者是他們所有第三方解決方案,以及可靠性值得懷疑,因此(潛在的)?*

*無犯罪意圖的這種工具的任何作家,我相信他們很棒,我只是覺得使用由同一個團隊編寫的工具來避免潛在的兼容性錯誤更有信心。

+0

您的應用程序可否在沒有Redis的情況下運行?它會慢嗎(當然不能訪問緩存)還是會失敗? –

+0

您的用戶一夜之間活躍多久? 3 am-5am?那時候,我將遷移生產應用程序中的一項重大更改,以適應我們的業務用戶。即使您的應用程序全天候使用,如果您在遷移過程中脫機30分鐘,則可能會計劃使用率較低,以最大限度地減少注意到的影響。 –

+0

沒有Redis的應用程序基本沒用,並且沒有真正的日常使用模式。這是一個24小時內持續加載的應用程序。是什麼讓你猜測它只有30分鐘的停機時間? – arrtchiu

回答

3

我只有一個Redis的服務器遷移,數據

我將停止大約3GB,Redis的保存到S3,然後將其上傳到一個新的集羣。

我猜測10分鐘來保存文件並將其存入s3。
10分鐘即可從該數據啓動彈性羣集。 剩下十分鐘來配置和測試。

但是有一個簡單的方法可以確切地知道多久。 對其進行測試遷移。

  1. 不停止你的生活系統
  2. 運行BGSAVE,讓你的Redis的轉儲(保留一切運行正常)
  3. 移動轉儲S3
  4. 推出了它的elasticache集羣。

拿詳細筆記,TIME每一步,將命令複製到記事本窗口。

把一個Word/Excel文檔,所以你有一個遷移文件。這樣你就知道需要多長時間,並且沒有任何意外。讓我們知道怎麼回事。

0

有幾種方法可以在不停機的情況下遷移數據。雖然他們很難實現。

  1. 您可以讓您的應用程序同時寫入兩個redis實例 - 其中一個應用於EC。一旦緩存「溫暖」,你就可以重新啓動你的應用程序,並從EC緩存中讀取。

  2. 您最初可以遷移到EC2而不是EC。不是真的你想聽到的,我想象。這很容易做到,因爲您可以將EC2設置爲您的redis實例的補救。另外,從EC2遷移到EC更容易一些(數據已經在AWS上),所以對於擁有大量數據的用戶來說,這是一個好處。

  3. 理論上,您可以攔截來自客戶端的命令並將它們發送給EC,從而有效地「複製」。但是這需要一些編程(我不相信像這樣的工具存在自動取款機),並將與多個短暫的客戶很難。

相關問題