MySQL复制常见问题处理

MYSQL复制配置起来非常的简单,而且想其复制链路中断呢,同样十分简单,有很多种因素呢,可能会造成主从复制的

中断,我们就来看看下面的主要因素,如何恢复中断后的复制链路,那么第一类我们经常需要面对的问题呢,是由于

数据损坏或数据丢失引起的主从复制的错误,这种错误大部分都是由于非正常的关机所引起的,当数据库服务器突然

宕机,这个时候呢就会经常出现部分数据没有及时的刷新到磁盘的情况,在这种情况下,重启主从服务器之后,再次进行

同步,可能就会产生中断的错误,这种错误主要有以下几种,首先第一种是由于主库或者从库意外宕机所引起的,从我们前面

讲解的内容中呢,大家可以知道,当参数没有设置为1时,那么在主库发生奔溃意外时呢,有可能没有将最后的二进制日志刷新

到磁盘上存储,当主库重新启动后,并尝试再次去读取二进制事件,但是主库可以告诉从库,在主库二进制日志中呢,没有二进制

所在的事件,因为在主库宕机时呢,并没有把这个事件保存到二进制日志中,这就会出现从库读取不到主库的二进制日志的错误,

而造成主从链路中断,根据我们所使用的模式,可以使用跳过二进制日志事件的方式,注入空事务的方式呢,先恢复中断的复制

链路,然后再使用其他方法,对比主从服务器上的数据,与修改从库,重新同步从库丢失主库的数据

另外除了主库的意外宕机,会引起从库的错误外,从库的意外宕机呢,也有可能会引起主从复制的链路中断,由于从库的

意外宕机呢,会引起master-info文件,没有及时的同步到磁盘上,在这个文件中记录了从库已经同步了二进制的日志信息,

这可能会引起从库的从主库获取二进制日志,这在基于日志点的复制下呢,会出现主键冲突这样的问题,当然呢,基于SQL段

的日志下呢,还有可能会对数据进行更新,所以如果出现了这些问题,我们通过可以通过这种方式呢,来进行恢复主从链路,

但是同步恢复后呢,我们同样要验证,主从的数据是否一致,关于如何检验主从数据库的数据是否一致呢,我们会放到本课程的最后,

也就是服务器性能监控,来给大家讲解,另外主从以外重启的故障呢,就是主库上的二进制日志损坏了,主库每次重启以后呢,

都会重新生成一个二进制日志文件,可能由于意外的关闭,甚至我们只能从从库中,通过change master命令,来重新指定从库从

主库的同步的二进制日志,来进行同步,但是会丢失主库上的一些更新,是主从数据库上出现一些差异,因此我们接下来还是要

对丢失的数据进行修复,以及修复后还要对主从数据库的数据进行检验,看是否恢复了主从数据库的一致性,和主库的意外重启,

可能会和主库二进制的日志一样,从库的意外重启呢,他也可能引起中继日志的损坏,不过只要主库的二进制日志没有删除,中继

日志的损坏呢,很好处理了,我们可以通过change master命令,指定从库的IO线程,从损坏的位置,再次同步主库的二进制日志,

这样就可以安全的恢复同步的链路了,无论是意外宕机,引起主从复制错误之外,还有一些可能会造成主从复制的意外的时间

主要包括下面这些,首先由于从库上进行了数据修改,而造成了主从复制的这种错误,前面讲解如何主从复制,

以及主从复制需要注意的问题的时候呢,设置read_only参数,使从库只读,但是在实际的工作中呢,我们经常发现,

很少有人会记得,在从库上来设置这个参数,另外即使是设置了这个参数,在MYSQL5.7之前呢,用于SQL权限的用户呢,

还是在从库上进行修改,而主从库的正常运行呢,非常依赖于主从数据库的一致性,如果出现了从备份服务器修改数据

的情况,主从的链路就会轻易地会更变,另外如果是业务应用在从服务器上进行了数据修改,很可能会出现事务丢失的

问题,是保留主库上的数据还是保留从库上的数据,在多数的情况下,一旦出现这种问题,我们只能更新从主库差异的数据,

这样从库修改就会丢失,另一种情况呢,在多个从服务器上,可能会存在不同的server_id,或者server_uuid,在主服务器

之间,如果出现了相同的server_id,启动复制时呢就会出现错误,所以这种错误很容易被发现,而如果是在从服务器之间,

存在相同的server_id,或者uuid时呢,就不是那么容易被发现了,server_id的情况,如果我们使用的是复制目录的方式来

初始化服务器的数据,那么这种情况下,是非常容易发生,因为server_uuid是记录在数据库目录中的auto.cnf文件中,那这个文件

一旦存在呢,mysql是不会重新生成uuid的,所以如果我们不注意呢,多个从服务器使用同一个server_uuid的情况,这种错误

很隐蔽,所以也很难被发现,具有相同server_id可能会丢失,也有可能会重新执行,使用了相同server_id的从服务器,

而造成了主从切换的失败,最后呢运行最大包不一致,也会可能造成主从复制的失败,在这种情况下呢,主库可能会记录从库的包,

当从库获得这个二进制事件时呢,可能会碰到很多问题,如无限制的报错,或者日志的损坏,下面我们就来介绍如何配置主从复制,

以及如何处理常见的主从复制的错误,MYSQL复制确实非常简单,功能也相当强大,可以为我们解决很多问题

但是有些问题单纯使用主从复制是无法解决的,比如前面多次提到的,主从复制是无法分担主数据库的写负载,

由于在主从复制中,写入主数据库的二进制事件,最终会在所有的从上存放,所以说,写负载并不会减少,如果要

解决写负载的问题,只能通过分库分表的方式,来处理,这个我们后面会有一个专门的章节来讲解,另外单纯的主从

复制呢,还无法进行自动的故障转移,和主从切换,我们在上面介绍中,可以看到,主从复制所解决的问题中呢,是为了

高可用架构,架构基础,之后主从复制虽然提供了多个从服务器,我们可以利用多个从服务器来分担你读的负载,但是主从

复制不提供读写分离的功能,这实现读写分离,也需要额外的一些主键

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值