MariaDB versus MySQL - Compatibilidade
Contents
MariaDB é um binary drop em substituição a MySQL
Para efeitos práticos, MariaDB é um binary drop em substituição da mesma versão do MySQL (por exemplo MySQL 5.1 -> MariaDB 5.1, MariaDB 5.2 e MariaDB 5.3 são compatíveis. O MySQL 5.5 será compatível com o MariaDB 5.5). O que isto quer dizer é que:
- Arquivos de definição de tabelas e dados (.frm) são binariamente compatíveis.
- Todas as APIs clientes, protocolos e estruturas são identicas.
- Todos os nomes de arquivo, binários, caminhos, portas, sockets, etc... deveriam ser os mesmos.
- Todos os conectores do MySQL (PHP, Perl, Python, Java, .NET, MyODBC, Ruby, o conector MySQL, etc) funcionam inalterados com MariaDB.
- Existem alguns problemas de instalação com PHP5 dos que você deveria estar ciente (um bug em como o antigo cliente PHP5 verifica a compatibilidade de livrarias).
- O pacote
mysql-client
funciona também com o servidor MariaDB.
Isto significa que para a maioria dos casos, você pode apenas desinstalar MySQL, instalar MariaDB e você irá bem. (Não precisa converter nenhum arquivo de dados se você estiver usando a mesma versão principal, como a 5.1).
Nós fazemos fusões mensais com o código base do MySQL para garantir que mantemos a compatibilidade e obtemos cada uma e todas as características assim como correções de bugs que a Oracle adiciona.
Também temos feito um monte de trabalho com os scripts de atualização ao ponto de que agora é mais fácil Atualizar desde MySQL 5.0 para MariaDB 5.1 do que atualizar desde o MySQL 5.0 para o MySQL 5.1.
Dito isto, MariaDB tem um monte de novas opções, mecanismos de extensão e armazenamento, e correções de bugs que não tem no MySQL. Você pode encontrar o conjunto de características para as diferentes versões do MariaDB no site O que é que tem nos diferentes lançamentos do MariaDB
Veja também MariaDB versus MySQL - Características.
Incompatibilidades entre o MariaDB 5.1 e o MySQL 5.1
Em alguns poucos casos, o MariaDB tem que ser incompatível para permitir o fornecimento de mais e melhor informação do que o MySQL.
Aqui está a lista de todas as incompatibilidades conhecidas a nível de usuário que você pode encontrar usando o MariaDB 5.1 em vez de MySQL 5.1.
- Os nomes dos pacotes de instalação começam com "MariaDB" em vez de "MySQL".
- Intervalos podem ser diferentes já que em varios casos o MariaDB é mais rápido do que o MySQL.
- mysqld no MariaDB também lê as seções
[mariadb]
dos seus arquivos my.cnf. - Você não pode usar uma livraria com mecanismo de armazenamento apenas binário com o MariaDB se esta não estiver compilada para a mesma versão exata do MariaDB. (Isto por causa de que a estrutura interna THD do servidor é diferente entre MySQL e MariaDB. Isto também é comum entre as diferentes versões do MySQL). Isto não deveria ser um problema já que a maioria das pessoas não carrega novos mecanismos de armazenamento e o MariaDB vem com mais mecanismos de armazenamento do que o MySQL.
CHECKSUM TABLE
pode dar um resultado diferente, já que o MariaDB não ignora NULL's nas colunas como o faz o MySQL 5.1 (futuras versões do MySQL deveriam calcular os checksums da mesma forma com que o faz o MariaDB). Você pode obter o checksum de estilo antigo no MariaDB iniciando o mysqld com a opção--old
, o comandoCHECKSUM
será mais lento já que tem de calcular a suma de comprovação linha por linha.- O log de consulta lenta tem mais informação sobre a consulta, o que poderia ser um problema se você tiver um script que analise esse log de consulta lenta.
- MariaDB por padrão pega um pouco mais de memoria do que o MySQL devido a que temos habilitado por padrão o mecanismo de armazenamento Aria para manipular tabelas temporárias internas. Se você precisar com que o MariaDB utilize pouquíssima memoria (á custa do desempenho) você pode definir o valor de
aria_pagecache_buffer_size
para1M
(o padrão é128M
). - Se você estiver usando novas opções de comando, novas características do MariaDB ou novos mecanismos de armazenamento, você não poderá mais ir e vir facilmente entre MySQL e MariaDB.
Incompatibilidades entre MariaDB 5.2 e MySQL 5.1
A lista é a mesma do que entre MariaDB 5.1 e MySQL 5.1.
Para todos os efeitos práticos, MariaDB 5.2 é um lançamento em substituição do MariaDB 5.1 e o MySQL 5.1.
Incompatibilidades entre MariaDB 5.3, MySQL 5.1 e MariaDB 5.2
- Algumas mensagens de erro relacionadas a conversões erradas, são diferentes, já que o MariaDB fornece mais informações na mensagem sobre o que deu errado.
- A numeração dos erros, para erros específicos do MariaDB tem sido alterada para começar desde 1900, para não entrar em conflito com erros do MySQL.
- Microssegundos funcionam agora em todos os contextos; O MySQL perdeu em alguns contextos a parte dos microssegundos para os formatos de data e tempo.
- As velhas opções para inicialização
--maria-
foram removidas. Em vez disso você deveria usar agora o prefixo--aria-
. (MariaDB 5.2 suporta ambas--maria-
e--aria-
). SHOW PROCESSLIST
tem uma colunaProgress
extra que mostra o progresso de alguns comandos. Você pode desativá-lo iniciandomysqld
com a flag--old
.INFORMATION_SCHEMA.PROCESSLIST
tem três novas colunas para relatório de progressos:STAGE
,MAX_STAGE
, ePROGRESS
.- Comentários longos que começam com
/*M!
ou/*M!#####
são executados. - Se você usar
max_user_connections=0
(o que significa qualquer número de conexões) ao iniciar o mysqld, você não poderá mais mudar a variável global enquanto o mysqld esteja se executando. Isto ocorre porque quando o mysqld é iniciado commax_user_connections=0
ele não aloca estruturas de contagem (que também envolvem um mutex para cada conexão). Isto poderia gerar contadores errados se você mais tarde muda a variável. Se você deseja mudar esta variável em tempo de execução, defina ela com um valor mais alto na inicialização. - Você pode definir
max_user_connections
(ambas a variável global e a opçãoGRANT
) como-1
para evitar com que os usuários se conectem ao servidor. A variável globalmax_user_connections
não afeta os usuários com o privilégioSUPER
. - A diretiva IGNORE não ignora todos os erros (como os erros fatais), só assuntos que são seguros de se ignorar.
Opções de configuração antigas e sem suporte
Se você estiver usando uma das seguintes opções no seu /etc/my.cnf
ou algum outro arquivo my.cnf
você deveria remové-los. Isto também é valido para o MySQL 5.1 ou posterior:
skip-bdb
Substituindo um RPM do MySQL
Se você desinstalou um RPM do MySQL para instalar o MariaDB, repare que o RPM na desinstalação renomeia /etc/my.cnf
para /etc/my.cnf.rpmsave
.
Após a instalação do MariaDB você deveria fazer o seguinte para restaurar suas antigas opções de configuração:
mv -vi /etc/my.cnf.rpmsave /etc/my.cnf