MySQL的主从复制(主从数据库都是Linux版本)

概述

1.什么是主从复制

主从复制是指将主库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持一致。

2.主从复制作用

  • 数据备份:通过主从复制,可以将主数据库的数据复制到一个或多个从数据库中,以实现数据备份和灾难恢复。当主数据库出现故障时,可以快速地将从数据库提升为主数据库,并继续提供服务。

  • 负载均衡:通过主从复制,可以将读操作分发到从数据库上,从而减轻主数据库的负载,提高系统的并发能力和性能。

  • 数据分析:通过主从复制,可以将主数据库中的数据复制到从数据库中进行分析,避免对主数据库产生影响。

  • 高可用性:通过主从复制,可以实现数据库的高可用性,当主数据库出现故障时,可以快速地将从数据库提升为主数据库,保证系统的持续可用性。

3.原理

1、主从同步的过程中,主库会将所有的操作事件记录在 binlog 中,
2、如果binlog 日志发生了变化,主库生成一个 binlog dump 线程向从库 I/O 线程传送 binlog
3、从库上的 I/O 线程将 binlog 复制到自己的 relay log 中
4、最终由从库中的 SQL 线程读取 relay log 中的事件重放到从库上

4.同步策略

  • 异步复制:默认同步方式,客户端在向服务端发送请求后,master 处理完之后,直接返回客户端结果,接着在将对应的 log 信息发送给 slave 节点。主库不会等待从库的确认,因此效率较高。但在主库故障时可能会丢失一部分数据。
  • 半同步复制:master 处理完自身操作,将对应的 binary log 发送给从服务器,从服务器通过 io thread 写入到 relay log 中,然后将结果返回给 master,master 在收到 salve 的响应之后在返回给客户端。这样可以减少数据丢失的可能性,但会增加主库的延迟。
  • 同步复制:主库将变更写入二进制日志后,等待所有从库确认已收到并应用了这些变更,主库才会认为事务提交成功。这样可以确保所有从库与主库的数据完全一致,但会显著增加主库的延迟,并且如果有任何一个从库出现故障或网络延迟,整个系统的性能都会受到影响。
  • 并行复制:在MySQL 5.6及以后的版本中引入了并行复制的功能,可以通过多线程并发地将变更发送给多个从库,从而提高复制性能。

选择适合的主从同步策略需要根据具体的业务需求和系统性能来进行权衡。异步复制适用于对数据一致性要求不高,但对性能要求较高的场景;半同步复制适用于对数据一致性和性能都有一定要求的场景;同步复制适用于对数据一致性要求非常高的场景,但会带来较大的延迟。并行复制可以在高负载情况下提升复制性能。

部署

1.安装

首先安装两台数据库,这里我是采用的虚拟机进行实现就不过多叙述,安装过程可以参考另外一篇博客:Linux(centos)安装 MySQL 8 数据库(图文详细教程)。

2.主数据库修改配置信息

选择一台为主机,修改配置文件信息

vim /etc/my.cnf

添加配置内容

#服务器 id,随意,但要唯一
server-id = 1  
#二进制文件存放路径
log-bin = mysql-bin 
#参数用于排除自带的数据库。  
binlog-ignore-db = mysql 
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#二进制日志格式,建议使用ROW格式以获得更好的兼容性和可靠性。
binlog-format = ROW 

 重启主机服务器

systemctl restart mysqld

配置一个从机连接账户

配置权限账号
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
#授权账号复制权限
GRANT REPLICATION SLAVE ON *.* TO 'test'@'%';
#刷新配置
FLUSH PRIVILEGES;

获取当前二进制日志文件的名称和位置

SHOW MASTER STATUS;

结果需要记录一下,后面从机连接的时候需要使用

3.从数据库配置信息

修改配置文件信息

vim /etc/my.cnf

添加配置信息

#注意和主库的id不一致并且唯一就可以
server-id = 2
#不同步相关的库
replicate-ignore-db = mysql 
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema

重启从数据库

systemctl restart mysqld

 连接主从数据库

参数解释:
MASTER_HOST : 设置要连接的主服务器的ip地址     
MASTER_USER : 设置要连接的主服务器的用户名     
MASTER_PASSWORD : 设置要连接的主服务器的密码    
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即第2步得到的信息  
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即第2步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)

change master to master_host='192.168.137.100',master_user='test',master_password='123456',master_log_file='binlog.000006',master_log_pos=155;

 开启同步

 start slave

查看启动状态

show slave status\G;

下面两项必须都是yes才表示配置成功,否则必须stop slave,检查配置修改正确后再次start slave ,直到都是yes为止。 

测试

在主表增删改,从表也会对应的相关操作,表示成功搭建主从复制。

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

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

相关文章

SQL:学习SQL优化

学习 1.语句 2.原则(三条快速记忆) 3.常见查询类型 试验 本次试验采用SQL表中的world 数据库中city表来试验 1.查询方法 explain SELECT * FROM city where ID>500 limit 10; #1.all查询,主要是因为查询的键不是District,…

新加坡裸机云多IP服务器与跨境外贸业务的适配性

在数字化时代,跨境外贸业务对服务器的需求愈发高标准化、多元化。新加坡裸机云多IP服务器,凭借其独特的优势,成为了跨境外贸等业务的首选。源库主机测评将为您科普新加坡裸机云多IP服务器如何满足跨境外贸等业务的需要。 首先,新加…

工业交换机的好处有哪些?

工业交换机是现代工业网络中不可或缺的重要组成部分,它扮演着连接和管理各种网络设备的关键角色。工业交换机的优点不言而喻,首先是其稳定可靠的性能,能够支撑工业环境下的高负荷工作。无论是在恶劣的温度、湿度或电磁干扰的环境下&#xff0…

【Java】/*类和对象(上)*/

目录 一、什么是类、什么是对象 二、为什么要学习类和对象 三、初识面向过程和面向对象编程 四、如何定义类 4.1 语法形式 4.2 定义示例 示例一:定义一个描述学生的类 示例二:定义一个描述冰箱的类 示例二:定义一个描述狗的类 4.3…

MySQL5个查询

# 总查询 EXPLAIN SELECT * FROM city; # 范围查询 EXPLAIN SELECT * from city where ID>5 and ID<20; #主键查询 EXPLAIN SELECT * from city where ID5; # 索引查询 EXPLAIN SELECT * from city where CountryCodeNLD; # 普通索引 EXPLAIn SELECT * from cit…

7 Series FPGAs Integrated Block for PCI Express IP核简介

7 Series FPGAs Integrated Block for PCI Express IP核是Xilinx公司7系列FPGA中集成的PCI Express&#xff08;PCIe&#xff09;IP核模块&#xff0c;是一个可扩展的、高带宽的、可靠的串行互联构建块&#xff0c;用于与Xilinx的Zynq-7000 SoC和7系列FPGA配合使用。它支持1-la…

【算法】栈——逆波兰表达式求值

题解&#xff1a;逆波兰表达式求值(栈算法) 目录 1.题目2.题意2.1逆波兰表达式2.2向零截断 3.题解4.总结 1.题目 题目链接&#xff1a;LINK 2.题意 这个题目种涉及一些概念&#xff0c;应当适当说一下。 2.1逆波兰表达式 即后缀表达式&#xff0c;是一种数学表达式的表达…

全自动机器学习AutoML高效预测时间序列

大家好&#xff0c;时间序列数据是许多现实世界问题的核心&#xff0c;例如预测能源消耗、气象预报、库存管理。传统上&#xff0c;使用专门的时间序列模型如Prophet来对此类数据进行建模和预测。然而&#xff0c;通过将时间序列数据转换为表格格式&#xff0c;可以利用更广泛的…

【全开源】多场馆场地预定小程序源码(ThinkPHP+FastAdmin+UniApp)

场馆场地预定小程序源码一款基于ThinkPHPFastAdminUniApp开发的多场馆场地预定小程序&#xff0c;提供运动场馆运营解决方案&#xff0c;适用于体育馆、羽毛球馆、兵乒球馆、篮球馆、网球馆等场馆&#xff08;高级版&#xff09;

如何将word插入的形状转成图片(高清)导出?

文章目录 前言&#xff08;不感兴趣可以直接看正文&#xff09;一、新建画布二、插入形状三、复制四、粘贴为图片五、另存为总结 前言&#xff08;不感兴趣可以直接看正文&#xff09; 因为我毕业论文里的图片刚开始使用画图软件画的&#xff0c;但到后期论文即将胶印的时候&a…

HarmonyOS interface router scale pageTransition SlideEffect.Left ArkTS ArkUI

&#x1f3ac;️create Component export default struct TitleBar {build(){Row(){Text(transition).fontSize(30fp).fontColor(Color.White)}.width(100%).height(8%).backgroundColor(#4169E1).padding({left:10})}}&#x1f39e;️interface export interface IList{ti…

EXPLAIN执行计划详解

EXPLAIN 是 MySQL 中的一个非常实用的命令&#xff0c;主要用于分析 SQL 查询语句的执行计划&#xff08;Query Execution Plan&#xff0c;QEP&#xff09;。通过这个命令&#xff0c;用户可以获取到数据库引擎如何执行特定的 SQL 语句的详细信息&#xff0c;这对于优化查询性…

DLRover:蚂蚁集团开源的AI训练革命

在当前的深度学习领域&#xff0c;大规模训练作业面临着一系列挑战。首先&#xff0c;硬件故障或软件错误导致的停机时间会严重影响训练效率和进度。其次&#xff0c;传统的检查点机制在大规模训练中效率低下&#xff0c;耗时长且容易降低训练的有效时间。资源管理的复杂性也给…

Codigger编码场景介绍(二):驾驶舱场景(Cockpit)

Codigger&#xff0c;一个专为开发人员设计的工具&#xff0c;致力于为不同的开发场景提供最佳的切换体验。Codigger囊括了多种场景&#xff0c;如传统场景、调试场景、设计器场景、驾驶舱场景以及纯净场景等。在上一篇文章中&#xff0c;我们介绍了传统场景模式&#xff0c;今…

数据结构_栈在括号匹配中的应用_代码

学习笔记 #include<stdio.h> #include<stdlib.h> #include<string.h>#define MaxSize 10 typedef struct{char data[MaxSize];int top; }SqStack;//初始化栈 void InitStack(SqStack &S){S.top 0; } //判断栈是否为空 bool StackEmpty(SqStack S){if (…

深度学习之基于YoloV5钢材微小缺陷检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与目标 在钢材生产过程中&#xff0c;由于各种因素&#xff0c;钢材表面可能会出现微小缺陷&#xff…

DevOps实践:通过云效实现hexo自动构建部署发布

DevOps&#xff08;Development和Operations的组合词&#xff09;是一组过程、方法与系统的统称&#xff0c;用于促进开发&#xff08;应用程序/软件工程&#xff09;、技术运营和质量保障&#xff08;QA&#xff09;部门之间的沟通、协作与整合。这是一种重视“软件开发人员&a…

如何科学制定个性化健康方案?

随着现代生活节奏的加快&#xff0c;慢性病已经成为困扰许多人的健康难题。在这个信息爆炸的时代&#xff0c;如何科学、有效地管理个人健康&#xff0c;成为了我们每个人必须面对的问题。今天&#xff0c;我们就来探讨一下如何通过一体化解决方案&#xff0c;科学制定个性化健…

接口自动化测试工具-----pytest

首先确保安装了Python环境&#xff0c;首先&#xff0c;你需要确保已安装 Python 和 Pip。如果还没有安装&#xff0c;可以从 Python 官方网站下载并安装最新版本的 Python。安装过程中请确保选中“Add Python to PATH”选项。 安装pytest:打开命令提示符&#xff08;Command …

水面漂浮物生活垃圾识别检测系统

水面漂浮物生活垃圾识别检测系统通过现场监控摄像机对河道湖面等水体进行实时监测&#xff0c;水面漂浮物生活垃圾识别检测系统借助智能视频分析技术和YOLO深度学习技术&#xff0c;系统能够自动识别和抓拍水面上的垃圾漂浮物。一旦系统检测到有垃圾漂浮在水面上&#xff0c;立…