gpt4 book ai didi

MySQL:如何使用差异数据更新远程网络服务器

转载 作者:行者123 更新时间:2023-11-29 00:34:29 24 4
gpt4 key购买 nike

在我的本地机器上,我维护着几个 InnoDB 表,它们是我的 Web 服务器上的表的镜像副本。每当我有新的或更新的数据时,我都会在本地表上执行这些操作。对于更新,通常只针对某些表的几个字段。在本地执行有助于我在暂存之前执行数据的处理和验证。最后,我想将这些差异数据移动到远程服务器。

我怎样才能最好地实现数据迁移的整个过程。我正在寻找您的意见/经验的几个阶段:

  • 从所有表中识别和获取差异数据的命令,
  • 在远程站点上,使用此数据更新相应表的命令,
  • 我怎样才能确保更新的原子性而不破坏用它创建的网页内容。

我计划将整个过程自动化。将来,可能会有 1000 次这样的更新,因此我希望优化这个时间和大小。

我使用 python 并计划使用 fabric 来运行命令。

最佳答案

我会尝试使用二进制日志来记录对本地数据库的更改。然后你只需要用 mysqlbinlog 将二进制日志转换为 SQL 脚本。工具,并将其应用于您的网站。类似于执行时间点恢复的过程。

使用FLUSH LOGS (或 mysqladmin flush-logs )在您完成将本地二进制日志转换为 SQL 后在本地系统上。这样您就可以确切地知道您从哪里停下来了,并且您可以在下次上传更改时从那里开始。

我不确定是否以真正原子的方式在 Web 服务器上应用更改。你必须使用交易来做到这一点。您可以将 SQL 脚本夹在 START TRANSACTION 和 COMMIT 之间,但我想确保 binlog 本身不包含事务语句。

另一个比较两个数据库并找出最小变化集的工具是 Percona Toolkit 的 pt-table-sync .但该工具通常旨在使数据库完全相同。您的 Web 服务器上可能有不在本地开发人员实例中的生产数据,因此您可能需要过滤到特定表,或者 pt-table-sync 可能有一个“插入但不删除”选项或其他东西。我鼓励您仔细阅读文档并在测试实例上进行试验。

关于MySQL:如何使用差异数据更新远程网络服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010467/

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