OMG,数据库主从延迟了!!!

嗯...2 02 2 年的时候...我遇到了这个东西...是数据库主从延迟...很烦人...
当时在一个城市...具体名字忘了...反正是一个非常繁忙的系统...用户很多...高峰期...延迟最多几秒...或者最多十几秒....
我们查一下原因...主要是有很多...网络...服务器...还有那些大交易...真的...非常...大...一个可以处理几千条数据...
后来才意识到...MySQL版本也老...5 .6 ...当时没有升级...从库也多了...四...五...主库压力很大...
解决办法...也是一步步...先看网络...带宽是1 00M...那肯定不行...直接升级到3 00M...效果是...但是不完整...
然后...也改一下从数据库服务器...原来的...CPU和内存都坏了...换了...速度明显快了...
最重要的是...业务代码...那些大事务...如果不改...就拆分...小...小...小...再...异步处理...不是全部都需要同步...
MySQL也升级了...5 .7 ...多线程播放...只是...质的飞跃是...以前单线程...就是这样慢...
从库数量也减少了...只有两个键...其他...功能合并了...
终于...增加了业务层容错...自动重试...有时候发现旧数据...就重试...
你看...那个餐饮系统...就是高峰期做饭出问题的...都是一样的...1 00M带宽...代码量大事务...卡住了...
他们还...带宽增加到3 00M...代码分割...数据库升级...MySQL也变了...终于加了自动重试...
结果...延迟没了...系统稳定多了...
你说...稳定性强...但是还有一点...半同步复制...或者GroupReplicat ion...成本高...复杂...一般需要不需要...
看业务...如果想要强稳定性...增加复杂性...如果你想要性能...容忍延迟...
总之...我已经做了1 0年了...我对这些东西很熟悉...只要多尝试...你就会慢慢理解...

MySQL 主从,5 分钟带你掌握

主从复制依赖于记录所有更改的binlog。
二进制日志格式:
语句:记录SQL语句,虽然简单,但是会导致主从不匹配(比如索引选择不同)。

row:记录行更改,安全但占用大量空间(如果删除 1 00,000 行,则记录所有行)。

混合:混合模式,默认行为,如果不一致则自动切换到行。
主从延迟:- 原因:
库的回放压力很大(像很多DDL、SQL线程绑定一样)。

从从数据库的慢速查询会锁定主数据库。
解决方案:
主条件直接读取主数据库(库存、付款)。

非核心状态阅读库。

跟踪延时,毫秒标准,二次报警。

高可用性:
主库关闭,从库切换到主库(如A->B,A返回后同步B)。

一主多奴。
主数据库发生故障后,最新的从数据库接管。

锅案
小米专访:主从原理+滞后解决方案,语句(行)不一致问题。

库存系统必须读取主库,非主库必须从从库读取。

称一下体重。

什么是mysql主从

上周有客户问我什么是MySQL主从复制,我给他解释了一下。
事实上,这就像两个人抄同一本书一样。
一个人(数据库主)负责编写所有内容,另一个人(数据库从)负责读取和转录内容。
这样,如果主库出现问题,从库可以快速接管,保证数据的连续性。

让我举个例子。
例如,2 02 3 年,我在上海的一个购物中心,看到一对夫妇。
男人手里拿着一本书,旁边的女人正在抄写。
这是简单的主从复制,一个写,另一个读。

主从复制的主要作用是解决单点故障问题,保证数据安全。
如果主库崩溃,可以立即安装从库,不丢失数据。
此外,它还支持读写分离。
例如,在电商平台上,主数据库处理用户购物车更新等写操作,而从数据库处理商品查询等读操作,这样可以提高系统的响应能力。

主从架构有多种形式。
最常见的是主从,适合小规模应用或测试环境。
还有一主多从的,适合读多写少的场景,比如电商网站的查询操作。
多主一从适合业务模块清晰的写入密集型场景,而主主复制允许两个主库都读写,但必须处理数据冲突,适合可用性要求极高的场景。

从技术实现上来说,主要有两种模式:一种是传统的二进制日志(Binlog)复制,另一种是GTID复制。
Binlog复制是一种较旧的方法,通过将所有写操作记录到Binlog中,然后从库中读取此日志来同步数据。
GTID是在MySQL 5 .6 之后引入的。
为每个事务分配唯一的标识符,这可以简化故障转移并确保数据一致性。

总的来说,MySQL主从复制是一个相当复杂的系统,但是它对于保证数据安全和提高系统性能非常有用。
不过,这取决于你。
如果您需要了解更多,可以再找机会详细讨论。
我还在想这个问题。