docker创建mysql集群

发布时间 2023-12-05 22:39:22作者: 此时不卷何时卷

一、创建mysql的节点目录

# 创建第一个节点
mkdir /home/mysql-cluster/node1
cd /home/mysql-cluster/node1
mkdir conf data files log
# 创建第二个节点
mkdir /home/mysql-cluster/node2
cd /home/mysql-cluster/node2
mkdir conf data files log
# 创建第三个节点
mkdir /home/mysql-cluster/node3
cd /home/mysql-cluster/node3
mkdir conf data files log

二、在conf目录下创建初始化文件cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

default-time_zone = '+8:00'
log_timestamps=SYSTEM

max_connections=1000

default-authentication-plugin=mysql_native_password

skip-host-cache
skip-name-resolve

datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock

#log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

三、创建第一个节点

docker run -d \
-p 3307:3306 \
-v /home/mysql-cluster/node1/conf:/etc/mysql/conf.d \
-v /home/mysql-cluster/node1/data:/var/lib/mysql \
-v /home/mysql-cluster/node1/files:/var/lib/mysql-files \
-v /home/mysql-cluster/node1/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e EXTRABACKUP_PASSWROD=root \
-e CLUSTER_NAME=mysql-cluster \
-e CLUSTER_JOIN=“mysql-node1 mysql-node2 mysql-node3” \
--privileged \
--name mysql-node1 \
--network mynet mysql:8.0.19

四、创建第二个节点

docker run -d \
-p 3308:3306 \
-v /home/mysql-cluster/node2/conf:/etc/mysql/conf.d \
-v /home/mysql-cluster/node2/data:/var/lib/mysql \
-v /home/mysql-cluster/node2/files:/var/lib/mysql-files \
-v /home/mysql-cluster/node2/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e EXTRABACKUP_PASSWROD=root \
-e CLUSTER_NAME=mysql-cluster \
-e CLUSTER_JOIN=“mysql-node1 mysql-node2 mysql-node3” \
--privileged \
--name mysql-node2 \
--network mynet mysql:8.0.19

五、创建第三个节点

docker run -d \
-p 3309:3306 \
-v /home/mysql-cluster/node3/conf:/etc/mysql/conf.d \
-v /home/mysql-cluster/node3/data:/var/lib/mysql \
-v /home/mysql-cluster/node3/files:/var/lib/mysql-files \
-v /home/mysql-cluster/node3/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e EXTRABACKUP_PASSWROD=root \
-e CLUSTER_NAME=mysql-cluster \
-e CLUSTER_JOIN=“mysql-node1 mysql-node2 mysql-node3” \
--privileged \
--name mysql-node3 \
--network mynet mysql:8.0.19