数据传承之道:MySQL主从复制实践指南

news2024/12/23 4:05:39
😊 @ 作者: 一恍过去
💖 @ 主页: https://blog.csdn.net/zhuocailing3390
🎊 @ 社区: Java技术栈交流
🎉 @ 主题: 数据传承之道:MySQL主从复制实践指南
⏱️ @ 创作时间: 2023年08月18日

在这里插入图片描述

目录

  • 前言
  • 1、原理
  • 2、数据库搭建
  • 3、主库搭建配置
  • 4、从库搭建配置

前言

MySQL主从复制是一种数据同步机制,允许将一个MySQL数据库服务器(主服务器)的数据复制到另一个MySQL服务器(从服务器)。这种复制机制为应用程序提供了高可用性、读写分离和数据备份等好处。

主从复制的基本原理如下:

  • 主服务器(Master):主服务器负责处理写操作和更新数据。当主服务器上的数据发生更改时,它将记录这些更改在二进制日志中(Binary Log)。
  • 从服务器(Slave):从服务器负责接收主服务器的数据更新,并将主服务器的二进制日志复制到自己的中继日志(Relay Log)中。
  • 复制过程:从服务器连接到主服务器,并请求复制主服务器的数据更改。主服务器将这些更改发送给从服务器,从服务器接收并应用这些更改,使其数据与主服务器保持同步。
  • 读写分离:由于读操作通常比写操作更频繁,可以在从服务器上处理读取查询,从而分担主服务器的负载,提高整体性能。

尽管主从复制可以提高数据库的可用性和性能,但它并不是解决所有问题的完美方案。在设计和实施主从复制时,还需要考虑一些因素,如延迟、数据一致性、故障恢复等。

Mysql主从同步,要求需要先搭建至少两个mysql实例,一主一从,使用推荐Docker搭建Mysql《Docker部署安装Mysql》

1、原理

在这里插入图片描述
mysql主(称master)从(称slave)复制的原理:

  • master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
  • slave将master的binary log events拷贝到它的中继日志(relay log)
  • slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

主从配置需要注意的地方:

  • 主DB server和从DB server数据库的版本一致
  • 主DB server和从DB server数据库数据一致
  • 主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一

2、数据库搭建

事先搭建好两个数据库,分别为端口3306、3307,并且分别创建数据库test
数据库的容器名称分别为;mysql-3306、mysql-3307;

3、主库搭建配置

主数据库使用docker搭建,端口为3306

1、修改配置文件:

在搭建好基础Mysql以后,修改配置文件,在原有基础上加入如下内容:

[mysqld]
server-id=1  #服务id,不可重复
log-bin=mysql-bin  #开启二进制日志,设置路径
#是否只读,1 代表只读, 0 代表读写
read-only=0
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行(先建好库),不指定则同步整个数据源
binlog-do-db=test
#不同步系统数据库
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

2、重启数据库:

docker restart mysql-3306

4、从库搭建配置

主数据库使用docker搭建,端口为3306

1、修改配置文件:
在搭建好基础Mysql以后,修改配置文件,在原有基础上加入如下内容:

[mysqld]
#服务id,不可重复
server-id=2 
# 开启二进制日志
log-bin=mysql-bin

2、重启数据库:

docker restart mysql-3307

3、获取master相关信息:

在3306端口的主库执行:SHOW MASTER STATUS;查看新的主库信息,结果如下:

在这里插入图片描述

4、从库连接主库配置:

连接语句:

-- 从库SQL语句:
CHANGE MASTER TO 
master_host='162.10.1.35', #主库所在地址
master_user='root', -- 前面主库设置的用户、密码
master_password='123456', 
master_port=3306, -- 主库端口
master_log_file='mysql-bin.000001',  -- 前面主库的File信息
master_log_pos=157; -- 前面主库的Position信息	

启动同步语句:

-- 启动同步 SQL语句:	stop:停止,reset:重启
start slave; 

5、从库状态检测:

检测语句:

show slave status;

效果:

在这里插入图片描述注意: 当Slave_IO_Running 和 Slave_SQL_Running: 均为YES 标识则表示主从同步启动成功;

6、其他操作事项:

查看server相关的配置项:

SHOW GLOBAL VARIABLES LIKE 'server%';

停止主从复制:

stop slave;

重新配置主从:

# 重新配置主从流程,先停止,再重置从库连接主库配置
stop slave;
reset master;
再根据主库信息进行从库配置(SHOW  MASTER STATUS;)

在这里插入图片描述

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

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

相关文章

多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现WOA-CNN-BiGRU-Attention多变量时间序列预测 1.程…

能耗监测管理系统在产业园区中的应用分析

摘要:随着电信公司企业级智能化办公系统的不断迭代优化及财务辅助系统与各个业务系统之间的壁垒不断打破、融合,能耗监测管理系统在企业生产运行管理中,为实现企业能耗数据归集,“节能减排、降本增效”提供了系统支撑及可行性保障…

tkinter高级布局:PanedWindow和notebook

文章目录 PanedWindownotebook tkinter系列: GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框Frame控件💎PanedWindow和notebook控件扫雷小游戏💎强行表白神器 tkinter传统…

小航助学GESP_C++一级模拟测试卷第2套(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…

用Java实现原神抽卡算法

哈喽~大家好,好久没有更新了,也确实遇到了很多事,这篇开始恢复更新,喜欢的话,可以给个的三连,什么?你要白嫖?那可以给个免费的赞麻。 🥇个人主页:个人主页​​…

Android DataStore:安全存储和轻松管理数据

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、使用3.1 Preferences DataStore添加依赖数据读…

深度解析 Llama 2 的资源汇总:不容错过

“ 探索 Llama 2 背后的过程,包括了模型的全面解析,在线体验,微调,部署等,这份资源汇总将带您深入了解其内涵。” 01 — 周二发布了文章《中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用》后,不少朋友们…

【Unity小技巧】Unity自制对象池和官方内置对象池的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 发明对象池的人绝对是个天才,游戏中我们常常会遇到,频繁创建和销毁大量相同对象的场景,例如敌人子弹 如果我们不做任何处理,只是单纯的创建…

(stm32)低功耗模式

低功耗模式 执行哪个低功耗模式的程序判断流程 标志位设置操作一定要在WFI/WFE之前,调用此指令后立即进入睡眠判断流程 模式对比 睡眠模式 停止模式 待机模式

“绿心之眼”串联起“三大建筑”

本报记者 赵鹏 实习记者 池阳 通讯员 董浩程 步入夏末秋初的城市绿心森林公园,远远便看到在“三大建筑”间有块地面已悄然隆起,如同破土“种子”般正加速“萌发”。这枚生命之“种”泛着钢铁的颜色,一根根钢管编织起来,用叶脉的纹…

c语言每日一练(9)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

定位服务器CPU爆满的具体原因

1、查询CPU消耗的进程 使用top命令查看系统的CPU和内存使用情况 CPU一列是线程占用百分比 2、具体查看某个占分比大的进程 以为PId:7355为例, 执行top -Hp 7355,线程按照CPU使用率排序。 3、将线程PID转化为16进制 执行printf %x 7391,将…

三维模型OSGB格式轻量化重难点分析

三维模型OSGB格式轻量化重难点分析 在三维模型应用中,为了适应移动设备的硬件和网络限制等问题,OSGB格式轻量化处理已经成为一个重要的技术手段。但是,在实际应用中,OSGB格式轻量化仍然存在着一些重难点问题。下面将对这些问题进行…

视频云存储/安防监控/视频汇聚EasyCVR平台新增设备经纬度选取

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

Spring Clould 部署 - Docker

视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) 初识Docker-什么是Docker(P42,P43) 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&…

两个案例熟悉String的基本操作

1、第一个案例 Java语言规范要求完全相同的字符串字面量,应该包含同样的Unicode字符序列(包含同一份码点序列的常量),并且必须是指向同一个String类实例。 package string; public class StringTest4 {public static void main(St…

【3Ds Max】挤出命令的简单使用(实现二维变三维)

简介 在3ds Max中,"挤出"(Extrude)是一种常用的建模操作,用于在平面或曲面上创建立体几何形状。以下是使用3ds Max中的挤出命令的基本步骤: 创建基本几何形状: 在3ds Max中创建一个基本的几何形…

免费开源的vue+express搭建的后台管理系统

此项目已开源 前端git地址:exp后台管理系统前端: exp后台管理系统前端 后端git地址:express后台管理系统: express后台管理系统 安装运行 npm i yarn i 前端: npm run dev | yarn dev 后端: npm run start | yarn start 主要技术栈 前端后端名称版本名…

Ant Design Pro 前端脚手架 配置混合导航

Ant Design Pro脚手架 点击查看阅读 混合导航: 顶部导航和侧边栏导航实现联动效果,点击不同的顶部导航按钮会显示对应的子菜单项。 实现点: 1. 路由的配置 菜单展示 我们可以在 route 中进行 menu 相关配置,来决定当前路由是否…

传递给Java方法的参数必须完成初始化

说明 在调用Java方法的时候,传递给方法的参数必须经过初始化,否则会编译报错。 指向对象的变量,指向一个对象实例就是初始化;赋值为null也是初始化。 代码示例 没有初始化的变量传递给方法编译报错,初始化的编译通过…