当前位置:网站首页>Docker容器实现MySQL主从复制
Docker容器实现MySQL主从复制
2022-07-28 14:39:00 【不会调制解调的猫】
目录
进入/mydata/mysql-master/conf新建my.cnf
进入/mydata/mysql-slave/conf新建my.cnf
使用Docker安装MySQL5.7的详细文章:Linux中使用Docker安装MySQL5.7(CentOS7)_不会调制解调的猫的博客-CSDN博客
新建主服务器容器实例3307
这里就算没有拉取mysql5.7的镜像也可以直接运行,若发现没有镜像则会直接自动拉取。
这里的-v如果不懂,也可以查看之前的容器数据卷详解:Docker容器数据卷_不会调制解调的猫的博客-CSDN博客
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=root -d mysql:5.7
ps查看一下,确认它起来了
docker ps
进入/mydata/mysql-master/conf新建my.cnf
vim my.cnf直接把以下内容全部复制粘贴进去,然后保存退出。
[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修改完配置后重启master实例
在宿主机上通过容器数据卷来修改配置,传导给docker内部,是需要重启的
docker restart mysql-master 
再ps查看一下,要确认它已经up起来了
docker ps
进入mysql-master容器
docker exec -it mysql-master /bin/bashmysql -uroot -proot
容器进入成功,继续下一步
master容器实例内创建数据同步用户
安全加固,添加一个用户,然后授权
create user 'slave'@'%' identified by '123456';grant replication slave,replication client on *.* to 'slave'@'%';
新建从服务器容器实例3308
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=root -d mysql:5.7ps以确认其up

进入/mydata/mysql-slave/conf新建my.cnf
直接粘贴然后保存退出
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-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修改完配置后重启slave实例
docker restart mysql-slave
在主数据库中查看主从同步状态
show master status;
进入mysql-slave容器
docker exec -it mysql-slave /bin/bash
mysql -uroot -proot

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

在从数据库中查看主从同步状态
show slave status \G;\G 是竖着来查看,有点类似于键值对
这里的Slave_IO_Running和Slave_SQL_Running都还是NO,没有启动

在从数据库中开启主从同步
start slave;

再次查看从数据库状态
show slave status \G;

成功。
主从复制测试
主数据库
主数据库新建库,新建表,插入数据
create database dbtest1;
use dbtest1;
create table test1 (id int,name varchar(20));
insert into test1 values(1,'van');
select * from test1;

从数据库
从数据库进行查找
show databases;
use dbtest1;
select * from test1;
测试成功!
边栏推荐
- 多线程
- NFTScan 与 NFTPlay 在 NFT 数据领域达成战略合作
- VS使用技巧
- Summary and arrangement of postgraduate entrance examination information of 211 colleges and universities nationwide
- Stateflow逻辑系统建模
- 为赴美上市做准备?Arm宣布将剥离物联网服务业务:未来将聚焦芯片底层设计
- Vs dynamic library debugging
- Write a standard character device driver with your hands
- Qt信号与槽的五种连接方式
- 19、通道分配任务定义
猜你喜欢

Deepfacelab model parameters collection

NFTScan 与 NFTPlay 在 NFT 数据领域达成战略合作

Vs dynamic library debugging

AS如何不区分大小写去进行智能提示

Svg verification code recognition experience

Heap operation

Rongyun real-time community solution

关于Simulink如何生成模型覆盖率报告

ECCV 2022 | ssp: a new idea of small sample tasks with self-supporting matching

Baidu proposes a dynamic self distillation method to realize dense paragraph retrieval by combining interactive model and double tower model
随机推荐
关闭独立窗口对其他窗口同时关闭的问题
Vs usage skills
About how Simulink generates model coverage reports
VS使用技巧
4、主程序和累积中断处理例程实现代码
Differences between two ways of QT creating folders
About the pictures inserted in the word document, only the following part is displayed
爆肝整理 JVM 十大模块知识点总结,不信你还不懂
VirturalBox解决kernel driver问题
Set structure byte alignment
Pycharm - output exception of program run and default comment of added function
多线程
Framework定制系列(一)-----SystemUI NavigationBar导航栏上滑返回Launcher
800V高压系统
根据输入target,返回数组的两个下标。
Editor in ArcGIS Pro
全国985院校考研信息汇总整理
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
如何通过adb打开和关闭飞行模式
位运算的一些操作