Mysql5.7主从复制搭建

注意不适用Mysql8

Docker搭建Mysql主从复制

docker run -p 3307:3306 --name mysql-master \
-v /usr/local/develop/mysql-master/log:/var/log/mysql \
-v /usr/local/develop/mysql-master/data:/var/lib/mysql \
-v /usr/local/develop/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

如果没有mysql5.7会自动下载

进入配置文件目录

cd /usr/local/develop/mysql-master/conf

创建并编辑配置文件

vim my.cnf

[mysqld]

# 设置server_id,同一局域网中需要唯一,对复制架构至关重要
server_id=101

# 指定不需要同步到从库的数据库名称,一般系统数据库mysql不需要同步
binlog-ignore-db=mysql

# 开启二进制日志功能,是MySQL复制的基础
log-bin=mall-mysql-bin

# 设置二进制日志使用的内存大小,用于缓存事务,提高性能
binlog_cache_size=1M

# 设置使用的二进制日志格式,推荐使用"row",因为它是最安全的,能准确复制每一行的变更
# mixed模式下,MySQL会根据操作类型自动选择statement模式还是row模式
binlog_format=mixed

# 二进制日志过期清理时间,设置为7天。0表示不自动清理,不推荐这样做,因为会积累大量日志
expire_logs_days=7

# 跳过主从复制中遇到的指定类型的错误,避免从库复制中断
# 注意:过度使用该设置可能会导致数据不一致,应谨慎使用
slave_skip_errors=1062
 

修改完配置  重启mysql docker容器实例

docker restart mysql-master

进入容器

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

创建数据同步用户 并赋予权限

CREATE USER 'replica'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%';

刷新

FLUSH PRIVILEGES;(不刷也可以)
 

在宿主机上搭建从服务器

docker run -p 3308:3306 --name mysql-slave \
-v /usr/local/develop/mysql-slave/log:/var/log/mysql \
-v /usr/local/develop/mysql-slave/data:/var/lib/mysql \
-v /usr/local/develop/mysql-slave/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

进入

cd /usr/local/develop/mysql-slave/conf

创建并编辑从数据库配置

vim my.cnf

[mysqld]

# 设置server_id,同一局域网中需要唯一,对复制架构至关重要
server_id=102

# 指定不需要同步到从库的数据库名称,一般系统数据库mysql不需要同步
binlog-ignore-db=mysql

# 开启二进制日志功能,以备Slave作为其他数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin

# 设置二进制日志使用的内存大小,用于缓存事务,提高性能
binlog_cache_size=1M

# 设置使用的二进制日志格式,推荐使用"row",因为它是最安全的,能准确复制每一行的变更
# mixed模式下,MySQL会根据操作类型自动选择statement模式还是row模式
binlog_format=mixed

# 二进制日志过期清理时间,设置为7天。0表示不自动清理,不推荐这样做,因为会积累大量日志
expire_logs_days=7

# 跳过主从复制中遇到的指定类型的错误,避免从库复制中断
# 注意:过度使用该设置可能会导致数据不一致,应谨慎使用
slave_skip_errors=1062

# 配置中继日志
relay_log=mall-mysql-relay-bin

# 表示slave将复制事件写进自己的二进制日志
log_slave_updates=1

# 将slave设置为只读(具有SUPER权限的用户除外)
read_only=1
 

修改完配置  重启mysql docker容器实例

docker restart mysql-slave

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

进入主库

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

show master status;

返回宿主机

在从数据库配置主从复制  查看主从状态

docker exec -it mysql-slave /bin/bash

mysql -uroot -p

123456

在从数据库配置主从复制

change master to master_host="宿主机IP",master_user='replica',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=714,master_connect_retry=30 因为我这里是同一台ECS服务器  所以用下面这个

CHANGE MASTER TO 
  MASTER_HOST = '172.17.0.2',
  MASTER_USER = 'replica',
  MASTER_PASSWORD = '123456',
  MASTER_PORT = 3306,
  MASTER_LOG_FILE = 'mall-mysql-bin.000001',
  MASTER_LOG_POS = 621,
  MASTER_CONNECT_RETRY = 30;
 


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

show slave status \G;   \G可加可不加  加了看的清楚点

在从数据库开启主从同步

start slave;

查看从数据库状态发现是否同步

show slave status \G;

 如果不成功 用这个命令停掉  检查配置    STOP SLAVE;

测试  退出从库

进入主库

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

查看从库

docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

总结:其实没必要配置外部端口  如果是单台服务器的话

注意mysql5.7中文乱码

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

个人健康|个人健康管理小程序|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)

个人健康管理小程序目录 目录 基于微信小程序的个人健康管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 (1)用户信息管理 (2)运动教程管理 (3)公告…

JAVA毕业设计129—基于Java+Springboot+thymeleaf的物业管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootthymeleaf的物业管理系统(源代码数据库)129 一、系统介绍 本项目前后端分离,本系统分为管理员、小区管理员、用户三种角色 1、用户: 登…

2024最新互联网大厂面试题,(java,python,vue)

最近又赶上跳槽的高峰期,好多粉丝,都问我要有没有最新面试题,索性,我就把我看过的和我面试中的真题,及答案都整理好,整理了《第3版:互联网大厂面试题》并分类150份 PDF,累计 7701页&…

Go语言基础总结

一、Go语言结构 包声明 引入包 函数 变量 语句&表达式 注释 下面简单给出hello.go文件。 package src /*定义包名*/import "fmt" /*引入包*/func hello() { /*函数*/fmt.Println("Hello,World!") /*语句&表达式*/fmt.Println("菜鸟教…

Spring Security源码学习

Spring Security本质是一个过滤器链 过滤器链本质是责任链设计模型 1. HttpSecurity 【第五篇】深入理解HttpSecurity的设计-腾讯云开发者社区-腾讯云 在以前spring security也是采用xml配置的方式&#xff0c;在<http>标签中配置http请求相关的配置&#xff0c;如用户…

数据安全之路:深入了解MySQL的行锁与表锁机制

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 数据安全之路&#xff1a;深入了解MySQL的行锁与表锁机制 前言基础innodb中锁与索引的关系如何避免表锁 前言 在当今数据密集的应用中&#xff0c;数据库锁成为了确保数据一致性和并发操作的关键工具…

React18原理: React核心对象之Update、UpdateQueue、Hook、Task对象

Update 与 UpdateQueue 对象 1 ) 概述 在fiber对象中有一个属性 fiber.updateQueue是一个链式队列&#xff08;即使用链表实现的队列存储结构&#xff09;是和页面更新有关的 2 &#xff09;Update对象相关的数据结构 // https://github.com/facebook/react/blob/v18.2.0/pa…

linux单机巡检脚本并发送邮箱的巡检报告

#!/bin/bash # Author: HanWei # Date: 2020-03-16 09:56:57 # Last Modified by: HanWei # Last Modified time: 2020-03-16 11:06:31 # E-mail: han_wei_95163.com #!/bin/bash #安装mail yum -y install mailx#主机信息每日巡检IPADDR$(ifconfig eth0|grep inet addr|aw…

项目打包提示一堆 ts 类型错误问题解决

问题 vue3 ts 项目在打包的过程中报了一大堆 ts 类型错误提示&#xff0c;如下图所示&#xff1a; 报错&#xff1a;Could not find a declaration file for module … implicitly has an ‘any’ type. 解决方法 查看 package.json 文件&#xff0c;可以看到&#xff0c;默…

基于qt的图书管理系统----04sql功能开发

参考b站&#xff1a;视频连接 源码github&#xff1a;github 目录 1 封装一个全局的对象2 设计所有接口2.1 初始化数据库接口2.2 登陆接口2.3 条件查询用户接口 1 封装一个全局的对象 新建一个cclass&#xff0c;sqlmange&#xff0c;并且在.pro文件中添加上sql 使用c单例模…

软件运维维保服务方案-套用模板

软件运维维保方案-套用模板 项目情况 1.1 项目背景简述项目的来源、目的和重要性。说明项目的规模、预算和预期目标。 1.2 项目现状分析当前系统/软件的运行状态、存在的问题和潜在风险。提供最近一次的维护报告或相关统计数据。服务简述 2.1 服务内容明确运维服务的具体内容&…

华为 OD 一面算法原题

2.2 亿彩票公布调查结果 昨天&#xff0c;闹得沸沸扬扬的《10 万中 2.2 亿》的彩票事件&#xff0c;迎来了官方公告。 简单来说&#xff0c;调查结果就是&#xff1a;一切正常&#xff0c;合规合法。 关于福利彩票事件&#xff0c;之前的推文我们已经分析过。 甚至在后面出现《…

深度强化学习(DRL)算法 附录 6 —— NLP 回顾之预训练模型篇

Self-Attention 模型结构 上图架构以 batch_size 为 1&#xff0c;两个时间步的 X 为例子&#xff0c;计算过程如下&#xff1a; 位置编码 根据 self-attention 的模型结构&#xff0c;改变 X 的输入顺序&#xff0c;不影响 attention 的结果&#xff0c;所以还需要引入额…

FreeRTOS学习第8篇--同步和互斥操作引子

目录 FreeRTOS学习第8篇--同步和互斥操作引子同步和互斥概念实现同步和互斥的机制PrintTask_Task任务相关代码片段CalcTask_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第8篇–同步和互斥操作引子 本文目标&#xff1a;学习与使用FreeRTOS中的同步和互斥操…

【MySQL】学习和总结联合查询

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OPj5g6evbkm5ol0U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

从零实现一套低代码(保姆级教程)【后端服务】 --- 【22】实现数据库管理的前端页面

摘要 在上一篇中&#xff0c;我们实现了三个接口&#xff1a; 新增实体的接口删除实体的接口获取实体列表的接口 其实复杂的地方在于&#xff0c;我们创建一个实体&#xff0c;是在数据库中创建了一张表。而这张表中的数据&#xff0c;是要根据低代码平台中的操作进行更改。…

嵌入式学习-qt-Day1

嵌入式学习-qt-Day1 一、思维导图 二、作业 1.自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//字体设置QFont font1;//创建字体对象1font1.setWeight(QFont::Bold);//字体…

魔改Mac OS渗透测试工具箱!

简介 本工具箱为v1版本&#xff0c;由"森然"师傅进行二开。 通过Python进行调用&#xff0c;并实现图形化界面。 参考&#xff1a;狐狸工具箱&#xff0c;闲客工具箱 环境以及工具 综合了常用的几个工具 适配Mac、Windos、Linux用户 注意&#xff1a;自带的jav…

HTTP 与HTTPS笔记

HTTP 80 HTTP是一个在计算机世界里专门在【两点】之间【传输】文字、图片、音频、视频等【超文本】数据的约定和规范。 HTTP状态码 1xx 提示信息&#xff0c;表示目前是协议处理的中间状态&#xff0c;还需要后续的操作&#xff1b;2xx 200 204 026 成功3xx 重定向&#xff…

仿12306校招项目业务二(列车检索)

目录 验证数据 加载城市数据 查询列车站点信息 查询列车余票信息 构建列车返回数据 12306 项目中列车数据检索接口路径 &#xfeff; TicketController的pageListTicketQuery&#xfeff;。 GetMapping("/api/ticket-service/ticket/query")public Result<T…