k8s mysql8增量备份 k8s mysql主备_数据

本发明涉及云计算技术领域,特别涉及一种基于Kubernetes系统的MySQL主备增量同步方法。

背景技术:

随着信息技术的广泛应用和快速发展,云计算作为一种新兴的计算模型日益受到人们的广泛关注。Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。具体来说,通过Kubernetes可以快速部署应用、快速扩展应用、无缝对接新的应用功能、节省资源并优化硬件资源的使用。

基于Kubernetes技术部署和管理MySQL主备集群,一方面可以自动把某个服务器上(称为主节点服务器,即master)的所有变化同步到另一个服务器(称为从节点服务器,即slave),从而提高了数据的读能力,在不干扰其他业务的情况下执行报表和分析工作;一方面增强数据库系统的容灾能力,当master节点宕机,能够实现节点自动重启与恢复,短时间内正常提供服务。

针对MySQL主备模式中slave节点服务器故障宕机,如何进行数据的恢复和同步,目前主要有两种解决方案:第一种是全量备份,这种方式就是对主节点所有的数据文件进行备份,备份效率低;第二种就是增量备份,slave节点只备份与master节点差异的数据,备份效率高。

由于MySQL主备模式主要用于对数据安全性要求较高的大中型企业应用的生产数据库,数据量较大,又结合Kubernetes技术,如果从节点容器每次故障重启都采用全量备份的话,备份时间长,在高并发的场景下造成主节点服务器压力增大,一旦主节点服务器崩溃导致数据库系统不可用,因此高效率的增量同步是一个比较好的解决办法。然而,针对Kubernetes系统,目前仍无法实现增量同步备份。

基于此,本发明提出了一种基于Kubernetes系统的MySQL主备增量同步方法。

技术实现要素:

本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于Kubernetes系统的MySQL主备增量同步方法。

本发明是通过如下技术方案实现的:

一种基于Kubernetes系统的MySQL主备增量同步方法,其特征在于:首先在Kubernetes集群上建立MySQL主备数据库系统;然后当从节点服务器宕机重启时,从节点服务器开启增量同步,通过一个I/O线程和SQL线程保持与主节点服务器进行通信和同步;从而保证重启后的从节点服务器与主节点服务器之间数据状态一致,正常同步。

所述在Kubernetes集群上建立MySQL主备数据库系统,包括以下步骤:

(1)在Kubernetes集群中配置一个容器作为主节点服务器;

(2)在主节点服务器上运用Xtrabackup工具进行数据全量备份;

(3)在Kubernetes集群中配置一个容器作为从节点服务器,接收主节点服务器上全量备份数据并替换从节点服务器数据目录;

(4)在从节点服务器通过SQL语句连接到主节点服务器,并通过SQL语句开启从节点;

(5)从节点服务器通过一个I/O线程和SQL线程保持与主节点服务器进行通信和同步。

所述步骤(2)中,Xtrabackup工具支持在线热备份,在备份时不影响数据读写,同时支持备份InnoDB和XtraDB数据表。

所述步骤(5)中,I/O线程负责查看主节点服务器数据变化,SQL线程负责在从节点服务器执行变更操作。

当所述从节点服务器宕机重启时,从节点服务器实现增量同步,具体包括以下步骤:

当从节点服务器宕机重启时,从节点服务器实现增量同步,具体包括以下步骤:

(1)从节点服务器故障宕机重启开始,进入增量恢复过程,首先判断MySQL数据文件夹是否存在,如果存在,则说明这是重启过程,进行增量同步;

(2)进入MySQL数据目录下,修改全量备份时产生的文件,如果全量备份文件存在,则将全量备份文件进行重命名或者删除;

(3)不执行主从全量同步命令;

(4)查看从节点服务器宕机时的状态以及当前主节点服务器的数据状态,根据从节点服务器与主节点服务器binlog日志和同步位置pos点完成从节点服务器数据的增量恢复。

所述步骤(4)中,在执行增量同步的过程中,从节点服务器通过I\O线程保持与主节点服务器的通信,通过SQL线程执行增量同步操作,根据binlog日志和同步位置pos点进行增量同步。

所述步骤(4)具体包括以下步骤:

(A)重启从节点服务器之后,查看从节点服务器的I\O_Running线程和SQL线程的状态,如果状态正常则保持与master节点的通信,用于数据增量同步;

(B)查询从节点服务器binlog日志和同步位置pos点,判断从节点服务器已经同步到主节点服务器的什么位置;

(C)查询主节点服务器的binlog日志和同步位置pos点,获取主节点服务器数据更新到的位置;

(D)从节点服务器根据宕机时同步数据的同步位置pos点与binlog日志,开始同步至主节点服务器最新的binlog日志的同步位置pos点,恢复与主节点服务器之间的差异数据,使其一致;

(E)增量同步完成,重启成功。

所述binlog日志记录节点服务器上所有的变更操作,同步位置pos点为最近更新的binlog日志文件位置。

本发明的有益效果是:该基于Kubernetes系统的MySQL主备增量同步方法,解决了MySQL主备数据库系统中从节点服务器故障数据恢复与同步效率低的问题,实现了MySQL主备数据库系统的增量同步,与全量同步相比,数据量小,效率高,还能够实现系统自动化控制,无需手动操作,保证了MySQL主备数据库系统的高可用性。

附图说明

附图1为本发明基于Kubernetes系统的MySQL主备增量同步方法示意图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

该基于Kubernetes系统的MySQL主备增量同步方法,首先在Kubernetes集群上建立MySQL主备数据库系统;然后从节点服务器(slave节点)宕机重启时,从节点服务器开启增量同步,通过一个I/O线程和SQL线程保持与主节点服务器(master节点)进行通信和同步;从而保证重启后的从节点服务器与主节点服务器之间数据状态一致,正常同步。

所述在Kubernetes集群上建立MySQL主备数据库系统,包括以下步骤:

(1)在Kubernetes集群中配置一个容器作为主节点服务器;

(2)在主节点服务器上运用Xtrabackup工具进行数据全量备份;

(3)在Kubernetes集群中配置一个容器作为从节点服务器,接收主节点服务器上全量备份数据并替换从节点服务器数据目录;

(4)在从节点服务器通过SQL语句连接到主节点服务器,并通过SQL语句开启从节点;

(5)从节点服务器通过一个I/O线程和SQL线程保持与主节点服务器进行通信和同步。

所述步骤(2)中,Xtrabackup工具支持在线热备份,在备份时不影响数据读写,同时支持备份InnoDB和XtraDB数据表。

所述步骤(5)中,I/O线程负责查看主节点服务器数据变化,SQL线程负责在从节点服务器执行变更操作。

由于Kubernetes管理的容器具有故障自动恢复和重启功能,当从节点服务器宕机重启时会重新执行步骤(3)、(4)和(5)。但是在高并发和海量数据的场景下,节点恢复时间长,效率低,会造成从节点服务器长时间不可用。因此,当从节点服务器宕机重启时,从节点服务器实现增量同步。

具体包括以下步骤:

(1)从节点服务器故障宕机重启开始,进入增量恢复过程,首先判断MySQL数据文件夹是否存在,如果存在,则说明这是重启过程,进行增量同步;

(2)进入MySQL数据目录下,修改全量备份时产生的文件,如果全量备份文件存在,则将全量备份文件进行重命名或者删除;

(3)不执行主从全量同步命令;

(4)查看从节点服务器宕机时的状态以及当前主节点服务器的数据状态,根据从节点服务器与主节点服务器binlog日志和同步位置pos点完成从节点服务器数据的增量恢复。

所述步骤(4)中,在执行增量同步的过程中,从节点服务器通过I\O线程保持与主节点服务器的通信,通过SQL线程执行增量同步操作,根据binlog日志和同步位置pos点进行增量同步。

所述步骤(4)具体包括以下步骤:

(A)重启从节点服务器之后,查看从节点服务器的I\O_Running线程和SQL线程的状态,如果状态正常则保持与master节点的通信,用于数据增量同步;

(B)查询从节点服务器binlog日志和同步位置pos点,判断从节点服务器已经同步到主节点服务器的什么位置;

(C)查询主节点服务器的binlog日志和同步位置pos点,获取主节点服务器数据更新到的位置;

(D)从节点服务器根据宕机时同步数据的同步位置pos点与binlog日志,开始同步至主节点服务器最新的binlog日志的同步位置pos点,恢复与主节点服务器之间的差异数据,使其一致;

(E)增量同步完成,重启成功。

所述binlog日志记录节点服务器上所有的变更操作,同步位置pos点为最近更新的binlog日志文件位置。