2

我们正在使用 Percona 5.7.16-10 服务器。我想用 XtraDB 集群扩展当前的解决方案。因此,与此同时,我创建了其他机器并启动了集群(在 5.7.17-11-57 Percona XtraDB Cluster 版本上运行)并在那里进行了一些测试(一切似乎都运行良好)。现在我想从正在运行的服务器中转储当前数据库并将其插入集群。停止集群没有问题(因为它是为了测试)。但是当我按照习惯创建 mysqldump 时,由于 pcx_strict_mode (此处的信息),我无法将其插入集群- 强制执行Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK with pxc_strict_mode = ENFORCING因为 mysqldump 创建了包含被禁止的表锁的脚本。所以我测试了更多的选项,比如 MASTER 不应该检查这个规则,但它没有帮助,因为来自转储的插入查询被卡住并且没有任何事情发生。

是否有任何 mysqldump 选项可以避免表锁定查询,或者我是否必须通过 XtraBackup 以某种方式恢复它并将 XtraBackup 用于当前正在运行的服务器?

我在这里阅读了几个主题,但没有匹配任何有相同问题的人。每个人都在解决如何从失败中恢复集群,而不是从头开始。

对于 mysqldump 的任何建议或将旧数据库“插入”到集群中的正确方法,我都会很高兴。

4

1 回答 1

5

如果您可以关闭当前机器,并且从头开始构建集群,那么我认为这些 (on mysqldump) 将避免该 strict_mode 以及可能的其他一些小问题:

--skip_add_locks --skip-lock-tables

并且不要使用

--single-transaction --lock-all-tables

让集群中的第一个节点加载数据,然后添加其他节点,让它们使用 SST 加载自己也可能是明智之举。

如果您需要保持当前服务器处于活动状态,那么我们需要讨论将其设为 Master,并将新集群的一个节点设为 Slave。加上 XtraBackup 可能更适合。但是现在,锁和单一事务将是必要的。DISABLED因此,由于正在构建集群,但尚未启用,因此将 strict_mode 设置为似乎是正确的。

(警告:我没有执行您的任务的经验;如果其他人提供了更令人信服的答案,请与他们一起去。)

于 2017-04-10T00:46:58.217 回答