Docker MariaDB 10.10 Galera Cluster
642
docker network create -d overlay mydbnetdocker push sysopsid/mariadb-clusterdocker service create --name dbcluster --network mydbnet --replicas=1 \
--env DB_SERVICE_NAME=dbcluster \
--env MYSQL_ROOT_PASSWORD=rootpass
\
--env MYSQL_DATABASE=opsdb \
--env MYSQL_USER=opsdbuser \
--env MYSQL_PASSWORD=opsdbpass sysopsid/mariadb-cluster:latest docker service lsdocker service scale dbcluster=3docker service ps dbclusterdocker ps -adocker exec -it dbcluster.2.q7grb4ve8o7eigqjxl8lkfw27 \
mysql -u root -p -e "show databases;"docker push sysopsid/mariadb-maxscaledocker service create --name maxscale --network mydbnet \
--env DB_SERVICE_NAME=dbcluster \
--env ENABLE_ROOT_USER=1 \
--publish 3306:3306 --publish 3307:3307 \
--constraint node.role==manager sysopsid/mariadb-maxscale:latestdocker service lsdocker ps -adocker exec -it maxscale.1.g9gfc777jza8lurm1ij8ux5dk maxctrl list servers| Server | Address | Port | Connections | State | GTID |
|---|---|---|---|---|---|
| 10.0.1.43 | 10.0.1.43 | 3306 | 0 | Slave, Synced, Running | |
| 10.0.1.42 | 10.0.1.42 | 3306 | 0 | Slave, Synced, Running | |
| 10.0.1.40 | 10.0.1.40 | 3306 | 0 | Master, Synced, Running |
docker service create --name dbclient --network mydbnet --replicas=1 \
--env MYSQL_ROOT_PASSWORD=123456 \
--constraint node.role==manager mariadb:10.10docker service ls| ID | Name | Mode | Replicas | Image | Ports |
|---|---|---|---|---|---|
| ws66mmp7ymd1 | dbclient | replicated | 1/1 | mariadb:10.10 | |
| npvubttps9h4 | dbcluster | replicated | 3/3 | sysopsid/mariadb-cluster:latest | |
| rd2thhxifgus | maxscale | replicated | 1/1 | sysopsid/mariadb-maxscale:latest | *:3306-3307->3306-3307/tcp |
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b012bde6dadf mariadb:10.10 docker-entrypoint.s… 4 minutes ago Up 4 minutes 3306/tcp dbclient.1.bofe403ga5itdq7ztgf515uej 8c48758629b0 sysopsid/mariadb-maxscale:latest /usr/bin/tini -- do… 43 minutes ago Up 43 minutes 3306-3307/tcp, 8989/tcp maxscale.1.g9gfc777jza8lurm1ij8ux5dk 6d779f58da53 sysopsid/mariadb-cluster:latest docker-entrypoint.s… About an hour ago Up About an hour 3306/tcp, 4444/tcp, 4567-4568/tcp dbcluster.2.q7grb4ve8o7eigqjxl8lkfw27
Access mariadb galera cluster from database client via maxscale load balancer
docker exec -it dbclient.1.bofe403ga5itdq7ztgf515uej \
mysql -u supergalera -h maxscale.1.g9gfc777jza8lurm1ij8ux5dk -p -P3307
Open new ssh connection to node manager then access container maxscale. You can using port 3306 or 3307 to access dbcluster via maxscale
docker exec -it maxscale.1.g9gfc777jza8lurm1ij8ux5dk maxctrl list servers
Server Address Port Connections State GTID 10.0.1.43 10.0.1.43 3306 1 Slave, Synced, Running 10.0.1.42 10.0.1.42 3306 1 Slave, Synced, Running 10.0.1.40 10.0.1.40 3306 1 Master, Synced, Running
TO DO
Auto recovery maxscale (refresh config) if container galera cluster fail or restarted
Thank You
Content type
Image
Digest
sha256:3f6e6bde5…
Size
118.1 MB
Last updated
over 3 years ago
docker pull sysopsid/mariadb-cluster