基于Docker的MySql主从复制

本文详细介绍了如何使用Docker搭建MySQL主从复制环境,包括创建MySQL Master服务镜像及从节点镜像的具体步骤,实现数据的实时同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 创建MySql Master服务镜像

1.创建目录及文件mysql-master并进入

mkdir mysql-master
cd mysql-master
touch Dockerfile
touch mysql.cnf

2.编辑相关文件

FROM mysql:latest 
COPY mysql.cnf /etc/mysql/conf.d/mysql.cnf


[mysqld]
log-bin=mysql-bin   #[必须]启用二进制日志
server-id=1           #设置为主机ip

3.构建镜像

docker build -t mysql-master .

4.启动镜像

docker run --privileged=true -p 3308:3306 --name mysql-master -v /var/docker/mysql/data-master/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev -d mysql-master

5.连接到启动的MySQL服务,执行授权命令

GRANT REPLICATION SLAVE ON *.* TO 'repl_dev'@'%' IDENTIFIED BY 'repl_dev'; 

6.查看从节点连接参数

FLUSH TABLES WITH READ LOCK;
UNLOCK TABLES; 
SHOW MASTER STATUS; --file和position参数要用于从节点配置

二 创建从节点镜像

1.创建目录及文件mysql-master并进入

mkdir mysql-slave
cd mysql-slave
touch Dockerfile
touch mysql.cnf

2.编辑相关文件

FROM mysql:latest 
COPY mysql.cnf /etc/mysql/conf.d/mysql.cnf


[mysqld]
#log-bin=mysql-bin   #[必须]启用二进制日志
server-id=2           #设置为主机ip
relay-log=slave-relay-bin

3.构建镜像

docker build -t mysql-slave .

4.启动镜像

docker run --privileged=true -p 3308:3306 --name mysql-slave -v /var/docker/mysql/data-slave /:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev -d mysql-slave 

5.连接到启动的MySql服务,执行以下命令(其中各个参数值需要根据步骤一种的相关配置来进行设置)

change master to 
master_host='10.10.10.221',
master_port=3308,
master_user='repl_dev',
master_password='repl_dev',
master_log_file='mysql-bin.000003',
master_log_pos=433;
START SLAVE;

6.查看并测试

show slave status 

如果Slave_IO_State字段的值为 Waiting for master to send event

此时,连接Master服务器,创建数据库,数据表,并插入数据,查询刷新slave节点,可以看到数据已经同步过来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值