MariaDB#
MariaDB is the open source successor to MySQL.
The Lagoon MariaDB
image Dockerfile. Based on the official packages mariadb
and mariadb-client
provided by the the upstream Alpine image.
This Dockerfile is intended to be used to set up a standalone MariaDB database server.
- 10.4 Dockerfile (Alpine 3.12 Support until May 2022) -
uselagoon/mariadb-10.4
- 10.5 Dockerfile (Alpine 3.14 Support until May 2023) -
uselagoon/mariadb-10.5
- 10.6 Dockerfile (Alpine 3.16 Support until May 2024) -
uselagoon/mariadb-10.6
Note:
As these images are not built from the upstream MariaDB images, their support follows a different cycle - and will only receive updates as long as the underlying Alpine images receive support - see https://alpinelinux.org/releases/ for more information. In practice, most MariaDB users will only be running these containers locally - the production instances will use the Managed Cloud Databases provided by the DBaaS Operator
Lagoon adaptions#
The default exposed port of mariadb containers is port 3306
.
To allow Lagoon to select the best way to run the mariadb container, use lagoon.type: mariadb
- this allows DBaaS operator to provision a cloud database if available in the cluster. Use lagoon.type: mariadb-single
to specifically request mariadb in a container. Persistent storage is always provisioned for mariadb containers at /var/lib/mysql.
This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. readiness-probe.sh
script to check when MariaDB container is ready.
docker-compose.yml snippet#
```yaml title="docker-compose.yml snippet"
mariadb:
image: uselagoon/mariadb-10.6-drupal:latest
labels:
# tells Lagoon this is a mariadb database
lagoon.type: mariadb
ports:
# exposes the port 3306 with a random local port, find it with `docker-compose port mariadb 3306`
- "3306"
volumes:
# mounts a named volume at the default path for mariadb
- db:/var/lib/mysql
```
Included tools#
mysqltuner.pl
- Perl script useful for database parameter tuning.mysql-backup.sh
- Script for automating the daily MySQL backups on development environment.pwgen
- Utility to generate random and complex passwords.
Included my.cnf
configuration file#
The image ships a default MariaDB configuration file, optimized to work on Lagoon. Some options are configurable via environments variables (see Environment Variables).
Environment Variables#
Environment variables defined in MariaDB base image:
Environment Variable | Default | Description |
---|---|---|
MARIADB_DATABASE |
lagoon | Database name created at startup. |
MARIADB_USER |
lagoon | Default user created at startup. |
MARIADB_PASSWORD |
lagoon | Password of default user created at startup. |
MARIADB_ROOT_PASSWORD |
Lag00n | MariaDB root user's password. |
MARIADB_CHARSET |
utf8mb4 | Set the server charset. |
MARIADB_COLLATION |
utf8mb4_bin | Set server collation. |
MARIADB_MAX_ALLOWED_PACKET |
64M | Set the max_allowed_packet size. |
MARIADB_INNODB_BUFFER_POOL_SIZE |
256M | Set the MariaDB InnoDB buffer pool size. |
MARIADB_INNODB_BUFFER_POOL_INSTANCES |
1 | Number of InnoDB buffer pool instances. |
MARIADB_INNODB_LOG_FILE_SIZE |
64M | Size of InnoDB log file. |
MARIADB_LOG_SLOW |
empty | Variable to control the save of slow queries. |
MARIADB_LOG_QUERIES |
empty | Variable to control the save of ALL queries. |
BACKUPS_DIR |
/var/lib/mysql/backup | Default path for databases backups. |
MARIADB_DATA_DIR |
/var/lib/mysql | Path of the mariadb data dir, be careful, changing this can occur data loss! |
MARIADB_COPY_DATA_DIR_SOURCE |
unset | Path which the entrypoint script of mariadb will use to copy into the defined MARIADB_DATA_DIR , this can be used for prepopulating the MariaDB with a database. The scripts expects actual MariaDB data files and not a sql file! Plus it only copies data if the destination does not already have a mysql datadir in it. |
If the LAGOON_ENVIRONMENT_TYPE
variable is set to production
, performances are set accordingly by using MARIADB_INNODB_BUFFER_POOL_SIZE=1024
and MARIADB_INNODB_LOG_FILE_SIZE=256
.