Estou interessado em experimentar esta solução: https://dba.stackexchange.com/a/44893/71052 , também referenciado aqui: https://dba.stackexchange.com/a/206151/71052
O problema que enfrento é o seguinte:
- mysqldump exporta explicitamente o mecanismo de armazenamento para cada tabela:
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;
- quando estou restaurando o dump, o BlackHole é definido como mecanismo padrão, mas a tabela é criada conforme explicitamente declarado no dump - o que na verdade parece bastante normal.
-> Existe alguma forma de forçar a substituição do motor? (Quero dizer, como opção de restauração, editar o dump não é solução aqui)
-> Suponho que a solução seja a postagem citada:
Inicie um servidor Mysql dedicado com o mecanismo padrão blackhole ( e talvez o único )
Como posso iniciar uma instância do mysqld com Blackhole como o único mecanismo disponível? Eu vi muitos documentos sobre compilar com ou sem este ou aquele mecanismo, mas ainda não descobri como iniciá- lo sem innodb, myisam etc.
Finalmente encontrei o caminho: na
[mysqld]
seção my.ini ou my.cnf:excluir
NO_ENGINE_SUBSITUTION
da linhasql_mode=...
ex.:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
definir blackhole como mecanismo padrão:
default-storage-engine=blackhole
use
disabled_storage_engines
para desabilitar todos os outros mecanismos disponíveis,ex.:
disabled_storage_engines="MyISAM,InnoDB"
Agora todas as tabelas criadas terão o mecanismo BLACKHOLE padrão (com apenas um aviso).
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_disabled_storage_engines
Para quem usa MariaDB ou Percona, veja
enforce_storage_engine
conforme mencionado por @RickJames: https://mariadb.com/kb/en/server-system-variables/#enforce_storage_engine