我有兴趣尝试这个解决方案:https://dba.stackexchange.com/a/44893/71052,也在这里引用:https://dba.stackexchange.com/a/206151/71052
我面临的问题如下:
- mysqldump 显式导出每个表的存储引擎:
CREATE TABLE `footable` (
`foocolumn1` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`foocolumn2` bigint(20) unsigned NOT NULL DEFAULT '0',
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
- 当我恢复转储时,BlackHole 被设置为默认引擎,但表仍然按照转储中明确说明的方式创建 - 这实际上看起来很正常。
-> 有没有办法强制更换引擎? (我的意思是作为恢复选项,编辑转储在这里不是解决方案)
->我想解决方案是引用的帖子:
启动一个专用的Mysql服务器作为默认引擎blackhole(也许是唯一的一个)
如何启动一个以 Blackhole 作为唯一可用引擎的 mysqld 实例?我看到了很多关于使用或不使用这个或那个引擎进行编译的文档,但到目前为止我还没有找到如何在没有 innodb、myisam 等的情况下启动它......
我终于找到了方法:在
[mysqld]
my.ini或my.cnf部分:NO_ENGINE_SUBSITUTION
从行中排除sql_mode=...
,例如:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
将黑洞设置为默认引擎:
default-storage-engine=blackhole
用于
disabled_storage_engines
禁用所有其他可用引擎,例如:
disabled_storage_engines="MyISAM,InnoDB"
现在创建的所有表都将具有默认的 BLACKHOLE 引擎(仅带有警告)。
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_disabled_storage_engines
对于那些使用 MariaDB 或 Percona 的用户,请参阅
enforce_storage_engine
@RickJames 提到的:https://mariadb.com/kb/en/server-system-variables/#enforce_storage_engine