深入解析MySQL一主多从的工作原理mysql一主多从原理

MySQL的工作原理的深度分析是MySQL高可用架构中的一个主体和多个从属,一个主人和多个从属(主奴隶)是非常常见的分布方法。
此方法可以提高MySQL数据库的可用性和可扩展性。
本文将分析MySQL One Master和更多奴隶的工作原理,包括主奴隶复制原理,主奴隶同步机制和错误还原过程。
Master-Slave复制原理MySQL Master-Slave Replication Replication是指从主数据库的数据同步复制到SLAV数据库。
主数据库(主)负责编写数据,而从属数据库(Slaven)负责读取数据。
主奴隶复制的本质是Binlog日志。
当主数据库更改时,将生成Binlog日志。
当从属连接到主人时,它将将Binlog日志复制到其自己的RelayLog日志文件。
然后,从属将启动I/O线程,通过此I/O线程从主读取BINLOG日志,然后将Leset Binlog日志从RelayLog日志文件同步到其自己的数据库。
在此机制下,可以将来自从数据库的数据与主数据库保持同步。
Master-Slave同步机制在将从数据库连接到主机时,必须从主读取bin日志并将其保存在RelayLog所在的日志文件中。
从属将注册请求的请求。
通过这种方式,从属可以通过I/O线程从主体读取垃圾箱日志,并在记录其读取的位置时将其同步到本地RelayLog。
当从属读取BINLOG事件并将其同步到自己的数据库时,它也将自己的位置发送给主人。
这样,大师知道哪些奴隶已经阅读了他们的垃圾箱日志。
在MySQL中,有两种方法可以通过SQL语句根据SQL语句回复主库的操作,并将类似的SQL语句在从属上执行以获取同步数据。
但是,对于SBR,有一些要点必须谨慎。
例如,主要库执行操作更新操作,但是由于从从服务器和桅杆中的数据可能不一致,因此无法准确地执行。
基于行的复制(RBR):此方法是根据列期刊复制的。
主库的表格将在连续级别复制,以确保从服务器上的数据符合Master上的数据。
该方法比SBR更灵活,但是RBR的缺点是,当大型数据更新操作时,它会消耗更多的网络带宽和计算资源。
错误恢复过程当MySQL Master-Slave Replication,Masters或Slove降低时是相应的恢复过程。
在这种情况下,主库中的数据必须在从库中同步。
- 当主人倒下时,必须对其进行恢复。
恢复后,您必须重新启动MySQL服务,将“从连接信息”添加到主人,然后通过I/O线程复制Binlog日志以将数据同步到一致的状态。
- 当一个从掉下来时,有必要执行类似的恢复过程。
在这种情况下,主必须控制每个从属的状态,并将所有最新的bin日志发送到停机时间从恢复同步数据。
摘要:MySQL的单级奴隶分发方法可以提高数据库的可访问性和可伸缩性,从而使MySQL可以实现更高的性能和安全性。
实际上,我们可以通过Binlog日志,I/O线程和主奴隶同步机制实现MySQL数据库的数据同步。
当您遇到错误时,您还必须考虑桅杆和从属之间的连接,并在一个上执行类似的数据同步和恢复确保计算机港口和质地的正确方法。

MySQL的GTID主从搭建及内部原理

主奴隶复制是确保高度可用性体系结构的关键技术。
核心目标是减少停机时间。
部署两个MySQL实例(例如一个示例)可以自动切换到其他实例以提供服务,尽管我的MySQL示例之一同时提供了外部世界。
该体系结构称为一个实时体系结构。
当主图书馆不足时,该工作人员立即将堆栈保留为恢复可能涉及一定时间的服务。
为了应付更复杂的需求,多活体系结构引入了更多的实例,因为信息同步并改善了安排。
借助传统的主人和一个从属,GTID所有者 - 奴隶复制具有显着优势,作为增强的信息一致性,简化的复制配置等。
因此,MySQL 5 .7 .3 4 所有节点的版本和构建GTID,构建GTID,Slave,Slave。
在GTID所有者奴隶建筑物的基本等级中,确保一致性的配置,完全在服务器库中模拟信息,并在服务器库的背面进行模拟,并在从属库的后面进行委派,并在后面的委员会中委派在哥白库中,并恢复了copernic库,并恢复了库的库,并在库中删除了一些委员会,并在copernigrible中删除了一家人,并在“家族”中脱颖而出。
将行动,奴隶图书馆委派,并证明主,仆人建筑。
主奴隶的内部起点是根据文件与资源之间的相互作用复制的。
大型库通过dump_t thread通知服务库的io_t thread,允许从属库活动更新数据和服务器库清洁relaylog.00000x播放laboptera laban laban laban文件,根据日期。
总体过程包括所有者和从属库之间的纽带,复制,状态检查,大型和延迟策略。
通过一系列命令来监视主奴隶状态,包括对主奴隶的检查是稳定的,从属数据库,主奴隶信息,gtid-slave信息,GTID-SLAVE副本副本状态,相对偏见的binlog信息,非人类的非人类延迟状态的主lave lave和人为延迟的延迟状态。
从设备的延迟允许在主库未能防止执行错误操作后放置时间延迟。
配置项的实现通常是基本配置服务器堆栈,延迟时间通常为Second的单位3 -6 小时。
过滤复制是一种策略,可以单独构建从数据库的数据库,该数据库具有较大的数据幅度,以减轻主库中的压力。
仆人库仅在特定库的binlog记录中播放,实现方法包括在大型库记录中过滤或限于服务器库配置。
半同步复制确保信息的一致性,并与ACK确认请求实现所有者和从属数据库之间的互动。
实现步骤包括在插件中加载,检查所有者和从属库之间的状态插件,启动主库的半同步复制,以及SML_T线程以在完成REY__T字符串后发送ACK请求REY_T。
常见问题包括教师奴隶链接问题,复制问题,数据问题和延迟问题。
解决方案策略涵盖了一个很棒的库和服务器库之间的链接信息检查以及配置调整主库以及仆人库的优化以及在受管制的库中。
复制主和从属时,您应该注意禁止服务器库编写并使用服务器库进行读取的内容,除非操作。
和现在没有删除的日志或播放日志,将建立主和奴隶的作品。
主修所有者奴隶指出,配置政策的延迟,过滤复制的效果以及在半同步复制的基本概念中的理解,以确保高可用性体系结构的稳定操作。

深入了解MySQL主从复制的原理

MySQL Master-Slave的对称副本的原理主要包括以下几点:目的和机制:目的:让一个MySQL Server复制另一个MySQL Server数据以确保两个数据一致。
机制:基于对主库的实施BINLOG,主库已注册,并恢复从属库库。
BINLOG格式:BINLOG:MySQL Server,在MySQL上注册所有更改。
存储格式:有三种类型,是一句话,一行和混合。
基本步骤:从图书馆开始I/O绕组期望:与主库创建连接。
主库开始BinlogDump:它读取Binlogevent并将其发送到从库。
启动SQL的互连索引:RelayLog中的重新启动数据。
RelayLog充当临时商店,允许进行事件的过程并以同时的方式进行操作。
重复进度和对称转录:RelayLog:作为从属库的缓冲区,已从主库中收到了Binlogense。
RelayLog.info文件:记录版本的当前进度。
如果您不小心从库重新启动,则文件将重新阅读,并且副本将随后。
MySQL 5 .6 之后,它还支持在MySQL.Slave_Ray_log_Info表中存储对称转录的存储。
表格副本:主要和多个奴隶之一:适用于少量写作和大量阅读。
重复链:降低主库的压力。
主要版本:实现水平缩放。
主要的主动负面对称副本:它在不抵制服务的情况下维护数据库。
复制方法:不等版本:默认方法是主库不等待从属库确认。
类似的副本:主库必须等待所有奴隶库在返回之前完成交易。
半单行版本:只能从图书馆返回承诺。
通过上述机制,数据库的对称版本是兼容的,并提高了高数据库功能,扩展和负载预算。

MySQL 主从,5 分钟带你掌握

MySQL Master和Slavic一直是常规面试官。
尽管有基本知识点,但很少有学生可以回答所有答案。
例如,当娄兄弟已经采访小米时,他就被问到了主奴隶副本的原则以及对主奴隶延迟的解决方案。
因为答案非常好,所以她给面试官留下了很好的印象。
面试前,您与MySQL Master和Slave遇到了哪些问题?所谓的MySQL Master-Slavic是建立两个完全相同的数据库,一个是掌握,另一个是从奴隶的数据库。
主数据库提供外部阅读和写作操作,从属数据库提供外部阅读操作。
以下是一个主机的从模式:对于数据库的部署,在具有4 个内核的8 G机器上执行MySQL5 .7 期间,它可以负责约5 00 TPS和1 0,000 QPS。
在某些活动会议期间,请求流量必须突然被大师斯拉夫人分开。
大多数系统的访问模型是,读取和较少的著作较少,阅读和写作请求的差距可以达到几个数量级。
因此,我们可以使用一个奴隶来负责写作和质疑基本逻辑的一部分,而几个从属库仅负责询问,改善请求的绩效以及降低了主库的压力。
MySQL Master和Slave也可以获得大量服务。
当主库分解时,可以在主库中切割从库,以确保服务的高可用性。
然后,主库还可以在索赔后执行恢复备份数据。
总体场景总结如下:MySQL的主奴隶复制取决于BINLOG,也就是说,要记录MySQL上的所有修改并以光盘上的二进制形式保存它们。
奴隶的副本是将数据传输到主库的Binlog到奴隶库。
通常,此过程是异步的,也就是说,主库的操作将不等待Binlog的同步结束。
详细的过程如下:当主库数据和从库同步并进行突然中断时该怎么办?由于主库和从奴隶库之间保持了一个长链接,因此主库中有一个线程,专门为从属库的长链接服务。
在以下情况下,如果主库执行以下SQL,其中a和create_time均为索引:我们知道,如果由a和create_time索引选择数据,则limm1 产生的数据在最后是不同的。
因此,存在一种情况:在Binlog格式=指令中,主库在执行此SQL期间使用索引A,而从属库在执行此SQL期间使用create_time索引,而主和从属数据则不一致。
那么我们如何解决问题呢?您可以在火车中修改Binlog格式。
Binlog连接线格式不会记录原始SQL文本,而是两个事件:table_map和delete_rows。
table_mapevent将表描述为使用和delete_rowsevent用于定义要删除的行为,并保存要删除的特定行数。
行格式的BINLOG记录要删除的主要标识键的信息,因此不会存在主奴隶不一致的问题。
但是,如果SQL删除了1 00,000行数据,则使用行格式将有很多空间。
1 00,000个数据元素都在Binlog中,并且在编写Binlog时也非常重要。
但是,以声明格式的binlog可能导致数据不一致。
设计MySQL的叔叔找到了折衷解决方案。
混合格式Binlog实际上是线格式和说明的混合物。
当MySQL确定数据可能不连贯时,请使用行格式,否则请使用指令格式。
有时,当我们遇到一个奇怪的问题以不从数据库中获取信息时,我们会感到困惑的是,代码中是否有逻辑可以删除先前编写的内容,但是您会发现,在一定时间后,在问题期间可以重新阅读数据,这本质上是delayer-s-slave。
实际上,延迟的奴隶实际上是“从奴隶库的阅读”结束的那一刻。
“编写主库”的完成期的完成期之间的差异将导致奴隶库与主库库质疑的数据不兼容。
当您谈论从MySQL数据库中延迟同步的原理时,我们必须从MySQL的主奴隶复制的原理开始:汇总延迟主奴隶的主要原因:延迟主奴隶的主要原因主要发生在“ RelayLog播放”中。
当主库的TPS竞争较高并且生成的DDL数量超过了从属库可以承受的线索SQL的海滩时,会产生延迟。
当然,他还可以在等待从属库请求的主要请求时产生锁定。
通常,我们将落后于数据库的时刻作为用于监视和警报的关键数据库指标。
正常时间是毫秒。
一旦我们在第二层延迟迟到,我们就必须提醒自己。
除了缩短主奴隶的较晚时间外,还有其他方法可以解决此问题。
基本原则是尽量不要质疑奴隶的库。
具体解决方案如下:在实际应用程序方案中,对于某些非常主要的方案,例如库存,付款订单等,您必须直接质疑奴隶的数据库。
如果您不在其他非必需方案中检查主数据库,则不应检查主数据库。
两台机器A和B是主要库,负责阅读和写作,B是奴隶的库,负责阅读数据。
如果库失败,则B库将成为阅读和写作的主要库。
修复了缺陷后,A成为奴隶的库,主B库S同步奴隶A库A中的数据。
主库有几个从属库,A是主要库,负责阅读和写作,B,C和D是从属库,C和D是从属库,数据阅读的管理者。
如果那里图书馆失败了,B库成为阅读和写作的主要库,C和D负责阅读。
修复缺陷后,A也变成了奴隶的库,主B库同步了从奴隶库中的数据。