我安装了一个pxc_strict_mode
设置为的 Percona XtraDB 集群ENFORCING
,并尝试从非 Galera MariaDB 服务器导入数据库。这适用于某些数据库,通过转储它们并通过mysqldump --skip-locks -K
导入它们mysql <database> < <dumpfile>
(在使用创建空白数据库之后CREATE DATABASE
)。然而,一个数据库被拒绝导入:
第 40 行的错误 1105 (HY000):Percona-XtraDB-Cluster 禁止在 pxc_strict_mode = ENFORCING 或 MASTER 驻留在非事务存储引擎(切换到事务引擎除外)中的表(example.example)上使用 ALTER 命令
大多数互联网线程只是建议暂时禁用pxc_strict_mode
. 然而,鉴于其他数据库导入没有任何问题,我认为该问题应该可以通过更改附加到的标志mysqldump
或修改转储文件中的语句来解决。我尝试删除转储中的所有 ALTER 语句,这会将上述错误更改为...prohibits the use of DML command...
.
源 MariaDB 实例和新的 XtraDB 集群都配置了默认的 InnoDB 存储引擎。
将不胜感激任何输入。
Cluster 只能正确处理 InnoDB 表。听起来你的一些桌子有
ENGINE=MyISAM
?计划 A:编辑转储文件以将每个表更改为 ENGINE=InnoDB。
计划 B:删除有问题的 ALTER;加载数据(假设表成功转换为 InnoDB);然后手动运行丢失的 ALTER。
计划 C:ALTER TABLE t ENGINE=InnoDB;倾倒前的每张桌子。
每个都有潜在的问题。一些在这里列出:http: //mysql.rjweb.org/doc.php/myisam2innodb