我已经考虑这个问题三天了,也在 IRC 上问过,但我也想咨询您的专业知识。基本上,这是一个使用 Drupal 的高流量网站(别让我开始,在这件事上我别无选择)。Drupal 做了一些不太聪明的事情,比如 a) 将缓存存储在数据库中,b) 将会话存储在数据库中。第一个问题我用一个模块解决了。第二个问题我无法解决,因为会话表非常奇怪,唯一的会话代理模块作者说它会因为 Drupals 会话表/非标准不兼容而破坏其他模块(事实确实如此,所以我不能再使用它了)。最大的问题是,如果启用了 binlog,则 db 表中的会话更新会导致高 IO 和大约 100mb/40sec 的 binlog。我在过去 2 天清除了 200gb 的 binlog。问题是会话更新查询非常庞大,目前大约每秒 3.5k 个请求,这导致从 php 到 mysq 的 SQL 查询速度达到每秒 60mbit,而使用 Redis 时速度为每秒 5mbit。唯一的选择是禁用 binlog。此外,数据库很快就会放在 Galera 集群上。2 个问题
a) 如何在没有 binlog 的情况下进行时间点恢复?一天内进行多次热备份?
b) 我认为将用户帐户表与数据库的其余部分分开并将它们与 binlog 放在一起是明智之举,因为它们肯定需要时间点恢复。但这是否需要单独的集群?
提前感谢帮助
ps:我无法使用 binlog-ignore-db,因为 Galera 忽略了 binlog 过滤器!我必须将分离的数据库放在单独的实例上,但不确定是否要运行多个 mysql 实例...