0

我正在开发一个大型 web 应用程序,它(除其他外)有一个表,该表是从现有的在线数据集构建的。该数据集可能会更改(尽管可能不会经常发生),因此我们的总体计划是每 1-2 个月更新/重建一次。这一切都将通过 Python 和 SQLAlchemy 发生

由于在处理 webapps 和大型数据库方面经验不足,最好的方法是什么?从头开始构建数据库需要 5-6 个小时,老实说,这是可以接受的停机时间(它是一个科学分析服务器)。当然,另一种选择是并行创建第二张表,然后删除原始表并重命名新表,但这是否存在一致性问题?有没有办法“实时更新”一个表,或者这里发生崩溃的风险不值得(即如果你崩溃使表处于相对于真实数据不一致的状态)?

显然,在简单性、安全性和无停机时间之间需要权衡取舍,但我只对我的选择感兴趣(排除那些“未知的未知数”)。

4

2 回答 2

1

这是我的建议:

  1. 使用mysqldump备份原表

  2. 以不同的名称构建新表

  3. 使用 mysqldump 备份新表

  4. 关闭您的应用程序

  5. 丢弃旧表

  6. 将新表重命名为原表名

  7. 重新启动您的应用程序

这应该会产生最少的停机时间,只是删除旧表并重命名旧表所需的时间。备份可以为您提供安全保障,以防万一您搞砸了。

于 2012-09-21T18:29:55.797 回答
0

这个怎么样

将表 old_table 重命名为 tmp_table,将 new_table 重命名为 old_table;

new_table 之前创建的位置。RENAME 是原子的

于 2012-09-21T21:12:32.837 回答