第2讲 配置和管理复制拓扑

news2026/3/16 9:39:02
目录1.什么是MySQL复制何时使用MySQL复制1概念2应用场景【1】水平横向扩展【2】商业智能与分析在正式介绍其用途前我们先理清两个概念---OLTP和OLAP2.为什么配置复制不能用socket通信3.如何配置复制主服务器1启用TCP/IP网络2启用二进制日志3创建具有复制权限的用户4备份主数据库作为从属服务器开始复制的起点5如果不使用GTID全局事务唯一标识则记录日志坐标一般生产中都会用到4.如何配置从属服务器1从主服务器备份恢复2在每个从属服务器上发出CHANGE_MASTER TO语句包含3执行备份后立即在主服务器上执行SHOW_MASTER_STATUS4若采用多源复制在CHANGE_MASTER TO语句时还应该添加FOR CHANNEL语句区分主服务器的传输通道5.简要介绍复制过滤规则6.分析异步复制和同步复制7.简述二进制日志工作方式8.什么是故障安全复制1二进制日志是故障安全的2将从属服务器状态日志存储在表中以进行故障安全复制1.什么是MySQL复制何时使用MySQL复制1概念MySQL复制是指使服务器将更改复制到另一个实例。依靠主服务器master将所有数据和结构更改记录到二进制日志中、从属服务器slave从主服务器请求二进制日志并在本地应用其内容和中继从属服务器作为一个从属服务器的主服务器来实现。主/从属服务器是一对多的关系它可以构建出三种复杂的拓扑结构双向拓扑、循环拓扑、多源复制。双向拓扑表示在两个主服务器中每个主服务器都是另一个主服务器的从属服务器循环拓扑结构里任意数量的服务器中每个主服务器且是另一个主服务器的从属服务器、对任何主服务器的更改都将复制到其他主服务器且并非每个从属服务器都必须是主服务器多源复制允许一个从属服务器接收来自多个主服务器的事务。对于这种复杂的拓扑结构存在明显的复制冲突每个服务器上冲突行的最终值由每个主服务器上应用事件的顺序有关所以应该尽量避免。2应用场景【1】水平横向扩展当服务器需要通过增加更多的节点来分担请求压力从而提升系统的整体处理能力吞吐量时我们需要采用MySQL复制。并且客户机的写操作应发送到复制主服务器只有一台服务器接收写操作以避免冲突读取操作应分布在配置负载均衡的从属服务器之间。这里你可能会有疑惑我本来业务都够多了我还要新增这么多设备还要同步数据这工作量不就不减反增了吗就比如你开一家奶茶店一开始你只有1个店员那么高峰期就会一直排队假设1个店员每5分钟能处理1个业务那10个客户就要花费50分钟。但如果你又新开了两家店每店一个店员那么50分钟它们能处理30个客户虽然工作效率没变甚至可能因为要在后台中同步账单花费更多时间但整体上能同时处理的业务量更多了吞吐能力单位时间内系统能够成功处理的数据量或请求数更强【2】商业智能与分析在正式介绍其用途前我们先理清两个概念---OLTP和OLAP高并发与高吞吐之间存在冲突因为高并发要求快速响应其实现逻辑可以参照Linux专栏中对于进程管理章节的描述它适合处理大量短小快速、高交互性、频繁读取IO的请求。但对于单个请求可能扫描几百万行数据进行复杂聚合排序连接的需要占用大量内存和CPU计算量要求高要求尽量短时间处理更多的量。如果让高吞吐任务在高并发系统中运行它会吞走所有CPU和IO资源造成等待甚至卡死所以高并发和高吞吐之间需要做好协调。对于一个电商系统为了应对白天用户疯狂下单、支付、查询库存等操作需要及时响应避免卡死造成数据丢失所以采用高并发场景这种称为事务型系统OLTP。对于夜间查看报表、用户行为分析等高吞吐的复杂查询处理采用分析型系统OLAP。商业智能BI查询需要从订单表、商品表、事件维度等多个大表中读取数百万甚至上亿行数据吞吐量高全表扫描和复杂连接占用大量资源容易造成死锁现象。而MySQL复制技术让主库只处理高并发的交易写从库处理高吞吐的分析读实现“负载隔离将不同类型的业务负载分离开来运行在不同的数据库节点或实例上”保证了交易系统的稳定工作。【3】地理数据分布使用本地应用程序为本地用户提供服务用户的数据缓存或存储在本地节点上这样用户请求时直接访问本地服务器集群写的是主服务器减少网络传输距离降低延迟。并将与位置无关的数据复制到其他地方的从属服务器数据下发和数据汇总各地与本部间是多源复制关系【4】特定分析使用BLACKHOLE存储引擎存储引擎是和表绑定的该存储引擎特点就是只记录日志修改记录但是不存储数据即写入结果你从属服务器要给我存储但我只记录改了些啥数据给丢弃了进行中继服务器上的复制时中继服务器把业务扔给从属服务器跑但自己只记录修改历史。但如果写过程故障可能导致数据丢失但从属服务器损坏可以通过迁移日志解决【5】高可用性在多台服务器间提供冗余并实施受控切换硬件或系统升级期间使用副本代替生产服务器或滚动升级从属服务器版本必须比主服务器新。2.为什么配置复制不能用socket通信套接字socket是用于两个进程间的通信服务器往往在不同设备上它们的文件系统不一样无法实现通信所以只能用tcp通信3.如何配置复制主服务器1启用TCP/IP网络2启用二进制日志在复制过程中每个主服务器将其日志内容发送到每个从属服务器3创建具有复制权限的用户第一个*表示任何库第二个*表示任何表。用户名后面加和主机名是因为在数据库中有些服务器可能用作特殊处理所以有些用户需要被限制登录加主机名用户就只能在特定从属服务器上登录mysql CREATE USER userslave_hostname IDENTIFIED BY password; mysql GRANT REPLICATION SLAVE ON *.* TO userslave_hostname;4备份主数据库作为从属服务器开始复制的起点这个意思就是你需要确保分配给从属服务器任务前让其同步主服务器的历史数据确保它能知道怎么操作及处理的对象5如果不使用GTID全局事务唯一标识则记录日志坐标一般生产中都会用到GTID记录在复杂系统中一个事务到底是在哪个机器上最早执行的每个服务器都有一个server_uuid标识的UUID怎么查看SELECT server_uuid\G加上它的事务编号构成GTID这样通过GTID用户就能知道复制顺序。同时设置了GTID的话进行故障转移时只需在从属服务器上发出单个CHANGE MASTER TO语句即可绕过主服务器系统会自动判断是否应用事件能有效减少数据不一致性出现使用以下选项可以设置GTIDgtid-modeON启动GTID复制功能enforce-gtid-consistency所以在主服务器上执行的事务必须是能被正确记录和复制的不能有非确定操作log-slave-updates将从属服务器接收到的复制事件记录到二进制日志4.如何配置从属服务器1从主服务器备份恢复若使用GTID后面我都只按使用GTID来讨论验证是否设置了gtid_purged变量2在每个从属服务器上发出CHANGE_MASTER TO语句包含【1】主服务器的网络位置MASTER_HOST和 MASTER_PORT【2】具有复制权限的用户名及其口令MASTER_USER和MASTER_PASSWORD【3】MASTER_AUTO_POSITION13执行备份后立即在主服务器上执行SHOW_MASTER_STATUS查看日志文件及其坐标确保备份后主服务器上没有用户活动保证日志坐标是备份前最后一个事件的坐标4若采用多源复制在CHANGE_MASTER TO语句时还应该添加FOR CHANNEL语句区分主服务器的传输通道5.简要介绍复制过滤规则当环境中不同服务器有不同目的时我们会采用过滤规则。例如专用于显示Web内容的服务器不需要从主服务器复制支付记录一样主服务器要是有300张表有200张表执行过修改从属服务器复制时只想要与自己业务相关的50张这样我们就想能不能让通往从属服务器的日志减少。 MySQL使用复制过滤器控制复制范围过滤器是应用于主服务器或从属服务器的服务器选项在主服务器是从源头上使用binlog-*过滤器从属服务器是应用replicate-*过滤器读取中继日志。过滤优先级为数据库过滤器replicate-do-db-do-表示只复制某部分, binlog-do-dbreplicate-ignore-db-ignore-表示不会复制某部分, binlog-ignore-db表过滤器replicate-do-table, replicate-wild-do-table-wild-表示使用通配符要匹配的replicate-ignore-table, replicate-wild-ignore-table使用通配符的数据库或表过滤器*-do-*过滤器*-ignore-*过滤器6.分析异步复制和同步复制异步复制是master上的bingo转储线程把二进制日志发送给从属服务器从属服务器上的IO线程接收后放到中继日志中里面有SQL线程应用该过程某一环节出故障后会造成数据库的数据不同步这在生产上需要避免的因此更常用同步和半同步复制。半同步复制是在异步复制基础上添加了一个插件只有至少一个从属服务器也和主服务器一样提交事务后不再阻止主服务器。这样能保证数据完整性但是牺牲了性能7.简述二进制日志工作方式二进制日志包含基于行和记录和基于语句从记录基于行的记录会把修改的所有行插入到从属服务器它的传输效率低且必须确保主从服务器使用相同的表结构基于语句的记录是在从属服务器上执行语句去修改行它的传输效率高且便于审计但是不能保证非确定性语句在远程机器上正确重放。它的恢复方式是一种是让你恢复到错误发生前任意时间点的方式一种是从备份时刻到当前时刻的完整数据重建。此外二进制日志通过轮转的方式自动管理何时应该生成新的二进制日志文件。轮转在MySQL重启、达到max_binlog_size值或发出FUSH LOGS语句时发生。可以通过使用SHOW BINARY LOGS或SHOW MASTER STATUS检查元数据或mysqlbinlog检查内容8.什么是故障安全复制它体现在两方面1二进制日志是故障安全的MySQL仅记录完成的事务避免不确定状态发生同时使用sync-binlog提高安全性。sync-binlog1则每次事务后写入文件以持久化sync-binlog0则操作系统根据调优配置集写入文件这种方式性能最好但风险最高将该值设为1的任何数会在该数量的事务后写入文件2将从属服务器状态日志存储在表中以进行故障安全复制使用master-info-repository和relay-log-info-repository选项把日志存储在表中表是故障安全的

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…