一种mysql主从切换数据不丢失的方法及系统技术方案

技术编号:32363984 阅读:36 留言:0更新日期:2022-02-20 03:35
本发明专利技术提供了一种mysql主从切换数据不丢失的方法,所述方法包括以下步骤:步骤S1、将mysql数据库的业务进行读写分离,数据的增删通过mysql数据库的主库实现,数据的读取通过mysql数据库的从库实现;步骤S2、启用线程监测mysql数据库的主库健康状况;步骤S3、当mysql数据库的业务服务读取到redis内存的mysql数据库主库的数据库连接串错误信息等于1时,将数据暂存与redis内存中;步骤S4、当线程监测到mysql数据库主库恢复健康时,mysql数据库主库的数据库连接串错误信息为空;步骤S5、将redis内存中的堆积数据写回mysql数据库主库,恢复mysql数据库的主库使用;本发明专利技术能够实现利用redis内存暂存主库宕机间产生的新数据,从而解决数据库主从切换而导致的数据一致性问题。解决数据库主从切换而导致的数据一致性问题。解决数据库主从切换而导致的数据一致性问题。

【技术实现步骤摘要】
一种mysql主从切换数据不丢失的方法及系统


[0001]本专利技术涉及计算机
,特别是一种mysql主从切换数据不丢失的方法及系统。

技术介绍

[0002]为了适应日益增值长的业务体量,除了应用缓存来缓解数据库压力,数据库层面我们也需要做优化,在数据库方面我们会使用读写分离,新增、更新、删除等此类写业务走主库,读取业务走从库,以此来分摊数据库压力。另一方便还增加了数据库容灾能力,主库宕机,我们可以把写业务引导到从库,继续维持服务的可用性。但这有个问题是,mysql的主从之间的数据同步是有延时的,假设极端情况在主库宕机时,还有数据未同步到从库。此时把从库切换成主库,就会导致数据不一致。即便到原主库恢复,2个数据库之间也会存在原先未同步数据的版本问题,从而影响业务的严谨性。

技术实现思路

[0003]为克服上述问题,本专利技术的目的是提供一种能够实现利用redis内存暂存主库宕机间产生的新数据,从而解决数据库主从切换而导致的数据一致性问题的方法。
[0004]本专利技术采用以下方案实现:一种mysql主从切换数据不丢本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种mysql主从切换数据不丢失的方法,其特征在于,所述方法包括以下步骤:步骤S1、在mysql数据库主从数据库同步的基础上,将mysql数据库的业务进行读写分离,数据的增删通过mysql数据库的主库实现,数据的读取通过mysql数据库的从库实现;步骤S2、启用线程监测mysql数据库的主库健康状况;步骤S3、当mysql数据库的业务服务读取到redis内存的mysql数据库主库的数据库连接串错误信息等于1时,将数据暂存与redis内存中;步骤S4、当线程监测到mysql数据库主库恢复健康时,mysql数据库主库的数据库连接串错误信息为空;步骤S5、将redis内存中的堆积数据写回mysql数据库主库,恢复mysql数据库的主库使用,业务监测到mysql数据库的主库恢复正常时,恢复业务删减通过主库实现,从而实现能够解决mysql数据库主从切换而导致的数据一致性问题。2.根据权利要求1所述的一种mysql主从切换数据不丢失的方法,其特征在于:所述步骤S1进一步具体为:在mysql数据库的主从数据库同步的基础上,业务上关于数据的增删改的数据库操作,都读取mysql数据库主库的数据连接串masterdb,业务上关于数据的查询操作,都读取mysql数据库从库的数据连接串slavedb,数据的写入走mysql数据库主库,数据的读取走mysql数据库从库,从而实现读写分离。3.根据权利要求1所述的一种mysql主从切换数据不丢失的方法,其特征在于:所述步骤S2进一步具体为:开启一个线程,实时检测主库健康情况,每隔1秒执行如下代码:判断mysql数据库主库是否健康,是,则mysql数据库主库的数据库连接串执行连接mysql数据库主库的代码,错误信息err为空,则表示mysql数据库主库健康,否,错误信息err不为空则mysql数据库主库发生异常。4.根据权利要求1所述的一种mysql主从切换数据不丢失的方法,其特征在于:所述步骤S3进一步具体为:业务服务读取到redis里的数据库连接串masterdberr等于1,则表示主库发生异常,此时主库不可写入数据,把一切要写入主库的数据都写到redis内存里。5.根据权利要求1所述的一种mysql主从切换数据不丢失的方法,其特征在于:所述步骤S4进一步具体为:当线程监测到执行mysql数据库连接是否正常的代码的错误信息err为空时,表示mysql数据库主库恢复正常。6.根据权利要求1所述的一种mysql主从切换数据不丢失的方法,其特征在于:所述步骤S5进一步具体为:当检测到监测到存储的redis内存里key值=数据库连接串masterdberr的值等于0,则表示mysql数据库主库恢复正常,此时因为还有mysql数据库主库宕机期间产生的新数据还暂存在redis内存中,所以业务上还未重新走主库,读取redis内存里的key值,执行redis内存命令,得到暂存数据列表,判断暂存数据列表的id是否为零,是,则表示为新增数据列表,否,则表示为更新,将暂存数据列表刷回mysql数据库主库,完成redis内存的暂存数据到mysql数据库主库的迁移,表示mysql数据库主库恢复并且数据已同步;检测到mysql数据库主库已恢复,业务上增删改的数据库操作,继续读取mysql数据库主库的数据库连接串masterdb配置的数据库连接串来操作主库,业务上关于数据的查询操作,都读取mysql数据库从库的数据库连接串slavedb配置的数据库连接串来读取从库。7.一种mysql主从切换数据不丢失的系统,其特征在于...

【专利技术属性】
技术研发人员:刘德建叶伟汪松
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1