mysql主从复制docker版

mysql主从复制docker版

1、运行mysql

shell 复制代码
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=201103 -d mysql:5.7

2、在/mydata/mysql-master/conf下新建文件my.cnf

shell 复制代码
vim my.cnf

my.cnf中的内容

shell 复制代码
[mysqld]
## 设置server_id ,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间,默认是0,表示不自动清理
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
## 1062错误是只一些逐渐重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

3、修改完配置后重启master实例

shell 复制代码
docker restart mysql-master

4、进入mysql-master容器

shell 复制代码
docker exec -it mysql-master /bin/bash
mysql -uroot -p

5、master容器实例内创建数据同步用户

shell 复制代码
CREATE USER 'slave'@'%' IDENTIFIED BY '201103';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

6、新建从服务器容器3308

shell 复制代码
docker run -p 3308:3306 --name mysql-slave -v /mydata/mysql-slave/log:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=201103 -d mysql:5.7

7、进入/mydata/mysql-slave/conf 目录下新建my.cnf

shell 复制代码
vim my.cnf

my.cnf

shell 复制代码
[mysqld]
## 设置server_id ,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间,默认是0,表示不自动清理
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
## 1062错误是只一些逐渐重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1

8、修改完配置后重启slave实例

shell 复制代码
docker restart mysql-slave

9、在主数据库中查看主从同步状态

shell 复制代码
show master status;

10、进入my-slave容器

shell 复制代码
docker exec -it mysql-slave /bin/bash

11、在从数据库中配置主从复制

主从复制命令参数说明

复制代码
master_host:主数据库的IP地址
master_port:主数据库的运行端口
master_user:在主数据创建的用于同步数据的用户账号
master_password:在主数据库创建的用于同步数据的用户密码
master_log_file:在主数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数
master_log_pos:指定从数据从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数
master_connect_retry:连接失败重试的时间间隔,单位为秒
shell 复制代码
change master to master_host='192.168.10.109', master_user='slave', master_password='201103', master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=617,master_connect_retry=30;

12、在从数据库中查看主从同步状态

shell 复制代码
show slave status \G;

13、在从数据库中开启主从同步

shell 复制代码
start slave;

14、主从复制测试

主机新建库 -- 使用库 -- 新建表 -- 插入数据

从机使用库- 查看记录

相关推荐
爱吃火鸡面呀1 小时前
MySQL 查询与函数详解:从基础条件筛选到高级字符处理
数据库·mysql
知行产研2 小时前
中国矿山无人驾驶出海的三重门
数据库·mysql·php
艾伦_耶格宇2 小时前
【DOCKER容器实战】-2MySQL
运维·docker·容器
爱和冰阔落3 小时前
【MySQL 慢查询排查实战】列表接口逐渐变慢时,怎样从请求链路定位原因
android·数据库·mysql
Dxy12393102163 小时前
MySQL有哪些锁?InnoDB锁体系完整梳理博客
数据库·mysql
wear工程师3 小时前
MySQL 索引条件下推是什么?Using index condition 并不是覆盖索引
sql·mysql
禅口魔心3 小时前
RK3576开发——Docker部署
docker·嵌入式linux
方便面不加香菜4 小时前
MySQL 复合查询
数据库·mysql
随便做点啥4 小时前
32卡×4090 24GB,Qwen3.8-27B-FP8 集群部署报告
服务器·经验分享·docker·vllm
花花鱼4 小时前
MySQL Illegal mix of collations 全解|字符集与排序规则冲突原理、分层排错、通用解决方案(适配5.7/8.0迁移)
数据库·mysql