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

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

一、导入Mysql5.7镜像

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

docker 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/bash

mysql -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/conf

vim 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/bash

mysql -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/bash

mysql -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.000001
   lave_IO_Running: No  #没开始时是NO
   Slave_SQL_Running: No  #没开始时是NO
...

从数据库中开启主从同步

mysql>  start slave;

mysql>  show slave status \G;

__________________
...
   Relay_Master_Log_File: mall-mysql-bin.000001
   lave_IO_Running: Yes  #没开始时是NO
   Slave_SQL_Running: Yes  #没开始时是NO
...

四、主从复制测试

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


docker exec -it mysql-master /bin/bash

mysql -uroot  -pQwer!234

mysql>   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!234

mysql> use db01

mysql> select * from t1;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开始写 Docker(六)---实现 mydocker run -v 支持数据卷挂载

本文为从零开始写 Docker 系列第六篇,实现类似 docker -v 的功能,通过挂载数据卷将容器中部分数据持久化到宿主机。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: …

搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例,具体介绍各个目录情况并参照创建相关文件夹 1、创建项目后端 BigData-KongGuan …

【MySQL】MySQL视图

文章目录 一、视图的基本使用1.创建视图2.修改了视图,对基表数据有影响3.修改了基表,对视图有影响4.删除视图 二、视图规则和限制 一、视图的基本使用 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称…

15届蓝桥杯备赛(2)

文章目录 刷题笔记(2)二分查找在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组 链表反转链表反转链表II 二叉树相同的树对称二叉树平衡二叉树二叉树的右视图验证二叉搜索树二叉树的最近公共祖先二叉搜索树的最近公共祖先二叉树层序遍历…

管道(acwing,蓝桥杯,二分)

题目描述: 有一根长度为 len 的横向的管道,该管道按照单位长度分为 len 段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。 一开始管道是空的,位于 Li的阀门会在 Si 时刻打开,并不断让水流入管道。 对于位…

WRF模型运行教程(ububtu系统)--III.运行WRF模型(官网案例)

零、创建DATA目录 # 1.创建一个DATA目录用于存放数据(一般为fnl数据,放在Build_WRF目录下)。 mkdir DATA # 2.进入 DATA cd DATA 一、WPS预处理 在模拟之前先确定模拟域(即模拟范围),并进行数据预处理&#xff08…

我的尝试:Codigger + Vim

若您愿意耐心投入,学习 Vim 的过程其实远比想象中轻松。我对 Vim 产生兴趣,主要是源于它对提升生产力的巨大潜力。我尝试了 Neovim、NvChad 以及 Codigger Vim 插件,如今我的工作效率已远超从前。 那么,Vim 究竟是什么呢&#xff…

Leetcode 79. 单词搜索

心路历程: 做完这道题才发现是回溯,一开始想的是递归,判断完第i个字符后,只需要挨个判断第i1个字符在不在第i个字符的邻域。后来发现由于不能重复使用元素,所以需要维护一个visited列表,并且在遍历所有可能…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——自适应大邻域算法(ALNS)

基于python语言,采用经典自适应大邻域算法(ALNS)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作,目前…

Aigtek超声功率放大器产品介绍

超声功率放大器是一种特殊类型的功率放大器,专门用于增强和放大超声信号的功率。它在医疗、工业和科学领域中得到广泛应用。 一、超声功率放大器的基本概述 超声功率放大器是一种能够将低功率超声信号放大到更高功率水平的设备。它是超声系统的关键组成部分&#xf…

力扣1. 两数之和

思路:用一个map存放 已遍历过的元素和下标; 若当前元素是nums[i], 且该元素的另一半 target-nums[i] 在已遍历过的map里面,则返回两个元素的下标; class Solution {public int[] twoSum(int[] nums, int target) {int[] ans new…

腾讯云服务器多少钱1个月?2024一个月收费阿济格IE吧

2024腾讯云服务器多少钱一个月?5元1个月起,腾讯云轻量服务器4核16G12M带宽32元1个月、96元3个月,8核32G22M配置115元一个月、345元3个月,腾讯云轻量应用服务器61元一年折合5元一个月、4核8G12M配置646元15个月、2核4G5M服务器165元…

数据结构:详解【顺序表】的实现

1. 顺序表的定义 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。动态顺序表与数组的本质区别是——根据需要动态的开辟空间大小。 2. 顺序表的功能 动态顺序表的功能一般有如下几个: 初始化顺序表打印顺序…

PlantUML Integration 编写短信服务类图

PlantUML Integration 写一个类图,主要功能为 1、编写一个serviceSms短信服务类; 2、需要用到短信的地方统一调用基建层的服务即可; 3、可以随意切换、增加短信厂商,不需要更改场景代码,只需要更改application.yml 里面…

Redis数据结构对象中的对象共享、对象的空转时长

对象共享 概述 除了用于实现引用计数内存回收机制之外,对象的引用计数属性还带有对象共享的作用。 在Redis中,让多个键共享同一个值对象需要执行以下两个步骤: 1.将数据库键的值指针指向一个现有的值对象2.将被共享的值对象的引用计数增一 目前来说…

【Godot4.2】2D导航01 - AStar2D及其使用方法

概述 对于2D平台跳跃或飞机大战,以及一些直接用键盘方向键操控玩家的游戏,是根本用不到寻路的,因为只需要检测碰撞就可以了。 但是对于像RTS或战棋这样需要操控玩家到地图指定位置的移动方式,就绝对绕不开寻路了。 导航、碰撞与…

微信小程序接口请求出错:request:fail url not in domain list:xxxxx

一、微信小程序后台和开发者工具配的不一样导致了这个错误 先说结论: 开发者工具配置了https://www.xxx.cn/prod-api/ 微信后台配置了 https://www.xxx.cn 一、最开始 开发者工具配置了https://www.xxx.cn:7500 微信后台配置了 https://www.xxx.cn 报错:reques…

代码随想录算法训练营第53天 | 1143.最长公共子序列 ,1035.不相交的线 ,53. 最大子序和

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 1143.最长公共子序列 题目链接:https://leetcode.cn/problems/longest-common-subsequence/description/ 思路&…

ASP .Net Core ILogger日志服务

🐳简介 ILogger日志服务是.NET平台中的一个内置服务,主要用于应用程序的日志记录。它提供了灵活的日志记录机制,允许开发者在应用程序中轻松地添加日志功能。以下是其主要特点和组件: ILogger接口:这是ILogger日志服…

电脑数据安全新利器:自动备份文件的重要性与实用方案

一、数据安全的守护神:自动备份文件的重要性 在数字化时代,电脑中的文件承载着我们的工作成果、个人回忆以及众多重要信息。然而,数据丢失的风险无处不在,无论是硬件故障、软件崩溃,还是恶意软件的攻击,都…
最新文章