gpt4 book ai didi

mysql - 复制 MySQL 数据库作为从属,忽略一行

转载 作者:搜寻专家 更新时间:2023-10-30 22:33:37 27 4
gpt4 key购买 nike

我正在设置 Wordpress 的“从属”实例(第二个数据库,第二次安装 Wordpress),并希望第二个数据库成为主数据库的从属数据库,但插件处于事件状态除外。

我会使用类似 replicate_wild_ignore_table 的东西,但不幸的是,插件在 Wordpress 中处于事件状态的记录是表中的一行,而不是整个表。

我们需要 Wordpress 的第二个实例,因为我们需要它做一些与第一个实例不同的事情,并且它需要激活与第一个实例不同的插件。但是,从属数据库需要与数据库中的大多数其他表具有完全相同的数据。所以我的想法是,第二个数据库是主数据库的从属数据库,wp_options 表中的插件行除外。

这是最好的方法吗?如果是这样,将不胜感激一些指导。

到目前为止,我的计划是使用本指南同步两个数据库:https://torbjornzetterlund.com/how-to-setup-a-mysql-replication-database-for-wordpress/

本质上,这个方法归结为 master 将它的事务写入这个日志:

log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = wordpressdb

然后从机读取这个日志并更新自己:

relay-log               = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = wordpressdb

当然还有更多,但这基本上就是魔法发生的地方。

最佳答案

首先,将副本设置为与其主副本相同。

连接到副本数据库并通过更改数据来禁用某些插件。参见 https://perishablepress.com/quickly-disable-or-enable-all-wordpress-plugins-via-the-database/

但是有人可以在主服务器上重新启用插件,并且该更改会流向副本并在那里重新启用它。您可以在副本的 wp_options 表上创建一个触发器,以确保您不希望的插件保持不活动状态。

CREATE TRIGGER disable_all_plugins BEFORE UPDATE ON wp_options
FOR EACH ROW SET NEW.option_value = IF(NEW.option_name='active_plugins', 'a:0:{}', NEW.option_value);

(该触发器未经测试,我提供它只是作为一个起点。您有责任了解它的作用并根据您的需要进行更改。)

确保master使用基于语句的二进制日志,因为row-based binary logs don't execute triggers on the replica .

关于mysql - 复制 MySQL 数据库作为从属,忽略一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40576692/

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