Docker(九):MySQL主从复制搭建

一:master

1.1 /mydata/mysql-master/conf/my.conf

shell 复制代码
[mysqld]
#同一局域网需要唯一
server_id=101
# 不需要同步的数据库
binlog-ignore-db=mysql
# 开启二进制日志
log-bin=mall-mysql-bin
# 二进制日志使用内存大小
binlog_cache_size=1M
# 二进制日志格式
binlog_format=mixed
# 二进制日志清理时间,默认0不自动清理
expire_log_days=7
# 跳过主从复制中遇到的所有错误或者指定类型的错误,避免slave短复制中断
# 1062指主键重复
slave_skip_errors=1062

1.2 启动MySQL Master

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=123456
	-d mysql:5.7

# 查看启动是否成功
docker ps

1.3 创建用户和授权

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

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

二:salve

2.1 /mydata/mysql-slave/conf/my.conf

shell 复制代码
[mysqld]
#同一局域网需要唯一
server_id=102
# 不需要同步的数据库
binlog-ignore-db=mysql
# 开启二进制日志
log-bin=mall-mysql-slave1-bin
# 二进制日志使用内存大小
binlog_cache_size=1M
# 二进制日志格式
binlog_format=mixed
# 二进制日志清理时间,默认0不自动清理
expire_log_days=7
# 跳过主从复制中遇到的所有错误或者指定类型的错误,避免slave短复制中断
# 1062指主键重复
slave_skip_errors=1062

# 配置中继日志
relay_log=mall-mysql-relay-bin
# slave将复制事件写进自己的二进制日志
log_slave_updates=1
# 只读权限
read_only=1

2.2 启动MySQL slave

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=123456
	-d mysql:5.7

docker ps

2.3 show master status

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

# 查看binlog的File、Position
mysql> show master status;

2.4 主从配置

从服务器配置主从复制。

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

mysql> change master to master_host='宿主机IP', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

mysql> start slave;

# 查看主从同步状态,查看Slave_IO_Running: Yes 表示开始同步
mysql> show slave status \G;

2.5 test

在master上操作数据库,然后去从数据库中确认是否同步。

相关推荐
lpruoyu13 小时前
【Docker进阶-01】Docker隔离原理与可视化界面-Portainer
docker
shejizuopin13 小时前
基于SSM的高校旧书交易系统的设计与实现(任务书)
java·mysql·毕业设计·论文·任务书·基于ssm的·高校旧书交易系统的设计与实现
Wiktok13 小时前
SQLAlchemy+PyMySQL的实用实战示例
python·mysql·sqlalchemy
不想写bug呀14 小时前
MySQL事务介绍
数据库·mysql
Swift社区14 小时前
Docker 构建 Python FastAPI 镜像最佳实践
python·docker·fastapi
API开发14 小时前
CentOS 单独安装Docker Compose v2
linux·docker·centos·docker compose
hwj运维之路14 小时前
Docker面试题汇总系列
运维·docker·云原生·容器
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.14 小时前
双主模式实现HTTP与MySQL高可用
网络协议·mysql·http
cheems952714 小时前
【MySQL】SQL调优:数据库性能优化(一)
数据库·sql·mysql
chao_78914 小时前
双设备全栈开发最佳实践[mac系统]
git·python·macos·docker·vue·全栈