2014-01-28 21 views
0

使用Rails 3.2和MySQL。我有一個實現問題:Rails第三方大型數據庫更新無需停機

我的應用程序數據庫abc有桌子productsusers

第三方數據庫xyz與表:productsproduct_images

  1. 數據庫xyz刷新一次一週從第三方服務器下載,並替換現有的xyz。這個數據庫是2GB。
  2. xyz.products被導入到abc.products列表和搜索。
  3. 當調用abc.products的行時,它會查找xyz.product_images列出圖像。

問題:每次更新(數據庫轉儲和導入)xyz時,都會找不到一些abc.product_images。我該如何實現這個功能,以便在我的應用程序上沒有停機時間?每次刷新xyz時,需要2-3小時才能完成。

我甚至想到下載新xyz和進口xyz_new的,進口xyz.productsabc.products,然後刪除xyz和重命名xyz_newxyz,但這本身需要很長的時間,MySQL沒有重命名功能。

+0

你能解決這個問題嗎?我有同樣的問題 – loganathan

+0

檢查我的答案。 @loganathan – Victor

回答

0

這可能不是最好的答案,但暫時這裏是我的解決方法:

  1. xyz要定期更新數據庫。
  2. abc是根據xyz更新的應用數據庫。
  3. 將表結構xyz.products複製到xyz.products_new。將新數據導入到它。
  4. 將表結構xyz.product_images複製到xyz.product_images_new。將新數據導入到它。
  5. 刪除xyz.products,將xyz.products_new更名爲xyz.products
  6. 刪除xyz.product_images,將xyz.product_images_new更名爲xyz.product_images
  7. 運行腳本將xyz.productsabc.proucts進行比較。如有必要,創建/刪除/更新。

停機時間非常短暫,因爲我正在重命名錶而不是數據庫。