[保姆级]mysql8+Docker主从配置步骤

鉴于日常后端开发,使用mysql做主从配置用物理机相对繁琐,复用度不高,现基于 Docker 方式配置 MySQL 8.0 主从的步骤。具体如下:

当前使用Ubuntu 24.04

Docker镜像地址请先配置,若不知如何配置请查看我专栏的这篇文章[【保姆级】Ubuntu 24.04安装Docker](!https://blog.csdn.net/mimica/article/details/146392757?sharetype=blogdetail&shareId=146392757&sharerefer=APP&sharesource=mimica&sharefrom=link)。


1. 准备工作
•  创建目录:在宿主机上创建用于挂载的目录,分别用于存储主节点和从节点的数据、日志和配置文件。
mkdir -p /mydata/mysql-master/log /mydata/mysql-master/data /mydata/mysql-master/conf
mkdir -p /mydata/mysql-slave/log /mydata/mysql-slave/data /mydata/mysql-slave/conf

•  拉取镜像:拉取 MySQL 8.0 的 Docker 镜像。
docker pull mysql:8.0.40

2. 部署 MySQL 主节点
•  运行主节点容器:使用以下命令启动主节点容器,将宿主机的 3307 端口映射到容器的 3306 端口,并挂载数据、日志和配置文件目录。
docker run -d --name mysql-master -p 3307:3306 \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0.40

•  配置主节点:进入主节点容器的配置文件目录 /mydata/mysql-master/conf,创建 my.cnf 文件,添加以下内容。
[mysqld]
server_id=101
log_bin=mysql-bin
binlog_format=mixed
expire_logs_days=7

保存后重启容器以应用配置。
docker restart mysql-master

•  创建复制用户:进入主节点容器的 MySQL 命令行,创建一个用于复制的用户并授权。
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;

•  查看主节点状态:执行 SHOW MASTER STATUS; 命令,记录下 File 和 Position 的值,稍后从节点配置会用到。
3. 部署 MySQL 从节点
•  运行从节点容器:使用以下命令启动从节点容器,将宿主机的 3308 端口映射到容器的 3306 端口,并挂载数据、日志和配置文件目录。
docker run -d --name mysql-slave -p 3308:3306 \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0

•  配置从节点:进入从节点容器的配置文件目录 /mydata/mysql-slave/conf,创建 my.cnf 文件,添加以下内容。
[mysqld]
server_id=102
log_bin=mysql-bin
binlog_format=mixed
expire_logs_days=7
read_only=1

保存后重启容器以应用配置。
docker restart mysql-slave

4. 配置主从复制
•  进入从节点容器:使用以下命令进入从节点容器的 MySQL 命令行。
docker exec -it mysql-slave /bin/bash
mysql -uroot -p

•  配置复制:执行以下命令配置从节点,将主节点的 IP 地址、复制用户、密码、日志文件和位置等信息填入。
CHANGE MASTER TO
MASTER_HOST='主节点宿主机IP',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='主节点File值',
MASTER_LOG_POS=主节点Position值;

例如:
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234;

•  启动复制:执行 START SLAVE; 命令启动复制。
•  验证复制状态:执行 SHOW SLAVE STATUS\G; 命令,检查 Slave_IO_Running 和 Slave_SQL_Running 是否都为 Yes,表示复制正常。
5. 测试主从复制
•  在主节点插入数据:在主节点的数据库中插入一些测试数据。
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO testtable (name) VALUES ('test');

•  检查从节点数据:在从节点的数据库中检查是否成功复制了主节点的数据。
USE testdb;
SELECT * FROM testtable;

实际操作中可以根据上述步骤逐步进行验证,每一步操作后可以通过 Docker 的日志和 MySQL 的命令行反馈来确认操作是否成功。如果有时间再添加相关配图,或者后台留言,空了来回复各位看官。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值