MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Imagens populares do Docker para MySQL e MariaDB Server


Uma imagem do Docker pode ser criada por qualquer pessoa que tenha a capacidade de escrever um script. É por isso que existem muitas imagens semelhantes sendo construídas pela comunidade, com pequenas diferenças, mas realmente servindo a um propósito comum. Uma boa (e popular) imagem de container deve ter documentação bem escrita com explicações claras, um repositório mantido ativamente e com atualizações regulares. Confira esta postagem do blog se quiser aprender como criar e publicar sua própria imagem do Docker para MySQL, ou esta postagem do blog se quiser apenas aprender o básico da execução do MySQL no Docker.

Nesta postagem do blog, veremos algumas das imagens do Docker mais populares para executar nosso servidor MySQL ou MariaDB. As imagens que escolhemos são imagens públicas de uso geral que podem pelo menos executar um serviço MySQL. Alguns deles incluem aplicativos não essenciais relacionados ao MySQL, enquanto outros servem apenas como uma instância simples do mysqld. A listagem aqui é baseada no resultado do Docker Hub, a maior biblioteca e comunidade do mundo para imagens de contêiner.

TLDR


A tabela a seguir resume as diferentes opções:
Aspecto MySQL (Docker) MariaDB (Docker) Percona (Docker) MySQL (Oracle) MySQL/MariaDB (CentOS) MariaDB (Bitnami)
Downloads Mais de 10 milhões Mais de 10 milhões Mais de 10 milhões Mais de 10 milhões Mais de 10 milhões Mais de 10 milhões
Docker Hub mysql mariadb percona mysql/mysql-server mysql-80-centos7
mysql-57-centos7
mysql-56-centos7
mysql-55-centos7
mariadb-102-centos7
mariadb-101-centos7
bitnami/mariadb
Página do projeto mysql mariadb percona-docker mysql-docker recipiente mysql bitnami-docker-mariadb
Imagem base Debian 9 Ubuntu 18.04 (biônico)
Ubuntu 14.04 (confiável)
CentOS 7 Oracle Linux 7 RHEL 7
CentOS 7
Debian 9 (minideb)
Oracle Linux 7
Versões de banco de dados compatíveis 5,5
5,6
5,7
8,0
5,5
10,0
10,1
10,2
10,3
10,4
5,6
5,7
8,0
5,5
5,6
5,7
8,0
5,5
5,6
5,7
8,0
10,1
10,2
10,1
10,2
10,3
Plataformas compatíveis x86_64 x86
x86_64
arm64v8
ppc64le
x86
x86_64
x86_64 x86_64 x86_64
Tamanho da imagem
(tag:mais recente)
129 MB 120 MB 193 MB 99 MB 178 MB 87 MB
Primeira confirmação 18 de maio de 2014 16 de novembro de 2014 3 de janeiro de 2016 18 de maio de 2014 15 de fevereiro de 2015 17 de maio de 2015
Colaboradores 18 9 15 14 30 20
Estrela do Github 1267 292 113 320 89 152
Github Fork 1291 245 121 1291** 146 71

Extraído da página do Docker Hub.
Forked do projeto MySQL docker.

mysql (Docker)


As imagens são construídas e mantidas pela comunidade Docker com a ajuda da equipe MySQL. Ela pode ser considerada a imagem de servidor MySQL disponível publicamente mais popular hospedada no Docker Hub e uma das primeiras no mercado (o primeiro commit foi em 18 de maio de 2014). Foi bifurcado ~ 1300 vezes com 18 contribuidores ativos. Ele suporta a versão do Docker até 1.6 com base no melhor esforço. No momento da escrita, todas as versões principais do MySQL são suportadas - 5.5, 5.6, 5.7 e 8.0 apenas na arquitetura x86_64.

A maioria das imagens MySQL construídas por outros são inspiradas na forma como esta imagem foi construída. As imagens MariaDB, Percona e MySQL Server (Oracle) seguem variáveis ​​de ambiente semelhantes, estrutura de arquivo de configuração e fluxo de processo de inicialização de contêiner.

As seguintes variáveis ​​de ambiente estão disponíveis na maioria das imagens de contêiner do MySQL no Docker Hub:
  • MYSQL_ROOT_PASSWORD
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD
  • MYSQL_ALLOW_EMPTY_PASSWORD
  • MYSQL_RANDOM_ROOT_PASSWORD
  • MYSQL_ONETIME_PASSWORD

O tamanho da imagem (tag:mais recente) é em média pequeno (129 MB), fácil de usar, bem conservado e atualizado regularmente pelo mantenedor. Se seu aplicativo requer o contêiner de banco de dados MySQL mais recente, esta é a imagem pública mais recomendada que você pode usar.

mariadb (docker)


As imagens são mantidas pela comunidade Docker com a ajuda da equipe MariaDB. Ele usa o mesmo estilo de estrutura de construção que a imagem mysql (Docker), mas vem com suporte a várias arquiteturas:
  • Linux x86-64 (amd64)
  • ARMv8 de 64 bits (arm64v8)
  • x86/i686 (i386)
  • IBM POWER8 (ppc64le)

No momento da redação deste artigo, as imagens suportavam MariaDB versão 5.5 até 10.4, onde a imagem com o tamanho da tag "mais recente" é de cerca de 120 MB. Esta imagem serve como uma imagem de uso geral e segue as instruções, variáveis ​​de ambiente e estrutura do arquivo de configuração como mysql (Docker). A maioria dos aplicativos que exigiam o MySQL como back-end do banco de dados é comumente compatível com o MariaDB, pois ambos estão falando o mesmo protocolo.

O servidor MariaDB costumava ser um fork do MySQL, mas agora foi desviado dele. Em termos de design de arquitetura de banco de dados, algumas versões do MariaDB não são 100% compatíveis e não são mais uma substituição imediata com suas respectivas versões do MySQL. Confira esta página para obter detalhes. No entanto, existem maneiras de migrar entre si usando o backup lógico. Dito de forma simples, quando você estiver no ecossistema MariaDB, provavelmente terá que ficar com ele. Misturar ou alternar entre MariaDB e MySQL em um cluster não é recomendado.

Se você deseja configurar uma configuração mais avançada do MariaDB (replicação, Galera, fragmentação), existem outras imagens criadas para atingir esse objetivo com muito mais facilidade, por exemplo, bitnami/mariadb conforme explicado mais abaixo.

percona (docker)


Percona Server é um fork do MySQL criado pela Percona. Estas são as únicas imagens oficiais do Percona Server Docker, criadas e mantidas pela equipe Percona. Ele suporta arquitetura x86 e x86_64 e a imagem é baseada no CentOS 7. Percona mantém apenas as 3 versões principais do MySQL mais recentes para imagens de contêiner - 5.6, 5.7 e 8.0.

O repositório de código aponta que o primeiro commit foi em 3 de janeiro de 2016 com 15 contribuidores ativos principalmente da equipe de desenvolvimento da Percona. O Percona Server for MySQL vem com o mecanismo de armazenamento XtraDB (um substituto para o InnoDB) e segue os lançamentos do Oracle MySQL muito de perto (incluindo todas as correções de bugs nele) com alguns recursos adicionais, como o mecanismo de armazenamento MyRocks, TokuDB e Percona's próprias correções de bugs. De certa forma, você pode pensar nisso como uma versão aprimorada do MySQL da Oracle. Você pode alternar facilmente entre as imagens do MySQL e do Percona Server, desde que esteja executando a versão compatível.

As imagens reconhecem duas variáveis ​​de ambiente adicionais para TokuDB e RocksDB para MySQL (disponíveis desde a v5.6):
  • INIT_TOKUDB - Defina como 1 para permitir que o contêiner seja iniciado com o mecanismo de armazenamento TOKUDB ativado.
  • INIT_ROCKSDB - Defina como 1 para permitir que o contêiner seja iniciado com o mecanismo de armazenamento ROCKSDB ativado.

servidor mysql (Oracle)


O repositório é bifurcado do mysql pela equipe do Docker. As imagens são criadas, mantidas e suportadas pela equipe MySQL da Oracle, construídas sobre a imagem base do Oracle Linux 7. A imagem MySQL 8.0 vem com MySQL Community Server (mínimo) e MySQL Shell e o servidor está configurado para expor o protocolo X na porta 33060 do repositório mínimo. O pacote mínimo foi projetado para uso pelas imagens oficiais do Docker para MySQL. Ele corta algumas das partes não essenciais do MySQL como innochecksum, myisampack, mysql_plugin, mas é o mesmo produto. Portanto, ele tem uma pegada de imagem muito pequena, em torno de 99 MB.

Um ponto importante a ser observado é que as imagens têm um script de verificação de integridade integrado, o que é muito útil para algumas pessoas que precisam de uma lógica de disponibilidade precisa. Caso contrário, as pessoas precisam escrever um comando HEALTHCHECK personalizado do Docker (ou script) para verificar a integridade do contêiner.

mysql-xx-centos7 &mariadb-xx-centos7 (CentOS)


As imagens do contêiner são criadas e mantidas pela equipe do CentOS, que inclui o servidor de banco de dados MySQL para OpenShift e uso geral. Para imagens baseadas em RHEL, você pode extraí-las do Catálogo de Contêineres da Red Hat enquanto as imagens baseadas em CentOS são hospedadas publicamente no Docker Hub em páginas diferentes para cada versão principal (apenas liste imagens com mais de 10 milhões de downloads):
  • MySQL 8.0:https://hub.docker.com/r/centos/mysql-80-centos7
  • MySQL 5.7:https://hub.docker.com/r/centos/mysql-57-centos7
  • MySQL 5.6:https://hub.docker.com/r/centos/mysql-56-centos7
  • MySQL 5.5:https://hub.docker.com/r/centos/mysql-55-centos7
  • MariaDB 10.2:https://hub.docker.com/r/centos/mariadb-102-centos7
  • MariaDB 10.1:https://hub.docker.com/r/centos/mariadb-101-centos7

A estrutura da imagem é um pouco diferente e não faz uso de tag de imagem como as outras, então o nome da imagem se torna um pouco mais longo. Dito isso, você precisa acessar a página correta do Docker Hub para obter a versão principal que deseja extrair.

De acordo com a página do repositório de código, 30 colaboradores colaboraram no projeto desde 15 de fevereiro de 2015. Ele suporta MySQL 5.5 até 8.0 e MariaDB 5.5 até 10.2 apenas para arquitetura x86_64. Se você depende muito da infraestrutura de conteinerização da Red Hat, como o OpenShift, essas são provavelmente as imagens mais populares ou bem mantidas para MySQL e MariaDB.

As seguintes variáveis ​​de ambiente influenciam o arquivo de configuração MySQL/MariaDB e são todas opcionais:
  • MYSQL_LOWER_CASE_TABLE_NAMES (padrão:0)
  • MYSQL_MAX_CONNECTIONS (padrão:151)
  • MYSQL_MAX_ALLOWED_PACKET (padrão:200M)
  • MYSQL_FT_MIN_WORD_LEN (padrão:4)
  • MYSQL_FT_MAX_WORD_LEN (padrão:20)
  • MYSQL_AIO (padrão:1)
  • MYSQL_TABLE_OPEN_CACHE (padrão:400)
  • MYSQL_KEY_BUFFER_SIZE (padrão:32M ou 10% de memória disponível)
  • MYSQL_SORT_BUFFER_SIZE (padrão:256K)
  • MYSQL_READ_BUFFER_SIZE (padrão:8M ou 5% de memória disponível)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (padrão:32M ou 50% da memória disponível)
  • MYSQL_INNODB_LOG_FILE_SIZE (padrão:8M ou 15% de memória disponível)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (padrão:8M ou 15% de memória disponível)
  • MYSQL_DEFAULTS_FILE (padrão:/etc/my.cnf)
  • MYSQL_BINLOG_FORMAT (padrão:instrução)
  • MYSQL_LOG_QUERIES_ENABLED (padrão:0)

As imagens suportam o ajuste automático do MySQL quando a imagem do MySQL está sendo executada com o parâmetro --memory definido e se você não especificou o valor para os seguintes parâmetros, seus valores serão calculados automaticamente com base na memória disponível:
  • MYSQL_KEY_BUFFER_SIZE (padrão:10%)
  • MYSQL_READ_BUFFER_SIZE (padrão:5%)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (padrão:50%)
  • MYSQL_INNODB_LOG_FILE_SIZE (padrão:15%)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (padrão:15%)
Guia de DevOps para gerenciamento de banco de dados de vários novesSaiba mais sobre o que você precisa saber para automatizar e gerenciar seus bancos de dados de código abertoBaixe gratuitamente

bitnami/mariadb


As imagens são construídas e mantidas pela Bitnami, especialistas em empacotamento de software em implantação virtual ou em nuvem. As imagens são lançadas diariamente com os pacotes de distribuição mais recentes disponíveis e usam uma imagem minimalista baseada no Debian chamada minideb. Assim, o tamanho da imagem para a tag mais recente é o menor entre todos, cerca de 87 MB. O projeto tem 20 contribuidores com o primeiro commit ocorrido em 17 de maio de 2015. No momento da escrita, ele suporta apenas MariaDB 10.1 até 10.3.

Um recurso notável dessa imagem é a capacidade de implantar uma configuração MariaDB altamente disponível por meio de variáveis ​​de ambiente do Docker. Um cluster de replicação mestre-escravo MariaDB com tempo de inatividade zero pode ser facilmente configurado com a imagem do Bitnami MariaDB Docker usando as seguintes variáveis ​​de ambiente:
  • MARIADB_REPLICATION_MODE:o modo de replicação. Valores possíveis mestre/escravo. Sem padrões.
  • MARIADB_REPLICATION_USER:o usuário de replicação criado no mestre na primeira execução. Sem padrões.
  • MARIADB_REPLICATION_PASSWORD:a senha dos usuários de replicação. Sem padrões.
  • MARIADB_MASTER_HOST:Nome do host/IP do mestre de replicação (parâmetro escravo). Sem padrões.
  • MARIADB_MASTER_PORT_NUMBER:Porta do servidor do mestre de replicação (parâmetro escravo). O padrão é 3306.
  • MARIADB_MASTER_ROOT_USER:Usuário no mestre de replicação com acesso ao MARIADB_DATABASE (parâmetro escravo). Padrões para root
  • MARIADB_MASTER_ROOT_PASSWORD:senha do usuário no mestre de replicação com acesso a
  • MARIADB_DATABASE (parâmetro escravo). Sem padrões.

Em um cluster de replicação, você pode ter um mestre e zero ou mais escravos. Quando a replicação está habilitada, o nó mestre está no modo leitura-gravação, enquanto os escravos estão no modo somente leitura. Para melhor desempenho é aconselhável limitar as leituras aos escravos.

Além disso, essas imagens também oferecem suporte à implantação no Kubernetes como gráficos do Helm. Você pode ler mais sobre as etapas de instalação no repositório Bitnami MariaDB Chart GitHub.

Conclusões


Existem toneladas de imagens do servidor MySQL que foram contribuídas pela comunidade e não podemos abordá-las todas aqui. Lembre-se de que essas imagens são populares porque são criadas para uso geral. Algumas imagens menos populares podem fazer coisas muito mais avançadas, como orquestração de contêiner de banco de dados, bootstrapping automático e dimensionamento automático. Imagens diferentes fornecem abordagens diferentes que podem ser usadas para resolver outros problemas.