Rails第三方大型数据库更新,无需停机

时间:2014-01-28 15:01:57

标签: mysql ruby-on-rails database

使用Rails 3.2和MySQL。我有一个实施问题:

我的应用数据库abc包含表格productsusers等。

第三方数据库xyz,其中包含表格:productsproduct_images等。

  1. 通过从第三方服务器下载,每周刷新数据库xyz,并替换现有的xyz。这个数据库是2GB。
  2. xyz.products已导入abc.products进行列表和搜索。
  3. 当调用来自abc.products的行时,会查找xyz.product_images列出图像。
  4. 问题:每次更新xyz(数据库转储和导入)时,都找不到某些abc.product_images。我如何实现这一点,以便我的应用程序没有停机时间?每次刷新xyz时,都需要2-3小时才能完成。

    我甚至考虑下载新的xyz并导入xyz_new,将xyz.products导入abc.products,然后删除xyz并重命名{{1}到xyz_new,但这本身需要很长时间,因为MySQL没有重命名功能。

1 个答案:

答案 0 :(得分: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进行比较。必要时创建/删除/更新。
  8. 停机时间非常短,因为我正在重命名表而不是数据库。