MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Popularne obrazy Docker dla serwerów MySQL i MariaDB

Obraz Dockera może zbudować każdy, kto ma umiejętność pisania skryptu. Dlatego społeczność tworzy wiele podobnych obrazów, z niewielkimi różnicami, ale tak naprawdę służących wspólnemu celowi. Dobry (i popularny) obraz kontenera musi mieć dobrze napisaną dokumentację z jasnymi wyjaśnieniami, aktywnie utrzymywane repozytorium i regularne aktualizacje. Zapoznaj się z tym wpisem na blogu, jeśli chcesz dowiedzieć się, jak tworzyć i publikować własny obraz Docker dla MySQL, lub z tym wpisem na blogu, jeśli chcesz poznać podstawy uruchamiania MySQL w Dockerze.

W tym poście na blogu przyjrzymy się niektórym z najpopularniejszych obrazów platformy Docker do uruchamiania naszego serwera MySQL lub MariaDB. Wybrane przez nas obrazy są obrazami publicznymi ogólnego przeznaczenia, które mogą przynajmniej uruchamiać usługę MySQL. Niektóre z nich zawierają mniej istotne aplikacje związane z MySQL, podczas gdy inne służą po prostu jako zwykła instancja mysqld. Lista tutaj jest oparta na wynikach Docker Hub, największej na świecie biblioteki i społeczności dla obrazów kontenerów.

TLDR

Poniższa tabela podsumowuje różne opcje:

Aspekt MySQL (Docker) MariaDB (Docker) Percona (Docker) MySQL (Oracle) MySQL/MariaDB (CentOS) MariaDB (Bitnami)
Pobieranie 10 mln+ 10 mln+ 10 mln+ 10 mln+ 10 mln+ 10 mln+
Centrum Dockera mysql mariadb perkona mysql/mysql-server mysql-80-centos7
mysql-57-centos7
mysql-56-centos7
mysql-55-centos7
mariadb-102-centos7
mariadb-101-centos7
bitnami/mariadb
Strona projektu mysql mariadb percona-docker mysql-docker kontener-mysql bitnami-docker-mariadb
Obraz podstawowy Debian 9 Ubuntu 18.04 (bionic)
Ubuntu 14.04 (zaufany)
CentOS 7 Oracle Linux 7 RHEL 7
CentOS 7
Debian 9 (minideb)
Oracle Linux 7
Obsługiwane wersje baz danych 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
Obsługiwane platformy x86_64 x86
x86_64
arm64v8
ppc64le
x86
x86_64
x86_64 x86_64 x86_64
Rozmiar obrazu
(tag:najnowszy)
129 MB 120 MB 193 MB 99 MB 178 MB 87 MB
Pierwsze zatwierdzenie 18 maja 2014 16 listopada 2014 3 stycznia 2016 18 maja 2014 15 lutego 2015 17 maja 2015
Współpracownicy 18 9 15 14 30 20
Gwiazda Github 1267 292 113 320 89 152
Github Widelec 1291 245 121 1291** 146 71

Pobrane ze strony Docker Hub.
Rozwidlone z projektu docker MySQL.

mysql (Docker)

Obrazy są budowane i utrzymywane przez społeczność Docker z pomocą zespołu MySQL. Można go uznać za najpopularniejszy publicznie dostępny obraz serwera MySQL hostowany na Docker Hub i jeden z najwcześniejszych na rynku (pierwsze zatwierdzenie miało miejsce 18 maja 2014 r.). Został rozwidlony ~1300 razy z 18 aktywnymi współtwórcami. Obsługuje wersję Docker do 1.6 na zasadzie najlepszych starań. W chwili pisania tego tekstu obsługiwane są wszystkie główne wersje MySQL - 5.5, 5.6, 5.7 i 8.0 tylko w architekturze x86_64.

Większość obrazów MySQL zbudowanych przez innych jest inspirowana sposobem, w jaki ten obraz został zbudowany. Obrazy MariaDB, Percona i MySQL Server (Oracle) są zgodne z podobnymi zmiennymi środowiskowymi, strukturą pliku konfiguracyjnego i przebiegiem procesu inicjalizacji kontenera.

Następujące zmienne środowiskowe są dostępne w większości obrazów kontenerów MySQL w Docker Hub:

  • MYSQL_ROOT_PASSWORD
  • MYSQL_DATABASE
  • UŻYTKOWNIK_MYSQL
  • MYSQL_PASSWORD
  • MYSQL_ALLOW_EMPTY_PASSWORD
  • MYSQL_RANDOM_ROOT_PASSWORD
  • MYSQL_ONETIME_PASSWORD

Rozmiar obrazu (tag:najnowszy) jest średnio mały (129 MB), łatwy w użyciu, dobrze utrzymywany i regularnie aktualizowany przez opiekuna. Jeśli Twoja aplikacja wymaga najnowszego kontenera bazy danych MySQL, jest to najbardziej zalecany obraz publiczny, którego możesz użyć.

mariadb (Docker)

Obrazy są utrzymywane przez społeczność Docker z pomocą zespołu MariaDB. Używa tego samego stylu struktury budynku, co obraz mysql (Docker), ale obsługuje wiele architektur:

  • Linux x86-64 (amd64)
  • 64-bitowy ARMv8 (arm64v8)
  • x86/i686 (i386)
  • IBM POWER8 (ppc64le)

W chwili pisania tego tekstu obrazy obsługują MariaDB w wersji 5.5 do 10.4, gdzie obraz z „najnowszym” rozmiarem tagu ma około 120 MB. Ten obraz służy jako obraz ogólnego przeznaczenia i jest zgodny z instrukcjami, zmiennymi środowiskowymi i strukturą pliku konfiguracyjnego jako mysql (Docker). Większość aplikacji, które wymagały MySQL jako zaplecza bazy danych, jest powszechnie zgodna z MariaDB, ponieważ obie używają tego samego protokołu.

Serwer MariaDB był kiedyś rozwidleniem MySQL, ale teraz został od niego oddzielony. Jeśli chodzi o projekt architektury bazy danych, niektóre wersje MariaDB nie są w 100% kompatybilne i nie zastępują już ich odpowiednich wersji MySQL. Sprawdź tę stronę, aby uzyskać szczegółowe informacje. Istnieją jednak sposoby na migrację między sobą za pomocą logicznej kopii zapasowej. Mówiąc wprost, kiedy już znajdziesz się w ekosystemie MariaDB, prawdopodobnie będziesz musiał się go trzymać. Mieszanie lub przełączanie między MariaDB i MySQL w klastrze nie jest zalecane.

Jeśli chcesz skonfigurować bardziej zaawansowaną konfigurację MariaDB (replikacja, Galera, sharding), istnieją inne obrazy zbudowane, aby osiągnąć ten cel znacznie łatwiej, np. bitnami/mariadb, jak wyjaśniono poniżej.

percona (Docker)

Percona Server to rozwidlenie MySQL stworzone przez Perconę. To jedyne oficjalne obrazy platformy Docker Percona Server, stworzone i utrzymywane przez zespół Percona. Obsługuje zarówno architekturę x86, jak i x86_64, a obraz jest oparty na CentOS 7. Percona utrzymuje tylko najnowsze 3 główne wersje MySQL dla obrazów kontenerów - 5.6, 5.7 i 8.0.

Repozytorium kodu wskazuje, że pierwsze zatwierdzenie miało miejsce 3 stycznia 2016 roku z 15 aktywnymi współpracownikami, głównie z zespołu programistów Percony. Percona Server dla MySQL jest dostarczany z silnikiem pamięci XtraDB (zastępuje InnoDB) i bardzo dokładnie śledzi wcześniejsze wydania Oracle MySQL (w tym wszystkie poprawki błędów w nim) z kilkoma dodatkowymi funkcjami, takimi jak silnik pamięci MyRocks, TokuDB, a także Percona własne poprawki błędów. W pewnym sensie można o tym myśleć jako o ulepszonej wersji Oracle MySQL. Możesz łatwo przełączać się między obrazami MySQL i Percona Server, pod warunkiem, że korzystasz z kompatybilnej wersji.

Obrazy rozpoznają dwie dodatkowe zmienne środowiskowe dla TokuDB i RocksDB dla MySQL (dostępne od wersji 5.6):

  • INIT_TOKUDB — Ustaw na 1, aby umożliwić uruchomienie kontenera z włączonym silnikiem pamięci TOKUDB.
  • INIT_ROCKSDB — Ustaw na 1, aby umożliwić uruchomienie kontenera z włączonym silnikiem przechowywania ROCKSDB.

mysql-server (Oracle)

Repozytorium jest rozwidlone z mysql przez zespół Dockera. Obrazy są tworzone, utrzymywane i obsługiwane przez zespół MySQL w firmie Oracle, zbudowany na bazie obrazu bazowego Oracle Linux 7. Obraz MySQL 8.0 jest dostarczany z MySQL Community Server (minimalny) i MySQL Shell, a serwer jest skonfigurowany do udostępniania protokołu X na porcie 33060 z minimalnego repozytorium. Minimalny pakiet został zaprojektowany do użytku przez oficjalne obrazy Dockera dla MySQL. Wycina niektóre nieistotne elementy MySQL, takie jak innochecksum, myisampack, mysql_plugin, ale poza tym jest tym samym produktem. Dlatego ma bardzo mały ślad obrazu, który wynosi około 99 MB.

Ważną kwestią, na którą należy zwrócić uwagę, jest to, że obrazy mają wbudowany skrypt sprawdzania kondycji, który jest bardzo przydatny dla niektórych osób, które potrzebują dokładnej logiki dostępności. W przeciwnym razie ludzie będą musieli napisać niestandardowe polecenie (lub skrypt) platformy Docker, aby sprawdzić kondycję kontenera.

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

Obrazy kontenerów są budowane i utrzymywane przez zespół CentOS, który obejmuje serwer bazy danych MySQL dla OpenShift i ogólnego użytku. W przypadku obrazów opartych na RHEL można je pobrać z katalogu kontenerów Red Hat, podczas gdy obrazy oparte na CentOS są hostowane publicznie w Docker Hub na różnych stronach dla każdej głównej wersji (wymień tylko obrazy z ponad 10 milionami pobrań):

  • 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

Struktura obrazu jest nieco inna i nie korzysta z tagu obrazu, jak inne, dlatego nazwa obrazu staje się nieco dłuższa. Powiedziawszy to, musisz przejść do właściwej strony Docker Hub, aby pobrać główną wersję, którą chcesz pobrać.

Według strony repozytorium kodu, 30 współpracowników współpracowało w projekcie od 15 lutego 2015. Obsługuje MySQL 5.5 do 8.0 i MariaDB 5.5 do 10.2 tylko dla architektury x86_64. Jeśli w dużym stopniu polegasz na infrastrukturze konteneryzacyjnej Red Hat, takiej jak OpenShift, są to prawdopodobnie najpopularniejsze lub najlepiej utrzymane obrazy dla MySQL i MariaDB.

Następujące zmienne środowiskowe wpływają na plik konfiguracyjny MySQL/MariaDB i wszystkie są opcjonalne:

  • MYSQL_LOWER_CASE_TABLE_NAMES (domyślnie:0)
  • MYSQL_MAX_CONNECTIONS (domyślnie:151)
  • MYSQL_MAX_ALLOWED_PACKET (domyślnie:200M)
  • MYSQL_FT_MIN_WORD_LEN (domyślnie:4)
  • MYSQL_FT_MAX_WORD_LEN (domyślnie:20)
  • MYSQL_AIO (domyślnie:1)
  • MYSQL_TABLE_OPEN_CACHE (domyślnie:400)
  • MYSQL_KEY_BUFFER_SIZE (domyślnie:32M lub 10% dostępnej pamięci)
  • MYSQL_SORT_BUFFER_SIZE (domyślnie:256K)
  • MYSQL_READ_BUFFER_SIZE (domyślnie:8M lub 5% dostępnej pamięci)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (domyślnie:32M lub 50% dostępnej pamięci)
  • MYSQL_INNODB_LOG_FILE_SIZE (domyślnie:8M lub 15% dostępnej pamięci)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (domyślnie:8M lub 15% dostępnej pamięci)
  • MYSQL_DEFAULTS_FILE (domyślnie:/etc/my.cnf)
  • MYSQL_BINLOG_FORMAT (domyślnie:instrukcja)
  • MYSQL_LOG_QUERIES_ENABLED (domyślnie:0)

Obrazy obsługują automatyczne dostrajanie MySQL, gdy obraz MySQL jest uruchomiony z ustawionym parametrem --memory i jeśli nie określisz wartości dla następujących parametrów, ich wartości zostaną automatycznie obliczone na podstawie dostępnej pamięci:

  • MYSQL_KEY_BUFFER_SIZE (domyślnie:10%)
  • MYSQL_READ_BUFFER_SIZE (domyślnie:5%)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (domyślnie:50%)
  • MYSQL_INNODB_LOG_FILE_SIZE (domyślnie:15%)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (domyślnie:15%)
Manynines DevOps Przewodnik po zarządzaniu bazami danychDowiedz się, co musisz wiedzieć, aby zautomatyzować i zarządzać bazami danych typu open sourcePobierz za darmo

bitnami/mariadb

Obrazy są tworzone i utrzymywane przez Bitnami, ekspertów w pakowaniu oprogramowania we wdrożeniach wirtualnych lub chmurowych. Obrazy są publikowane codziennie z najnowszymi dostępnymi pakietami dystrybucyjnymi i używają minimalistycznego obrazu opartego na Debianie o nazwie minideb. Tak więc rozmiar obrazu dla najnowszego tagu jest najmniejszy ze wszystkich i wynosi około 87 MB. Projekt ma 20 współtwórców, a pierwsze zatwierdzenie miało miejsce 17 maja 2015 r. W chwili pisania tego tekstu obsługuje on tylko MariaDB 10.1 do 10.3.

Jedną z wyjątkowych funkcji tego obrazu jest możliwość wdrożenia konfiguracji MariaDB o wysokiej dostępności za pośrednictwem zmiennych środowiskowych platformy Docker. Klaster replikacji master-slave MariaDB bez przestojów można łatwo skonfigurować za pomocą obrazu Bitnami MariaDB Docker przy użyciu następujących zmiennych środowiskowych:

  • MARIADB_REPLICATION_MODE:Tryb replikacji. Możliwe wartości master/slave. Brak wartości domyślnych.
  • MARIADB_REPLICATION_USER:Użytkownik replikacji utworzony w systemie głównym przy pierwszym uruchomieniu. Brak wartości domyślnych.
  • MARIADB_REPLICATION_PASSWORD:Hasło użytkowników replikacji. Brak wartości domyślnych.
  • MARIADB_MASTER_HOST:Nazwa hosta/IP mastera replikacji (parametr slave). Brak wartości domyślnych.
  • MARIADB_MASTER_PORT_NUMBER:Port serwera głównego replikacji (parametr slave). Domyślnie 3306.
  • MARIADB_MASTER_ROOT_USER:Użytkownik w masterze replikacji z dostępem do MARIADB_DATABASE (parametr slave). Domyślnie root
  • MARIADB_MASTER_ROOT_PASSWORD:Hasło użytkownika na wzorcu replikacji z dostępem do
  • MARIADB_DATABASE (parametr slave). Brak wartości domyślnych.

W klastrze replikacji można mieć jednego mastera i zero lub więcej slave'ów. Gdy replikacja jest włączona, węzeł główny jest w trybie do odczytu i zapisu, podczas gdy urządzenia podrzędne są w trybie tylko do odczytu. Aby uzyskać najlepszą wydajność, zaleca się ograniczenie odczytów do urządzeń podrzędnych.

Ponadto te obrazy obsługują również wdrażanie w Kubernetes jako wykresy Helm. Możesz przeczytać więcej o krokach instalacji w repozytorium Bitnami MariaDB Chart GitHub.

Wnioski

Istnieje mnóstwo obrazów serwerów MySQL, które zostały przesłane przez społeczność i nie możemy ich wszystkich tutaj opisać. Pamiętaj, że te obrazy są popularne, ponieważ są zbudowane do użytku ogólnego. Niektóre mniej popularne obrazy mogą wykonywać znacznie bardziej zaawansowane czynności, takie jak orkiestracja kontenerów bazy danych, automatyczne ładowanie początkowe i automatyczne skalowanie. Różne obrazy zapewniają różne podejścia, które można wykorzystać do rozwiązania innych problemów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zabezpieczanie MySQL — korzystanie z uprawnień dostępu do danych w celu bezpiecznej instalacji

  2. Jak monitorować kontenery MySQL za pomocą Prometheusa — wdrożenie w trybie Standalone i Swarm::Część pierwsza

  3. Korzystanie z MariaDB Flashback na serwerze MySQL

  4. Jak SIN() działa w MariaDB

  5. Jak skonfigurować replikację asynchroniczną między klastrami MariaDB Galera