mariadb

Für die Verwendung von MariaDB wird ab sofort das offizielle MariaDB-Docker-Image verwendet:

  • mariadb:10.11 bis einschließlich brandbox 10

  • mariadb:11.4 ab brandbox 11

Konfiguration für docker-compose

Das Image kann in einer docker-compose.yml wie folgt eingebunden werden:

mariadb: image: mariadb:11.4 volumes: - db_data:/var/lib/mysql - ./config/mariadb:/etc/mysql/conf.d env_file: - brandbox.docker.env environment: MYSQL_HOST: database.${COMPOSE_PROJECT_NAME}   labels: traefik.enable: "false" healthcheck: test: ["CMD", "mysql", "-u", "root", "-proot", "-e", "SELECT version();"] interval: 1m timeout: 10s retries: 3 ports: - "3306" cpus: 0.75 mem_limit: 1000M networks: internal: aliases: - database.${COMPOSE_PROJECT_NAME} volumes: db_data:

Zusätzliche Konfiguration über Bind-Mount

Konfigurationsdateien müssen per Bind-Mount in den Container gemountet werden. Dazu muss der Ordner ./config/mariadb parallel zu docker-compose.yml vor dem Ausführen von up angelegt werden.
Der Ordner muss folgende Dateien enthalten:

  • MariaDB-Konfiguration my.cnf

  • entrypoint.sh, um MariaDB-Logs in die Docker-Logs umzuleiten (siehe unten unter “Logging”)

my.cnf

[mysqld] character-set-server=utf8 collation-server=utf8_general_ci sort_buffer_size=1M innodb_open_files=1048576 open_files_limit=1048576 tmp_table_size=256M max_allowed_packet=1024M max_heap_table_size=256M query_cache_limit=16M query_cache_size=128M innodb_lru_scan_depth=128 innodb_ft_max_token_size=84 innodb_ft_result_cache_limit=2000000000 innodb_ft_total_cache_size=640000000 innodb_io_capacity=150000 innodb_io_capacity_max=150000 general_log=0 general_log_file=/var/log/mysql/query.log

Logging

Es ist möglich, über Einträge in der my.cnf das Query-Log und das Slow-Log zu aktivieren:

my.cnf

general_log=1 general_log_file=/var/log/mysql/query.log slow_query_log=1 slow_query_log_file=/var/log/mysql/slow.log long_query_time=0.1 log_queries_not_using_indexes

Über einen Custom-Entrypoint können diese Logdateien in die Standardausgabe (stdout) geschrieben werden, damit sie über docker logs bzw. Graylog ausgewertet werden können:

docker-compose.yml (Auszug)

Die Datei entrypoint.sh muss dazu im definierten Bind-Mount-Ordner abgelegt werden (./config/mariadb/) und wie folgt aussehen:

Wichtig: Die Datei entrypoint.sh benötigt Ausführungsrechte für "other":

Migration von 10.4 zu 11.4

Alle Änderungen der neuen Version Changes and Improvements in MariaDB 11.4

  • docker.compose.yml auf 11.4 umstellen und MARIADB_AUTO_UPGRADE deaktivieren bzw. entfernen

  • mariadb-upgrade -u root -p --skip-ssl ausführen

Änderungen

  • dosql funktioniert nicht mehr, man muss nun docker exec -it CONTAINER bash nutzen

  • ssl sollte man komplett entfernen, da man sonst immer --skip-ssl nutzen muss