Eu executo com sucesso um cluster de 3 servidores de banco de dados usando MariaDB Galera 10.0.16. Essa configuração lida com alguns aplicativos da web que criamos, além de uma dúzia de sites Joomla de tráfego médio.
Meu problema é que o Galera não gosta do MyISAM. Muitas vezes, quando um plug-in ou componente no Joomla é instalado, ele configura o mecanismo MySQL em seu install.sql da seguinte forma:
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
Quando isso acontece, uma simples instalação do componente Joomla pode (e tem) interrompido a replicação.
Existe uma maneira de forçar o servidor a ignorar a configuração ENGINE?
Obrigado.
Essa é uma boa pergunta. As pessoas tendem a querer isso ao usar cluster NDB e Galera .
A resposta certa é que você deve informar os criadores do plug-in para criar as tabelas sem definição de mecanismo, para que você possa configurá-lo com a opção "default_engine". Enquanto em outros casos você pode desabilitar o mecanismo e forçar a substituição do motor pelo padrão, isso não é uma boa prática, é desencorajado nas versões mais recentes e impossível com o MyISAM .
A verdade é que uma vez que o desenvolvedor escreve
ENGINE=X
, ele está forçando a criação do motor, como está escrito. A única maneira de fazer isso é reescrever a consulta em tempo real. Que está disponível no MySQL 5.7 (ainda não GA), com vários plugins . A única maneira que consigo pensar em fazer isso agora é com um proxy SQL como ProxySQL ou MySQL Proxy . Por favor, note que alguns deles são famosos por mau desempenho , então você pode querer ativá-lo apenas na ativação/desativação do plug-in.Obviamente, há outra opção: baixe as fontes do MariaDB Cluster, desative o MyISAM na
CREATE TABLE
sintaxe e compile! ?Percona XtraDB Cluster já tem esse recurso (enforce_storage_engine) e para MariaDB há uma solicitação de recurso pendente relatada por mim para Colin...
https://mariadb.atlassian.net/browse/MDEV-6858