This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-22. For the latest, interactive version please visit https://mariadb.com/kb/.

MariaDB versus MySQL - Compatibilidade

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.
  • 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 comando CHECKSUM 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 para 1M (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 coluna Progress extra que mostra o progresso de alguns comandos. Você pode desativá-lo iniciando mysqld com a flag --old.
  • INFORMATION_SCHEMA.PROCESSLIST tem três novas colunas para relatório de progressos: STAGE, MAX_STAGE, e PROGRESS.
  • 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 com max_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ção GRANT) como -1 para evitar com que os usuários se conectem ao servidor. A variável global max_user_connections não afeta os usuários com o privilégio SUPER.
  • 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
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.