MySQL主从复制详细介绍

news2025/1/19 22:12:57

一、主从复制的目的

​ MySQL内建的复制功能是构建基于MySQL的大规模、高性能应用的基础,复制功能的目的是构建高性能的应用,同时也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。比较常见的用途有以下几种:

数据分布:备份特定数据库

负载均衡:读写分离

高可用性和故障切换:从库的存在可以缩短宕机时间

MySQL升级测试:使用一个更高版本的MySQL作为备库,保证在升级全部实例前,查询能够在备库按照预期进行

二、主从复制的原理和步骤

​ 简单的说就是master将数据库的改变写入binary log二进制日志,这个日志会记录下所有修改了数据库的SQL语句(insert,update,delete,grant等),slave同步这些二进制日志,并根据这些二进制日志进行数据操作,其实就是把主服务器上的binary log复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

整体来说,主从复制有以下步骤:

1.主节点必须启用二进制日志,记录任何修改数据库数据的事件。

2.从节点开启一个线程I/O Thread把自己扮演成mysql的客户端,通过mysql协议,请求主节点的二进制日志文件中的事件

3.主节点启动一个线程(dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点。

4.从节点接收到主节点发送过来的数据把它放置到中继日志(Relay log)文件中。并记录该次请求到主节点的具哪个二进制日志文件的哪个位置。

5.从节点启动另外一个线程(sql Thread ),把replaylog中的事件读取出来,并在本地再执行一次。

其原理图如下:

图片

三、复制中线程的作用

从节点:

I/O Thread:从Master请求二进制日志事件,并保存于中继日志中。

Sql Thread:从中继日志中读取日志事件,在本地完成更新。

主节点:

Dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向从节点发送二进制事件。
如果从节点需要作为其他节点的主节点时,是需要开启二进制日志文件的。这种情况叫做级联复制。如果只是作为从节点,则不需要创建二进制文件。

四、主从复制配置过程

主节点:

1.启用二进制日志。

2.为当前节点设置一个全局唯一的server_id。

3.创建有复制权限的用户账号 replication slave。

从节点:

1.启动中继日志。

2.为当前节点设置一个全局唯一的server_id。

3.使用有复制权限的用户账号连接至主节点,并启动复制线程。

4.1 测试环境

图片

4.2 主节点配置过程

4.2.1 编辑主节点配置文件

在Centos中打开my.cnf文档:

图片

· 添加:log-bin = mysql-bin(开启二进制日志)

· 添加:server-id =4(设置服务器id,主节点和从节点的id需要设为不同)

· 添加:binlog-do-db=DBAs(确定需要同步的数据库)

· 添加:binlog-ignore-db=mysql(此处可以实际需求添加需要忽略的数据库)

· 添加:expire_logs_days=7(自动清理 7 天前的log文件,可根据需要修改)

图片

4.2.2 启动主节点mysql服务,并连接mysql

正常情况下,mysql服务启动命令为:

为了更方便的启动mysql服务,为mysql创建软连接

此时,启动命令变为:

图片

4.3.4 在从节点配置访问主节点的参数信息
添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。

命令:

此处的master_log_file和master_log_pos需要和主节点状态保持一致。

图片

4.3.5 查看从节点的状态信息
因为没有启动 从节点的复制线程,I/O线程和SQL 线程都为NO.

图片

使用start slave命令启动从节点的复制线程,再利用show slave status命令查看当前的从节点状态。

图片

4.4 功能测试

查看主节点的状态,

图片

2)在从节点查找二进制日志信息,并查看mydb数据库是否复制成功

图片

最后在从节点上查看数据是否已经同步,命令:

图片

经过验证,证明主从复制同步成功!!!

五、错误排查总结

5.1 Connecting错误

操作过程中有时候出现如下所述错误:

图片

排错思路如下:

1.二进制日志没有开启

2.IPTABLES 没有放开端口

3.对应的主机 IP地址写错了

实际操作:关闭主节点防火墙,重新开启从节点,即可连接上。

5.2 Slave_SQL_Running:NO

​ 操作过程中还出现了如下所示的从节点的SQL线程运行错误

图片

排错思路如下:

  1. 查看是否使用了nat的网络结构到导致网络有问题,连接不上。
  2. 有可能my.cnf有问题,配置文件
  3. 授权的问题,replication slave和file权限是必须的。

实际情况,换工位后网络IP出现问题,连接不上,重新配置网络之后问题解决。

节点,即可连接上。

5.2 Slave_SQL_Running:NO

​ 操作过程中还出现了如下所示的从节点的SQL线程运行错误

排错思路如下:

  1. 查看是否使用了nat的网络结构到导致网络有问题,连接不上。
  2. 有可能my.cnf有问题,配置文件
  3. 授权的问题,replication slave和file权限是必须的。

实际情况,换工位后网络IP出现问题,连接不上,重新配置网络之后问题解决。

关于MySQL主从复制,你学废了么?


真诚地邀请您加入我们的大家庭.
在这里不仅有技术知识分享,还有博主们之间的互帮互助
不定期发红包,每月更有抽奖环节,游戏机和实体书相赠(包邮)
让我们抱团取暖,抱团内卷.打造美好C站.期待您的加入.
备注 : CSDN-xxxxxx (xxxxxx代表你csdn的昵称)

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

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

相关文章

APP渗透—查脱壳、反编译、重打包签名

APP渗透—查脱壳、反编译、重打包签名 1. 前言1.1. 其它 2. 安装工具2.1. 下载jadx工具2.1.1. 下载链接2.1.2. 执行文件 2.2. 下载apktool工具2.2.1. 下载链接2.2.2. 测试 2.3. 下载dex2jar工具2.3.1. 下载链接 3. 查壳脱壳3.1. 查壳3.1.1. 探探查壳3.1.2. 棋牌查壳 3.2. 脱壳3…

【MiniGPT-4】手把手教部署

最近MiniGPT4开源了,获得了很多网友好评,在Github上获得了1.6万的star,它相比ChatGPT3.5来说,可以实现图片识别,生成想要的文本效果,理解能力非常强。 论文地址:https://github.com/Vision-CAIR…

【大数据之Hadoop】二十一、MapReduce、HDFS、Yarn配合工作(作业提交全过程)

1-11、26为Yarn;12-17为HDFS写数据流程;18-25、27-31为MapReduce;19-25为Shuffle;32-41为HDFS写数据流程。 (0)MR程序提交到客户端所在的节点,在集群模式中运行MR程序,当运行到主函…

数学建模第七天:数学建模算法篇之插值及MATLAB实现

目录 一、前言 1、引例 2、拟合定义 3、拟合与插值的关系 二、拟合 1、线性最小二乘法求解 ①思路 ②解法 2、MATLAB对线性最小二乘拟合的实现 ①函数说明 ②求解例题 3、MATLAB实现非线性曲线拟合 ①lsqcurvefit函数 ②代码求解 4、MATLAB实现非线性最小二乘拟…

华为2023暑期笔试(2-2)——最近最少使用(LRU, Least recently used)缓存算法

目录 题目内容解答要求(解答要求限制了只能使用LRU)输入描述样例思路代码 题目内容 你是一名网络工程师,你正在为一家云计算公司开发一个虚拟机管理系统。你的系统需要为每个虚拟机分配一个唯一的ID,用来标识和通信。为了实现这个…

C++基础demo(C++入门基础案例)

C入门基础案例学习与了解 demo16 计算年份是否为闰年(各种运算符结合)demo17 打印ASCII码表demo18 求完数demo19 密码验证(if……else)demo20 图书管理(if…else if…else)demo21 信号灯(和--&a…

python中使用ctypes库调用使用MMDeploy C++ SDK编译得到的dll文件时,出现WinError126的解决方法

之前,通过以下两篇文章,着重介绍了,使用openMMLab开发的MMDeploy库对MMxx系列仓库训练得到的权重pth转换得到的onnx,并分别使用python SDK和C SDK进行调用的详细步骤: 使用MMDeploy(预编译包)转…

Enterprise:如何在 Elastic 企业搜索引擎中添加对更多语言的支持

作者:Ioana-Alina Tagirta Elastic App Search 中的引擎(engines)使你能够索引文档并提供开箱即用的可调搜索功能。 默认情况下,引擎支持预定义的语言列表。 如果你的语言不在该列表中,此博客将说明如何添加对其他语言…

RabbitMQ笔记

一、MQ与RabbitMQ概述 1. MQ简述 MQ(Message Queue)消息队列,是基础数据结构中 “先进先出” 的一种数据结构,也是在消息的传输过程中保存消息的容器(中间件),多用于分布式系统之间进行通信。 …

[Pandas] 设置DataFrame的index索引起始值为1

导入数据 import pandas as pddf pd.DataFrame([[liver,E,89,21,24,64],[Arry,C,36,37,37,57],[Ack,A,57,60,18,84],[Eorge,C,93,96,71,78],[Oah,D,65,49,61,86]], columns [name,team,Q1,Q2,Q3,Q4]) df 上述DataFrame中的index索引列默认是从0开始的,那么我们…

【Spark】Spark是什么?能干什么?有什么特点?

一、什么是Spark 官网:http://spark.apache.org Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters. Spark是一种快速、通用、可扩展的大数据分析引擎&#xf…

MATLAB连续LTI系统的时域分析(十)

目录 1、实验目的: 2、实验内容: 1、实验目的: 1)掌握利用MATLAB对系统进行时域分析的方法; 2)掌握连续时间系统零输入响应的求解方法; 3)掌握连续时间系统零状态响应、冲激响应和…

AD9739配置解析与数据输出指南

1 概述 本文用于AD9737芯片的配置使用情况,以及数据输出的格式说明情况,数据速率的计算情况等。 AD9739是ADI公司的一款14BIT,可达2.5GSPS采样率的DAC芯片。 2 AD9739的性能 支持的输入数据速率:1.6GSPS TO 2.5GSPS. industry lea…

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记 论文原文链接:https://ieeexplore.ieee.org/abstract/document/9039804 本笔记对部分要点进行了翻译和批注,原文和翻译可参考链接阅读,此处不进行完整翻译。 论文…

【服务网格】Service Mesh 是什么?为我们解决了什么问题?

文章目录 背景一、Service Mesh 介绍Service Mesh的定义Service Mesh 诞生 二、Service Mesh 解决的问题三、Service Mesh 的原理四、Service Mesh具体是怎么实现的?Istio是什么?istio架构和主要功能Istio 1.5.1 性能总结Istio与Kubernetesistio的实战案…

四、MyBatis获取参数值的两种方式(重点)

文章目录 四、MyBatis获取参数值的两种方式(重点)4.1 单个字面量类型的参数4.2 多个字面量类型的参数4.3 map集合类型的参数4.4 实体类类型的参数4.5 使用Param标识参数 四、MyBatis获取参数值的两种方式(重点) MyBatis获取参数值…

IP-GUARD屏幕记录能实现平时不记录,特定操作触发记录吗?

支持触发性屏幕记录。部分策略有选项“记录屏幕”,勾选后,策略触发时,会自动记录客户端当时的屏幕情况,记录次数和间隔可通过配置修改。 所有包含了记录屏幕的策略有: 应用程序、上网浏览、流量控制、网络控制、邮件控制、IM传送控制、上传控制、文档控制、打印控制、敏感…

深浅拷贝,类型检测及继承面试题

01 对象的深/浅拷贝 1.1 变量的存储 基本类型:基本类型的值存在栈内存中 引用类型: 引用类型的地址存储在栈内存中,他的值存储在堆内存中,通过指针(地址)连接 1.2 变量拷贝 基本类型:基本类型拷贝的是值 引用类型…

达梦数据库中,如何设置表的访问控制权限?

在工作中,大家都会遇到这样的场景,出于对数据库访问安全的考虑,对于某些用户我们不想让他们看到全库的表,只想给他们特定表的访问权限。那么在DM数据库中我们该如何去配置相应的权限呢? 我们下面来进行详细解析。 我们…

buuctf6

目录 [ACTF2020 新生赛]BackupFile [RoarCTF 2019]Easy Calc 利用PHP的字符串解析特性Bypass: http走私攻击 来首歌吧 荷兰宽带数据泄露​编辑 面具下的flag [ACTF2020 新生赛]BackupFile 1.打开环境 查看源代码得不到任何想要的信息,使用目录扫描来得到我们…