当前位置:网站首页>Use docker to build mysql master-slave
Use docker to build mysql master-slave
2022-07-31 12:06:00 【~ Pompeii】
目录
- 使用docker搭建mysql主从
- 1.拉取mysql镜像
- 2.启动mysql
- 3.添加mysql的配置文件
- 4.修改完配置后重启master实例
- 5.进入mysql
- 6.进入mysql-master容器,And create a data synchronization user inside the container(Specifying which user can sync my data is authorized)
- 7.Create a slave database instance3308
- 8.Enter created from config filemy.cnf ,配置完后重启mysql从机
- 9.View data synchronization status in the primary database
- 10.进入slave(从数据库)中,在从数据库中配置主从复制(主从同步)
- 11.在从数据库中开启主从同步,并查看状态
使用docker搭建mysql主从
首先需要准备docker环境
1.拉取mysql镜像
docker pull mysqlL:5.7
2.启动mysql
# 将容器中的日志、数据、Profile associations are mapped to hosts,Even if the container is deleted or hung up, there is no fear of data loss,The data in the host is still there
docker run -d -p 3307:3306 --privileged=true -v /home/mysql-master/log:/var/log/mysql -v /home/mysql-master/data:/var/lib/mysql -v /home/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_master docker.io/mysql:5.7
#解释
docker run -d -p 3307:3306 --privileged=true
-v /home/mysql-master/log:/var/log/mysql #日志
-v /home/mysql-master/data:/var/lib/mysql #数据
-v /home/mysql-master/conf:/etc/mysql#配置文件
-e MYSQL_ROOT_PASSWORD=123456 #root密码
--name mysql_master docker.io/mysql:5.7 #设置名字
3.添加mysql的配置文件
在/home/mysql-master/conf 路径下创建my.cnf配置文件,and add the corresponding configuration
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
4.修改完配置后重启master实例
docker restart mysql_master
5.进入mysql
查看ip
docker inspect mysql_master
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uG7gN0zR-1659166986339)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220730152418129.png)]](/img/45/06cc1796f3d183f4c975faf197ca58.png)
mysql -uroot -h172.17.0.1 -P3307 -p123456
6.进入mysql-master容器,And create a data synchronization user inside the container(Specifying which user can sync my data is authorized)
CREATE USER ‘slave’@‘%’ IDENTIFIED BY ‘123456’;
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’@‘%’;
7.Create a slave database instance3308
docker run -d -p 3308:3306 --privileged=true -v /home/mysql-salve/log:/var/log/mysql -v /home/mysql-salve/data:/var/lib/mysql -v /home/mysql-salve/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql_salve docker.io/mysql:5.7
8.Enter created from config filemy.cnf ,配置完后重启mysql从机
在/home/mysql-salve/conf 路径下创建my.cnf配置文件,and add the corresponding configuration
vim 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
重启mysql-salve
docker restart mysql_salve
9.View data synchronization status in the primary database
show master status;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sWw6WFum-1659166986340)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220730153122349.png)]](/img/9f/2a38e91df80e9ea63f666a905f0e99.png)
10.进入slave(从数据库)中,在从数据库中配置主从复制(主从同步)
#配置主从
change master to master_host='172.17.0.1',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000002',master_log_pos=154,master_connect_retry=30;
#解释
master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒.
11.在从数据库中开启主从同步,并查看状态
start slave;
View the master-slave synchronization status from the slave database
show slave status \G;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OXcCueYx-1659166986341)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220730153302866.png)]](/img/b9/665747b0eb71997b0b4ed68df3e335.png)
边栏推荐
- MySQL模糊查询性能优化
- kubernetes之服务发现
- Service discovery of kubernetes
- 基于稳态视觉诱发电位和注意力脑电的混合脑机接口系统
- 三相PWM整流器预测直接功率控制
- 502 bad gateway原因、解决方法
- The latest MySql installation teaching, very detailed
- [core]-ARMV7-A、ARMV8-A、ARMV9-A 架构简介「建议收藏」
- ApiPost is really fragrant and powerful, it's time to throw away Postman and Swagger
- 一周精彩内容分享(第14期)
猜你喜欢

After class, watching the documentation and walking back to the lab, I picked up the forgotten SQL operators again

chroot命令

荣耀手机参数写错,客服认为没错

IDEA 配置方法注释自动参数

St. Regis Takeaway Project: New dishes and dishes paged query

想吃菌子,当然是自己上山找了

Chrome开发自定义右键菜单实现快速跳转到指定页面

Android studio connects to MySQL and completes simple login and registration functions

ESP8266-Arduino编程实例-MCP9808数字温度传感器驱动

JVS设置不同应用的登录时效时间
随机推荐
apisix-Getting Started
三层架构service、dao、controller层
Use ODBC in Excel to read data from CDS view on SAP BTP platform
【核心概念】图像分类和目标检测中的正负样本划分以及架构理解
dosbox基础使用[通俗易懂]
kernel syscore
快速学完数据库管理
LeetCode - 025. 链表中的两数相加
mysql 自动添加创建时间、更新时间
JVS函数公式使用场景介绍
Use Excel to read data exposed by SAP ABAP CDS View through ODBC
下课看着文档走回实验室,我重新拾起了遗忘的SQL运算符
Android studio connects to MySQL and completes simple login and registration functions
学习笔记 Golang 写入文件(io.WriteString、ioutil.WriteFile、file.Write、write.WriteString)
B/S架构模式的一个整体执行流程
MySQL百万数据优化总结 一
无法将“node.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
MySql模糊查询大全
MySQL 行级锁(行锁、临键锁、间隙锁)
Mysql环境变量的配置(详细图解)