将数据库恢复到新集群

Restoring database to new cluster

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

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

我已经阅读了几个主题 here,但没有匹配到任何有相同问题的人。每个人都在解决如何从一些故障中恢复集群,而不是从头开始。

对于 mysqldump 的任何建议或将旧数据库 "insert" 加入集群的正确方法,我将很高兴。

如果您可以关闭当前的机器,并且如果您是从头开始构建集群,那么我 认为 这些(在 mysqldump 上)会避免 strict_mode,可能还有其他问题:

--skip_add_locks --skip-lock-tables

并且不要使用

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

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

如果需要保持当前服务器存活,那么我们需要讨论将其设为Master,并将新集群的一个节点设为Slave。 Plus XtraBackup 可能更适合。但是现在,锁和单笔交易将是必要的。因此,将 strict_mode 设置为 DISABLED 似乎是正确的,因为集群正在构建中,但尚未生效。

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