gpt4 book ai didi

MySQL无需停机即可更新整个数据库

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:45 26 4
gpt4 key购买 nike

我有一个大型数据库,需要每 24 小时重建一次。该数据库是使用服务器上的自定义脚本构建的,该脚本从不同的文件中提取数据。问题是整个过程需要 1 分钟才能完成,也就是 1 分钟的停机时间,因为我们需要删除整个数据库才能重建它(除了删除它别无他法)。

一开始,我们打算建立一个临时数据库,然后删除原来的,然后将临时的重命名为原来的名字,但是MySQL不支持数据库重命名。

第二种方法是从临时数据库转储 .sql 文件并将其导入主(原始)数据库,但这也会导致停机。

最好的方法是什么?

最佳答案

这是我做的事情。它不会导致零停机时间,但可以在不到一秒内完成。

创建一个数据库,它只包含与真实数据库的接口(interface)元素。在我的例子中,它只包含 View 定义,所有用户查询都通过这个数据库。

每晚创建一个新数据库。完成后,更新 View 定义以引用新数据库。我建议在更新 View 时关闭用户对包含 View 的数据库的访问权限,或者删除所有 View 并重新创建它们——这可以防止对旧数据库的部分访问。因为创建 View 很快,所以这应该是一个非常快的操作。

我们通过一份工作来完成所有这一切。事实上,在更改生产 View 之前,我们会在另一个数据库上测试 View 创建以确保它们都正常工作。

显然,如果您使用 alter view 而不是要求所有 View 保持一致,则不会出现停机时间,只会出现短暂的不一致。

关于MySQL无需停机即可更新整个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50076105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com