Docker搭建Mysql5.7双主双从集群步骤

记录下在Docker搭建mysql5.7双主双从集群步骤

1.拉取镜像

docker pull mysql:5.7

2.创建对应数据卷

由于我们需要做数据持久化,所以先在本地创建对应四个节点的相应文件夹

#conf文件夹用于存放配置文件
mkdir -p /root/mysql/mysql-master/conf
#data文件夹用于存放mysql数据文件
mkdir -p /root/mysql/mysql-master/data
#log文件夹用于存放mysql日志文件
mkdir -p /root/mysql/mysql-master/log

mkdir -p /root/mysql/mysql-master1/conf
mkdir -p /root/mysql/mysql-master1/data
mkdir -p /root/mysql/mysql-master1/log

mkdir -p /root/mysql/mysql-slave/conf
mkdir -p /root/mysql/mysql-slave/data
mkdir -p /root/mysql/mysql-slave/log

mkdir -p /root/mysql/mysql-slave1/conf
mkdir -p /root/mysql/mysql-slave1/data
mkdir -p /root/mysql/mysql-slave1/log

3.手动配置Mysql配置文件my.cnf

在/root/mysql/mysql-master/conf下新建主节点1的my.cnf文件

cd /root/mysql/mysql-master/conf
vi my.cnf

新增如下内容

[client]
default_character_set=utf8  #设置字符集为Utf-8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

server_id=01  #当前服务的ID,集群中ID不能相同
binlog-ignore-db=mysql   #设置Mysql库不进行主从复制
log-bin=master-log-bin   #开启二进制日志,设置日志文件名称
binlog_cache_size=1M   #设置binlog缓存大小为1M
binlog_format=mixed #设置同步模式为混合
expire_logs_days=7 #设置二进制日志过期清理时间为7天
slave_skip_errors=1062 #设置在主从复制时跳过此类报错

在/root/mysql/mysql-master1/conf下新建主节点2的my.cnf文件

cd /root/mysql/mysql-master1/conf
vi my.cnf

新增如下内容

[client]
default_character_set=utf8  
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

server_id=02
binlog-ignore-db=mysql   
log-bin=master1-log-bin   
binlog_cache_size=1M   
binlog_format=mixed
expire_logs_days=7 
slave_skip_errors=1062 

在/root/mysql/mysql-slave/conf下新建从节点1的my.cnf文件

cd /root/mysql/mysql-slave/conf
vi my.cnf

新增如下内容

[client]
default_character_set=utf8  #设置字符集为Utf-8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

server_id=03
binlog-ignore-db=mysql
log-bin=slave-log-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=relay-log-bin
log_slave_updates=1 #log_slave_updates表示slave将复制时间写进自己的二进制日志
read_only=1

在/root/mysql/mysql-slave1/conf下新建从节点2的my.cnf文件

cd /root/mysql/mysql-slave1/conf
vi my.cnf

新增如下内容

[client]
default_character_set=utf8  #设置字符集为Utf-8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

server_id=04
binlog-ignore-db=mysql
log-bin=slave1-log-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=relay1-log-bin
log_slave_updates=1 #log_slave_updates表示slave将复制时间写进自己的二进制日志
read_only=1

4.开启对应的4个节点的服务

主节点1

docker run --name mysqlm \
-e MYSQL_ROOT_PASSWORD=root \
-v /root/mysql_master/data:/var/lib/mysql \
-v /root/mysql_master/log:/var/log/mysql \
-v /root/mysql_master/conf:/etc/mysql/conf.d \
-dp 3306:3306 mysql:5.7

主节点2

docker run --name mysqlm1 \
-e MYSQL_ROOT_PASSWORD=root \
-v /root/mysql_master1/data:/var/lib/mysql \
-v /root/mysql_master1/log:/var/log/mysql \
-v /root/mysql_master1/conf:/etc/mysql/conf.d \
-dp 3307:3306 mysql:5.7

从节点1

docker run --name mysqls \
-e MYSQL_ROOT_PASSWORD=root \
-v /root/mysql_slave/data:/var/lib/mysql \
-v /root/mysql_slave/log:/var/log/mysql \
-v /root/mysql_slave/conf:/etc/mysql/conf.d \
-dp 3308:3306 mysql:5.7

从节点2

docker run --name mysqls1 \
-e MYSQL_ROOT_PASSWORD=root \
-v /root/mysql_slave1/data:/var/lib/mysql \
-v /root/mysql_slave1/log:/var/log/mysql \
-v /root/mysql_slave1/conf:/etc/mysql/conf.d \
-dp 3309:3306 mysql:5.7

启动成功后docker ps -a 查看进程是否启动
在这里插入图片描述如上4个节点的mysql服务全部启动成功

5.配置主从关系

(1)配置slave为master节点的从节点

在master中配置slave用户给从节点使用

docker exec -it mysqlm /bin/bash
---
mysql -uroot -proot

登录Mysql后执行
create user 'slave'@'%' identified by 'root';
grant replication slave,replication client on *.* to 'slave'@'%';

然后查看主节点1 的日志文件名称和偏移量用于后面从节点配置使用
show master status;

在这里插入图片描述

在slave中配置开启主从复制

docker exec -it mysqls /bin/bash 
---
mysql -uroot -proot
#登录mysql后执行
change master to master_host='120.46.95.3',master_user='slave',master_password='root',master_port=3306,master_log_file='master-log-bin.000004',master_log_pos=770,master_connect_retry=30,master_retry_count=3;

#开启主从复制
start slave;

#查看slave状态;
show slave status\G;

在这里插入图片描述
查看状态出现如上内容则说明配置成功。

(2)配置master1为master的从节点
docker exec -it mysqlm1 /bin/bash 
---
mysql -uroot -proot
#登录mysql后执行
change master to master_host='120.46.95.3',master_user='slave',master_password='root',master_port=3306,master_log_file='master-log-bin.000004',master_log_pos=770,master_connect_retry=30,master_retry_count=3;

#开启主从复制
start slave;

#查看slave状态;
show slave status\G;

在这里插入图片描述
当出现如上内容时master1已配置成为master的从节点。

下面在master1中设置slave用户用于master作为从节点进行连接

create user 'slave'@'%' identified by 'root';
grant replication slave,replication client on *.* to 'slave'@'%';

然后查看主节点2 的日志文件名称和偏移量用于后面从节点配置使用
show master status;

在这里插入图片描述

(3)配置master为master1的从节点
docker exec -it mysqlm /bin/bash 
---
mysql -uroot -proot
#登录mysql后执行
change master to master_host='120.46.95.3',master_user='slave',master_password='root',master_port=3307,master_log_file='master1-log-bin.000002',master_log_pos=768,master_connect_retry=30,master_retry_count=3;

#开启主从复制
start slave;

#查看slave状态;
show slave status\G;

在这里插入图片描述
出现如上配置说明master已配置为master1的从节点。

(4)配置salve1为master1的从节点
docker exec -it mysqls1 /bin/bash 
---
mysql -uroot -proot
#登录mysql后执行
change master to master_host='120.46.95.3',master_user='slave',master_password='root',master_port=3307,master_log_file='master1-log-bin.000002',master_log_pos=768,master_connect_retry=30,master_retry_count=3;

#开启主从复制
start slave;

#查看slave状态;
show slave status\G;

在这里插入图片描述
至此主从集群的配置均已完成并开启了主从复制。

6.验证

使用navicat工具分别连接4个节点
在这里插入图片描述

在主节点1创建新数据库ms,可以看到四个节点全部完成了数据同步
在这里插入图片描述

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Docker中安装MySQL 5.7集群,您可以按照以下步骤进行操作: 步骤1:确保您已经安装了DockerDocker Compose。 步骤2:创建一个新的目录,用于存储MySQL配置文件和数据。例如,您可以运行以下命令创建一个名为mysql_cluster的目录: ``` mkdir mysql_cluster cd mysql_cluster ``` 步骤3:在mysql_cluster目录中创建一个docker-compose.yml文件,并将以下内容添加到文件中: ```yaml version: '3.7' services: mysql1: image: mysql:5.7 restart: always ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: root_password MYSQL_DATABASE: your_database MYSQL_USER: your_username MYSQL_PASSWORD: your_password volumes: - ./mysql1:/var/lib/mysql - ./config:/etc/mysql/conf.d mysql2: image: mysql:5.7 restart: always ports: - 3307:3306 environment: MYSQL_ROOT_PASSWORD: root_password MYSQL_DATABASE: your_database MYSQL_USER: your_username MYSQL_PASSWORD: your_password volumes: - ./mysql2:/var/lib/mysql - ./config:/etc/mysql/conf.d mysql3: image: mysql:5.7 restart: always ports: - 3308:3306 environment: MYSQL_ROOT_PASSWORD: root_password MYSQL_DATABASE: your_database MYSQL_USER: your_username MYSQL_PASSWORD: your_password volumes: - ./mysql3:/var/lib/mysql - ./config:/etc/mysql/conf.d ``` 确保将`your_database`替换为您要创建的数据库名称,`your_username`替换为您要创建的用户名,`your_password`替换为您要设置的密码。 步骤4:保存并关闭docker-compose.yml文件。 步骤5:在终端中,导航到mysql_cluster目录,并运行以下命令启动MySQL集群: ``` docker-compose up -d ``` 这将启动一个包含三个MySQL容器的集群,分别监听3306、3307和3308端口。 现在,您已经成功在Docker中安装了MySQL 5.7集群。您可以使用MySQL客户端连接到其中一个容器的端口(例如3306),并使用您在步骤3中设置的用户名和密码进行身份验证。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值