(保姆级)亲测可用:docker 容器安装部署 MySQL:5.7主从复制

保姆级docker 容器安装部署 MySQL:5.7主从复制

一、导入Mysql5.7镜像

# pull下载
docker pull mysql:5.7
# 或者导入已经下载好的mysql5.7的镜像tar包
docker load -i mysql5.7.tardocker images

二、启动mysql-master容器实例

1、启动脚本

#!/bin/bash
docker run -p 3307:3306 --name mysql-master \
-v /opt/mysql/mysql-master/log:/var/log/mysql \
-v /opt/mysql/mysql-master/data:/var/lib/mysql \
-v /opt/mysql/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=Qwer!234 \
-d mysql:5.7.36
-e MYSQL_ROOT_PASSWORD=Qwer!234        指定MySQL的登陆密码
-d                                指定后台运行

2、进入到宿主机创建my.cnf文件

进入到宿主机的/opt/mysql/mysql-master/conf/目录下创建my.cnf文件

cd  /opt/mysql/mysql-master/conf/vim  my.cnf [mysqld]
##设置server_id ,同一个局域网中需要唯一
server_id=10
##指定不需要同步的数据库名称
binlog-ignore-db=mysql
##开启二进制日志功能
log-bin=mall-mysql-bin
##设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
##设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间,默认为0:表示不自动清理。
expire_logs_days=3
##跳过主从复制中遇到的多有错误或指定类型的错误,避免slaver端复制中断。
##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致。
slave_skip_errors=1062

3、重启mysql-master容器

docker restart mysql-master

4、进入到mysql-master容器内,创建数据同步用户

docker exec -it mysql-master /bin/bashmysql -uroot -pQwer!234 # 创建一个用户叫slave 用密码 Qwer!234 登陆mysql-master数据库
mysql>  CREATE USER 'slave'@'%' IDENTIFIED BY 'Qwer!234';  # 给slave用户授予权限 来获取数据
mysql>  GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

三、启动mysql-slave实例

1、启动脚本

#!/bin/bash
docker run -p 3308:3306 --name mysql-slave \
-v /opt/mysql/mysql-slave/log:/var/log/mysql \
-v /opt/mysql/mysql-slave/data:/var/lib/mysql \
-v /opt/mysql/mysql-slave/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=Qwer!234 \
-d mysql:5.7.36

2、新建my.cnf

进入/opt/mysql/mysql-slave/conf目录下新建my.cnf

cd  /opt/mysql/mysql-slave/confvim my.cnf[mysqld]##设置server_id ,同一个局域网中需要唯一
server_id=11##指定不需要同步的数据库名称
binlog-ignore-db=mysql##开启二进制日志功能
log-bin=mall-mysql-bin##设置二进制日志使用内存大小(事务)
binlog_cache_size=1M##设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed##二进制日志过期清理时间,默认为0:表示不自动清理。
expire_logs_days=3##跳过主从复制中遇到的多有错误或指定类型的错误,避免slaver端复制中断。##如: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

3、重启mysql-slave容器

docker restart mysql-slave

4、在主数据库中查看主从复制的状态

配置从库时需要使用

docker exec -it mysql-master /bin/bashmysql -uroot -pQwer!234 mysql>  show master status;
___________________________________File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mall-mysql-bin.000001 |     1683 |              | mysql            |                   

5、进入mysql-slave 容器(从库)

docker exec -it mysql-slave /bin/bashmysql -uroot -pQwer!234

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

mysql>  change master to master_host='192.168.1.1',master_user='slave',master_password='Qwer!234',master_port=3307,master_log_file='mall-mysql-bin.000001',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: 链接失败重试的时间间隔,单位为秒。

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

查看状态

mysql>  show slave status \G;___________________
...Relay_Master_Log_File: mall-mysql-bin.000001lave_IO_Running: No  #没开始时是NOSlave_SQL_Running: No  #没开始时是NO
...

从数据库中开启主从同步

mysql>  start slave;mysql>  show slave status \G;__________________
...Relay_Master_Log_File: mall-mysql-bin.000001lave_IO_Running: Yes  #没开始时是NOSlave_SQL_Running: Yes  #没开始时是NO
...

四、主从复制测试

1、在主机创建库-使用库-创建表-插入数据


docker exec -it mysql-master /bin/bashmysql -uroot  -pQwer!234mysql>   create database db01;
mysql>   use db01;
mysql>   create table t1 (id int,name varchar(10));
mysql>   insert into t1 values(1,'z3');
mysql>   select * from t1;

2、 在从机进入库-查看数据是否同步

# 在从机进入库-查看数据是否同步
docker exec -it mysql-slave /bin/bash
mysql -uroot  -pQwer!234mysql> use db01mysql> select * from t1;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/283684.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-VBA编程500例-016(入门级)

移动石子算法(Stone-moving Algorithm)是一类在计算机科学和数学中广泛研究的算法问题,通常涉及在特定规则下移动石子以达到某种目标。虽然这些问题本身可能看起来是抽象的,但它们在实际应用中有多种体现,包括但不限于以下领域: …

stable diffusion 提示词进阶语法-年龄身材肤色-学习小结

stable diffusion 提示词进阶语法-年龄&身材&肤色 前言年龄提示词青年(18-25岁)幼年、少年(1-18)中年(35-60岁)老年(65-80岁 老爷爷 老奶奶) 身材提示词肤色关键词(人物基础…

【现代C++】nullptr用法

在C11之前,NULL被用来表示空指针,但它只是一个宏,定义为0或((void*)0),这在某些情况下可能会导致类型混淆和错误。为了解决这些问题,C11引入了nullptr关键字,它是一种特殊的空指针字面量,具有自…

一次完整的 HTTP 请求所经历的步骤

1: DNS 解析(通过访问的域名找出其 IP 地址,递归搜索)。 2: HTTP 请求,当输入一个请求时,建立一个 Socket 连接发起 TCP的 3 次握手。如果是 HTTPS 请求,会略微有不同。 3: 客户端向服务器发…

一文详解Rust中的字符串

有人可能会说,字符串这么简单还用介绍?但是很多人学习rust受到的第一个暴击就来自这浓眉大眼、看似毫无难度的字符串。 请看下面的例子。 fn main() {let my_name "World!";greet(my_name); }fn greet(name: String) {println!("Hello…

【Mysql数据库基础03】分组函数(聚合函数)、分组查询

分组函数(聚合函数)、分组查询 0 该博客所要用的数据库表的属性1 分组函数1.1 简单的使用1.2 是否忽略null值1.3 和关键字搭配使用1.4 count函数的详细介绍1.5 练习 2 分组查询Group by2.1 简单的分组查询2.2 练习 3 格式投票:yum: 0 该博客所要用的数据库表的属性 …

基于SpringBoot+Redis实现接口限流

前言 业务中需要对一些接口进行限流处理&#xff0c;防止机器人调用或者保证服务质量&#xff1b; 实现方式 基于redis的lua脚本 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis&…

javaWeb点餐平台系统功能介绍说明

开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 项目关键技术 1、JSP技术 JSP(Java…

pytest简介以及命令行执行

pytest简介以及安装 pytest简介导入第三方库修改工具类 pytest命令方式执行函数执行pytest中的参数详解 pytest简介 pytest有很多强大的插件 pytest-html &#xff08;生成html格式的自动化测试报告&#xff09; pytest-xdist &#xff08;测试用例分布式执行&#xff0c;多cpu…

鸿蒙Harmony应用开发—ArkTS-@Provide装饰器和@Consume装饰器:与后代组件双向同步

Provide和Consume&#xff0c;应用于与后代组件的双向数据同步&#xff0c;应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递&#xff0c;Provide和Consume摆脱参数传递机制的束缚&#xff0c;实现跨层级传递。 其中Provide装饰的变…

目标检测——PP-YOLO算法解读

PP-YOLO系列&#xff0c;均是基于百度自研PaddlePaddle深度学习框架发布的算法&#xff0c;2020年基于YOLOv3改进发布PP-YOLO&#xff0c;2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet&#xff0c;2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列&#xff0c;所以放一起解…

重学SpringBoot3-MyBatis的三种分页方式

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-MyBatis的三种分页方式 准备工作环境搭建数据准备未分页效果 1. 使用MyBatis自带的RowBounds进行分页演示 2. 使用物理分页插件演示 3. 手动编写分页SQL…

浅浅迈入C++门槛

从今天起&#xff0c;我要开始hello&#xff0c;world。 往后更要做到&#xff0c;拳打数据结构&#xff0c;脚踢Linux。 这就是江湖人的风范。 拼搏百天&#xff0c;我要学希普拉斯普拉斯。 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许…

小红书扫码登录分析与python实现

文章目录 1. 写在前面2. 接口分析3. 代码实现 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…

设计模式深度解析:适配器模式与桥接模式-灵活应对变化的两种设计策略大比拼

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 适配器模式与桥接模式-灵活应对变化的两种设计策略大比拼 探索设计模式的魅力&#xff1a;深入了…

设计模式 适配器模式

1.背景 适配器模式&#xff0c;这个模式也很简单&#xff0c;你笔记本上的那个拖在外面的黑盒子就是个适配器&#xff0c;一般你在中国能用&#xff0c;在日本也能用&#xff0c;虽然两个国家的的电源电压不同&#xff0c;中国是 220V&#xff0c;日本是 110V&#xff0c;但是这…

linux内核input子系统概述

目录 一、input子系统二、关键数据结构和api2.1 数据结构2.1.1 input_dev2.1.2 input_handler2.1.3 input_event2.1.4 input_handle 2.2 api接口2.2.1 input_device 相关接口input_device 注册流程事件上报 2.2.2 input handle 相关接口注册 handle指定 handle 2.2.3 input han…

内网横向移动小结

windows Windows-Mimikatz 适用环境&#xff1a; 微软为了防止明文密码泄露发布了补丁 KB2871997&#xff0c;关闭了 Wdigest 功能。当系统为 win10 或 2012R2 以上时&#xff0c;默认在内存缓存中禁止保存明文密码&#xff0c;此时可以通过修改注册表的方式抓取明文&#xff…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第八:trans_func class

# 生态学研究人员通常对微生物群落的功能特征感兴趣&#xff0c;因为功能或代谢数据对于解释微生物群落的结构和动态以及推断其潜在机制是强有力的。 # 由于宏基因组测序复杂且昂贵&#xff0c;利用扩增子测序数据预测功能谱是一个很好的选择。 # 有几个软件经常用于此目标&…

Ambari——编译——替换国内镜像源出现certificate has expired 问题

您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 报错原因: 错误分析: 1、国内镜像源已经调整为: https://registry.npmmirror.com 非先前 https://registry.npm.taobao.org2、npm设置ssl…