https://hub.docker.com/r/bitnami/mariadb-galera
https://github.com/bitnami/bitnami-docker-mariadb-galera/releases
docker run -d -p 3371:3306 --name mariadb-galera-1 -h db01 --privileged=true --user=root --restart=always \
-v /etc/localtime:/etc/localtime:ro \
-e MARIADB_GALERA_CLUSTER_BOOTSTRAP=yes \
-e MARIADB_GALERA_CLUSTER_NAME=galera \
-e MARIADB_GALERA_MARIABACKUP_USER=galera \
-e MARIADB_GALERA_MARIABACKUP_PASSWORD=wdqdmm@g \
-e MARIADB_ROOT_PASSWORD=wdqdmm@r \
-e MYSQL_ALLOW_EMPTY_PASSWORD=no \
-e MARIADB_EXTRA_FLAGS='--max-connect-errors=2000 --max_connections=20000' \
-e MARIADB_REPLICATION_USER=slave \
-e MARIADB_REPLICATION_PASSWORD=wdqdmm@s \
-e MARIADB_CHARACTER_SET=utf8mb4 \
-e MARIADB_COLLATE=utf8mb4_general_ci \
-v /data/file:/data/file/ \
-v /data/docker/mysql/mariadb/my_custom.cnf:/opt/bitnami/mariadb/conf/bitnami/my_custom.cnf \
-v /data/db/galera01:/bitnami/mariadb/data \
-v /data/file/logs/galera01:/opt/bitnami/mariadb/logs \
bitnami/mariadb-galera:latest
docker run -d -p 3372:3306 --name mariadb-galera-2 -h db02 --privileged=true --user=root --restart=always --link mariadb-galera-1:galera\
-v /etc/localtime:/etc/localtime:ro \
-e MARIADB_GALERA_CLUSTER_BOOTSTRAP=yes \
-e MARIADB_GALERA_CLUSTER_NAME=galera \
-e MARIADB_GALERA_CLUSTER_ADDRESS=gcomm://galera:4567,0.0.0.0:4567 \
-e MARIADB_GALERA_MARIABACKUP_USER=galera \
-e MARIADB_GALERA_MARIABACKUP_PASSWORD=wdqdmm@g \
-e MARIADB_ROOT_PASSWORD=wdqdmm@r \
-e MYSQL_ALLOW_EMPTY_PASSWORD=no \
-e MARIADB_EXTRA_FLAGS='--max-connect-errors=2000 --max_connections=20000' \
-e MARIADB_REPLICATION_USER=slave \
-e MARIADB_REPLICATION_PASSWORD=wdqdmm@s \
-e MARIADB_CHARACTER_SET=utf8mb4 \
-e MARIADB_COLLATE=utf8mb4_general_ci \
-v /data/file:/data/file/ \
-v /data/docker/mysql/mariadb/my_custom.cnf:/opt/bitnami/mariadb/conf/bitnami/my_custom.cnf \
-v /data/db/galera02:/bitnami/mariadb/data \
-v /data/file/logs/galera02:/opt/bitnami/mariadb/logs \
bitnami/mariadb-galera:latest
docker exec -it mariadb-galera-1 /bin/bash
docker exec -it mariadb-galera-2 /bin/bash
cat /opt/bitnami/mariadb/conf/my.cnf
mkdir -p /data/db/galera01/ /data/db/galera02/ /data/file/logs/galera01/ /data/file/logs/galera02/
chmod -R /data/db/galera01/ /data/db/galera02/ /data/file/logs/
rm -rf /data/db/galera01/* /data/db/galera02/* /data/file/logs/galera01/* /data/file/logs/galera02/*
vim /data/docker/mysql/mariadb/my_custom.cnf
[mysqld]
#skip-grant-tables
skip-name-resolve
default-storage-engine = innodb
max_allowed_packet=800M
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
init_connect = 'SET collation_connection = utf8mb4_general_ci'
character_set_filesystem = 'utf8mb4'
#设置client连接mysql时的字符集,防止乱码
init-connect = 'SET NAMES utf8mb4'
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-client-handshake = FALSE
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
skip-character-set-client-handshake=1 //使用服务端字符集
slow_query_log_file = /opt/bitnami/mariadb/logs/mariadb-slow.log
long_query_time = 10
#更详细的慢查询信息
log_slow_verbosity = query_plan,explain
#开启记录没有使用索引查询语句
log-queries-not-using-indexes = on
#慢查询日志仅仅记录扫描行数超过行min_examined_row_limit的记录(不包括该参数值本身,是大于该参数值的扫描行)
min_examined_row_limit = 1000
log_bin = /opt/bitnami/mariadb/logs/mysql-bin.log
expire_logs_days = 5
max_binlog_size = 800M
============================
#Setting up a multi-master cluster
1.引导集群
docker run --name mariadb-galera-0 \
-e MARIADB_GALERA_CLUSTER_BOOTSTRAP=yes \
-e MARIADB_GALERA_CLUSTER_NAME=my_galera \
-e MARIADB_GALERA_MARIABACKUP_USER=my_mariabackup_user \
-e MARIADB_GALERA_MARIABACKUP_PASSWORD=my_mariabackup_password \
-e MARIADB_ROOT_PASSWORD=my_root_password \
-e MARIADB_USER=my_user \
-e MARIADB_PASSWORD=my_password \
-e MARIADB_DATABASE=my_database \
bitnami/mariadb-galera:latest
2.将节点添加到集群中
docker run --name mariadb-galera-1 \
-e MARIADB_GALERA_CLUSTER_NAME=my_galera \
-e MARIADB_GALERA_CLUSTER_ADDRESS=gcomm://mariadb-galera \
-e MARIADB_GALERA_MARIABACKUP_USER=my_mariabackup_user \
-e MARIADB_GALERA_MARIABACKUP_PASSWORD=my_mariabackup_password \
bitnami/mariadb-galera:latest
3.Configuration file
-v /path/to/my_custom.cnf:/opt/bitnami/mariadb/conf/my_custom.cnf:ro
-v /path/to/mariadb-persistence:/bitnami/mariadb \
vim /opt/bitnami/mariadb/conf/my_custom.cnf
[mysqld]
max_allowed_packet=500M
cat docker-compose.yml
version: '2'
services:
mariadb-galera:
image: 'docker.io/bitnami/mariadb-galera:10.3-debian-10'
ports:
- '3306:3306'
- '4444:4444'
- '4567:4567'
- '4568:4568'
volumes:
- 'mariadb_galera_data:/bitnami/mariadb'
environment:
# ALLOW_EMPTY_PASSWORD is recommended only for development.
- ALLOW_EMPTY_PASSWORD=yes
cat docker-compose.yml
version: '3.7'
services:
mariadb-galera:
container_name: ${MARIADB_GALERA_NAME}
build:
context: .
args:
MARIADB_GALERA_TAG: ${MARIADB_GALERA_TAG}
restart: always
networks:
- default
environment:
#MARIADB_EXTRA_FLAGS: '--max-connect-errors=1000 --max_connections=155'
ALLOW_EMPTY_PASSWORD: ${MARIADB_GALERA_ALLOW_EMPTY_PASSWORD}
MARIADB_ROOT_USER: ${MARIADB_GALERA_ROOT_USER}
MARIADB_ROOT_PASSWORD: ${MARIADB_GALERA_ROOT_PASSWORD}
MARIADB_USER: ${MARIADB_GALERA_USER}
MARIADB_PASSWORD: ${MARIADB_GALERA_PASSWORD}
MARIADB_DATABASE: ${MARIADB_GALERA_DATABASE}
MARIADB_GALERA_CLUSTER_BOOTSTRAP: 'yes'
MARIADB_GALERA_CLUSTER_NAME: ${MARIADB_GALERA_CLUSTER_NAME}
MARIADB_GALERA_CLUSTER_ADDRESS: ${MARIADB_GALERA_CLUSTER_ADDRESS}
MARIADB_GALERA_MARIABACKUP_USER: ${MARIADB_GALERA_MARIABACKUP_USER}
MARIADB_GALERA_MARIABACKUP_PASSWORD: ${MARIADB_GALERA_MARIABACKUP_PASSWORD}
mariadb-galera-slave-1:
container_name: ${MARIADB_GALERA_NAME}-slave-1
build:
context: .
args:
MARIADB_GALERA_TAG: ${MARIADB_GALERA_TAG}
restart: always
depends_on:
- mariadb-galera
links:
- mariadb-galera:${MARIADB_GALERA_NAME}
networks:
- default
environment:
MARIADB_GALERA_CLUSTER_NAME: ${MARIADB_GALERA_CLUSTER_NAME}
MARIADB_GALERA_CLUSTER_ADDRESS: ${MARIADB_GALERA_CLUSTER_ADDRESS}
MARIADB_GALERA_MARIABACKUP_USER: ${MARIADB_GALERA_MARIABACKUP_USER}
MARIADB_GALERA_MARIABACKUP_PASSWORD: ${MARIADB_GALERA_MARIABACKUP_PASSWORD}