Sign inSign up

lucidfrontier45/mariadb

By lucidfrontier45

•Updated about 8 years ago

Mariadb with some customizable properties

Image
0

1.6K

lucidfrontier45/mariadb repository overview

This is a port of panubo/mariadb-galera with utf8mb4 as the default charset.

⁠Docker Container for MariaDB Galera Cluster

We hope that this container will not be required in the future pending the integration better Galera support in the official container. eg PR 24⁠.

This container uses the entrypoint modifications similar to the ones by Kristian Klausen⁠ to provide (better) Galera support for the offcial mariadb:10.1 container.

Also included is Galera Arbitrator⁠ (aka garbd) which allows you to maintain quorum with a two node cluster.

⁠Usage

⁠Environment Arguments
  • WSREP_NODE_ADDRESS - IP or domain of host interface eg WSREP_NODE_ADDRESS=10.0.0.1
  • WSREP_CLUSTER_ADDRESS - List of cluster nodes and ports eg WSREP_CLUSTER_ADDRESS=gcomm://10.0.0.1:4567,10.0.0.2:4567,10.0.0.3:4567
  • WSREP_CLUSTER_NAME - Default my_wsrep_cluster
⁠Running Garbd

Garbd is available. Just specify garbd as the command.

docker run -d --net host --name galera-garbd \
  -e WSREP_CLUSTER_ADDRESS=$WSREP_CLUSTER_ADDRESS \
  panubo/mariadb-galera \
    garbd
⁠Bootstrapping the cluster

Node 1:

docker run -d --net host --name galera \
  -e WSREP_NODE_ADDRESS=$WSREP_NODE_ADDRESS \
  -e WSREP_CLUSTER_ADDRESS=$WSREP_CLUSTER_ADDRESS \
  -e MYSQL_ROOT_PASSWORD={{ mysql_root_password }} \
  -p 3306:3306 \
  -p 4567:4567/udp \
  -p 4567-4568:4567-4568 \
  -p 4444:4444 \
  -v /mnt/data/galera.service/mysql:/var/lib/mysql:Z \
  panubo/mariadb-galera \
    --wsrep-new-cluster

Node 2-N:

Create empty mysql dir to skip database initialisation⁠. (Kludge!)

mkdir -p /mnt/data/galera.service/mysql/mysql

Start the container normally (without --wsrep-new-cluster).

docker run -d --net host --name galera \
  -e WSREP_NODE_ADDRESS=$WSREP_NODE_ADDRESS \
  -e WSREP_CLUSTER_ADDRESS=$WSREP_CLUSTER_ADDRESS \
  -p 3306:3306 \
  -p 4567:4567/udp \
  -p 4567-4568:4567-4568 \
  -p 4444:4444 \
  -v /mnt/data/galera.service/mysql:/var/lib/mysql:Z \
  panubo/mariadb-galera

⁠Recovery

Recovery when quorum is lost can often be simply recovered:

Stop on all nodes. EG:

systemctl stop galera.service

Start node with most complete / recent data set with --wsrep-new-cluster argument. EG:

docker run -d --net host --name galera-init \
  -e WSREP_NODE_ADDRESS=$WSREP_NODE_ADDRESS \
  -e WSREP_CLUSTER_ADDRESS=$WSREP_CLUSTER_ADDRESS \
  -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
  -p 3307:3306 \
  -p 4567:4567/udp \
  -p 4567-4568:4567-4568 \
  -p 4444:4444 \
  -v /mnt/data/galera.service/mysql:/var/lib/mysql:Z \
  panubo/mariadb-galera \
    --wsrep-new-cluster

Bring up other nodes normally. Eg

systemctl start galera.service

⁠Gotchas

  1. Whilst it isn't strictly necessary to use the host network (--net host), there seems to be an issue (bug?) whereby Galera gets both the host and the (duplicated) Docker network IP assigned to the node. This causes issues when multiple nodes fail and attempt to rejoin the cluster.

  2. Garbd requires an explicit port if it blows up with "Exception in creating receive loop." See issue 312⁠.

Tag summary

Content type

Image

Digest

Size

133.8 MB

Last updated

about 8 years ago

docker pull lucidfrontier45/mariadb