gpt4 book ai didi

MySQL 复制/同步 : purge from master but not from slave

转载 作者:行者123 更新时间:2023-11-29 11:16:50 26 4
gpt4 key购买 nike

几天前我遇到了这个问题,并且一直在修改和思考几种不同的方法,但我似乎找不到一个好的答案:

我有两台 MySQL 服务器,一台主/热服务器和一台从/存档服务器。所有写请求都发送到主设备,并且还应(最终)被复制/复制到从设备。然而,主服务器中的某些数据在一段时间(比如一周)后就会变得“陈旧”,然后应被清除,以便保持主服务器的表简短。然而,这种净化不应影响奴隶。我怎样才能实现这一目标?

本质上,我的主数据库的行为有点像“热”数据库,其中数据是新鲜的,一旦过旧就会被清除。它应该包含用户可能快速需要的数据,因此我们希望保持表较小。另一方面,我的奴隶的工作方式更像是一个文件,它应该包含所有数据,无论“热度”如何。对从站的查询不需要快速执行,并且从站数据可能会滞后几分钟,但它需要包含 self 们开始以来的所有记录。

  • 我最初的想法是利用普通复制,但是我可以以某种方式过滤某些查询以不影响从属服务器吗?我正在考虑创建一个清除查询,它从主服务器中删除旧数据,但不会影响从服务器。从MySQL文档来看,这种过滤似乎只能在数据库或表级别上完成。

  • 另一个想法是通过外部应用程序来完成此操作,并手动从主设备中选择数据并将其插入从设备中,然后使用一些巧妙的逻辑来决定选择哪些数据。这对于日志表很有用,因为日志表只会添加数据,但对于表示状态(例如用户设置)的表则效果不佳。这种方法可能还会包括很多特殊情况,因为我找不到一种好的、一致的方式来描述数据库中的所有表(有日志表、状态表、配置表和一些我无法真正分类的表) )。

这些方法似乎都不能以简单的方式解决问题,但我觉得我不能是第一个遇到这个问题的人。欢迎任何想法,并提前致谢。

如果需要更多信息,请随时发表评论,我会在其中进行编辑

最佳答案

只需使用常规复制即可。当您删除主服务器上的数据时,您在同一 session 中执行的操作

SET sql_log_bin = 0;
DELETE FROM my_table WHERE whatever = true;
SET sql_log_bin = 1;

这可以防止这些语句写入二进制日志。因此它不会被复制到从属服务器。

  • 了解更多信息 here

关于MySQL 复制/同步 : purge from master but not from slave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587148/

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