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

Comments

Comments loading...