CN110309021A - 一种Python语言数据库跨平台备份与恢复方法 - Google Patents

一种Python语言数据库跨平台备份与恢复方法 Download PDF

Info

Publication number
CN110309021A
CN110309021A CN201910618547.0A CN201910618547A CN110309021A CN 110309021 A CN110309021 A CN 110309021A CN 201910618547 A CN201910618547 A CN 201910618547A CN 110309021 A CN110309021 A CN 110309021A
Authority
CN
China
Prior art keywords
database
file
backup
python
backup file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910618547.0A
Other languages
English (en)
Other versions
CN110309021B (zh
Inventor
刘康宁
吴现兵
王胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HEFEI YINGYUN INFORMATION TECHNOLOGY Co Ltd
Original Assignee
HEFEI YINGYUN INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HEFEI YINGYUN INFORMATION TECHNOLOGY Co Ltd filed Critical HEFEI YINGYUN INFORMATION TECHNOLOGY Co Ltd
Priority to CN201910618547.0A priority Critical patent/CN110309021B/zh
Publication of CN110309021A publication Critical patent/CN110309021A/zh
Application granted granted Critical
Publication of CN110309021B publication Critical patent/CN110309021B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques

Abstract

本发明涉及一种Python语言数据库跨平台备份与恢复方法,与现有技术相比解决了数据库技术无法满足实际使用需要的缺陷。本发明包括以下步骤:Python语言数据库的设定:利用Python语言对数据库的属性进行设定;Python语言数据库跨平台备份:Client上传端将数据备份至备份数据库服务器;Python语言数据库跨平台恢复:Server接收端对备份数据库内的数据进行恢复处理。本发明利用Python语言实现了数据库的跨平台作业,所有任务完全实现自动化,完全无需人工干预。

Description

一种Python语言数据库跨平台备份与恢复方法
技术领域
本发明涉及数据库技术领域,具体来说是一种Python语言数据库跨平台备份与恢复方法。
背景技术
现有技术中,数据库服务器每天自动备份,产生的备份文件与数据库服务器存储在同一台服务器上。同时,现有的异地备份方式通常通过手动拷贝或依赖第三方文件同步工具将备份文件传输到备份服务器,然后在备份服务器上手动恢复数据库或指定时间自动恢复数据库。因此,现有的数据库技术中,文件传输、数据库恢复、数据归集均相对独立。
其中,文件传输仅能实现文件固定时间、固定目录传输,无法实现自定义文件传输。比如单独传输某一个文件中包含某些关键字的文件,或根据文件时间切片传输,也无法在文件传输成功之后处理一些个性化的需求,比如在文件传输之后希望立马自动恢复数据库归集数据。
数据库恢复大体是依赖数据库自身恢复功能或者通用工具类,无法与从其他服务器传输来的备份文件自动对接并恢复。
基于数据自动恢复后的数据归集也仅能合并数据,无法自定义归集规则和个性化数据抽取,比如数据库自动恢复后立马归集数据生成日活跃量报表。
归结传统的数据库技术存在以下问题:
1、异地备份方式无法实现从备份到恢复完全自动化,也无法个性化自定义文件传输方式和数据库恢复还原方式;
2、无法跨平台,文件传输服务器可能来自不同的平台;
3、在大数据积累的环境下,数据库和备份文件较大,总文件大小都是TB级别,甚至会到PB级别,手动拷贝和普通文件同步工具无法保证稳定性和持续性;
4、无法实现多台服务器数据归集,无法将各个备份中的数据通过特定规则进行抽取合并,无法方便的生成特定数据报表;
5、无法实现从文件传输到数据库恢复到数据归集一体化,各个阶段相对独立;
6、无法实现自定义规则传输,无法衔接文件传输成功的后续操作,也无法添加自定义监控及告警提醒,如邮件提醒、短信提醒、app推送消息提醒。
以上数据库技术缺陷存在的原因在于:
1、数据库厂商提供数据库的备份恢复功能有限。比如sqlserver数据库,备份文件仅能保存在数据库实例所在的服务器,想实现异地备份需要高昂的成本,需要部署Windows域环境,难以实现独立的异地备份和恢复,文件传输和数据库恢复方式都无法实现自定义个性化需求。
2、平台差异直接导致跨平台无法备份恢复。比如mysql数据库安装在Linux服务器,此时想恢复到Windows环境,需要手动传输文件到Windows环境,然后修改为兼容Windows的恢复方式后才能在Windows服务器的数据库中恢复,跨平台差异直接导致了从备份到异地恢复流程无法自动化。
3、当数据库文件超过PB级别非常大时,传统模式的全量拷贝和传输过程不是很稳定,全量一次性拷贝传输意外中断情况时有发生,通常这种级别的文件拷贝传输时间都需要几个小时甚至几十个小时的时间,此时意外情况发生又没有后续跟进跟踪方法,将直接导致整个任务失败,只能从头再来一次,比较浪费时间,效率非常低下。
4、传统数据库对数据归集和抽取提供的功能非常有限,基于现有的功能无法实现个性化的数据归集和抽取。比如想要从已有的十台业务数据库中合并抽取业务数据,此时只能从各个业务数据库中单独抽取数据然后再合并,无法直接聚合所有数据到一台服务器后重新抽取,然而从业务数据库中抽取数据是非常消耗业务数据库的资源性能,正常生产环境无法保证稳定性,大数据量的抽取极容易引起业务数据库不稳定进而影响客户正常使用系统。
发明内容
本发明的目的是为了解决现有技术中数据库技术无法满足实际使用需要的缺陷,提供一种Python语言数据库跨平台备份与恢复方法来解决上述问题。
为了实现上述目的,本发明的技术方案如下:
一种Python语言数据库跨平台备份与恢复方法,Python语言数据库包括Client上传端、Server接收端,Client上传端和Server接收端通过socket通信交互,Client上传端部署在数据库服务器上,Client上传端负责分片上传文件,Server接收端部署在备份数据库服务器上,Server接收端接收文件并自动恢复数据库;所述的跨平台备份与恢复方法包括以下步骤:
Python语言数据库的设定:利用Python语言对数据库的属性进行设定;
Python语言数据库跨平台备份:Client上传端将数据备份至备份数据库服务器;
Python语言数据库跨平台恢复:Server接收端对备份数据库内的数据进行恢复处理。
所述Python语言数据库的设定包括以下步骤:
利用Python语言的struct结构体定义数据库的文件包结构,文件包结构定义规则设定为:‘128sq’,其中,128s表示128位长度的字符串,用来储存文件名,q表示8位的long长整型,用来存储文件大小;
设定Python语言的SocketServer服务为Server接收端的监听组件。
所述Python语言数据库跨平台备份包括以下步骤:
Client上传端进行数据库备份文件向备份数据库服务器的上传;
Server接收端在备份数据库服务器进行数据库备份文件的接收。
所述的Python语言数据库跨平台恢复包括以下步骤:
根据所需恢复的数据库备份文件获取到需要恢复的数据库名称,判断已接收的数据库备份文件类型;若为数据库全量备份文件则进入全量自动恢复数据库步骤,若为数据库增量备份文件则进入增量自动恢复数据库步骤;
全量自动恢复数据库:根据获取的数据库名,使用Python调用对应数据库类型的api或执行sql进行全量自动恢复数据库,其中针对于SqlServer类型数据库,执行SqlServer通用的全量恢复数据库sql进行数据库恢复:其语法表达式如下:
RESTORE DATABASE dbname FROM DISK='全量数据库备份文件完整路径';
增量自动恢复数据库:
根据需要恢复的数据库名获取本次增量备份恢复依赖的全量数据库备份文件,利用Python调用对应数据库类型的api或执行sql进行全量增量恢复数据库,其中针对于SqlServer类型数据库,执行SqlServer通用的增量恢复数据库sql进行数据库恢复,其语法表达式如下:
RESTORE DATABASE dbname FROM DISK='全量数据库备份文件完整路径'WITHNORECOVERY,
RESTORE DATABASE dbname FROM DISK='增量数据库备份文件完整路径'WITHFILE=1,NOUNLOAD,STATS=10;
检查数据库恢复状态:当数据库恢复全部自动结束后,Server接收端持续等待Client上传端的恢复指令,数据库恢复过程中出现任何异常情况时,Server接收端自动发送邮件提醒,邮件接收人在配置文件中相应配置处理。
所述Client上传端进行数据库备份文件向备份数据库服务器的上传以下步骤:
Client上传端自动检测待上传的数据库备份文件:当Client上传端检测到待上传的数据库备份文件时,启动循环读取待上传的数据库备份文件步骤;若未发现待上传的数据库备份文件时则继续检测;
循环读取待上传的数据库备份文件:Client上传端检测待上传的数据库备份文件中是否有数据库全量备份文件;若有数据库全量备份文件,则只上传数据库全量备份文件;若无数据库全量备份文件,则进行数据库全量备份文件和增量备份文件在内的文件打包处理;
文件打包处理:Client上传端使用Python的struct结构体的文件包结构形式对需上传的数据库备份文件进行打包处理,生成struct结构体包头和备份文件包;
分片读取备份文件包内容循环发送给Server接收端:Client上传端利用Python的socket分片传输struct结构体包头和备份文件包,将其传送至备份数据库服务器,每次从struct结构体包头和备份文件包中读取100KB发送给Server接收端,循环发送直到备份文件包读取结束;
检查文件发送状态:当备份文件包全部发送结束时,继续Client上传端自动检测待上传的数据库备份文件步骤;发送过程中出现任何意外异常情况时,Client上传端自动发送邮件提醒,邮件接收人在配置文件中进行相应配置处理。
所述Server接收端在备份数据库服务器进行数据库备份文件的接收包括以下步骤:
Server接收端持续监听各个Client上传端状态:Server接收端采用Python的SocketServer服务持续监听Client上传端状态,当检测到有数据传输时开始进行接收文件步骤;
Server接收端接收文件头struct结构体包,接收到struct结构体包后使用定义的结构体规则进行解包;
Server接收端根据解包后的数据获取本次Client上传端上传的数据库备份文件名和文件大小;
Server接收端获取Client上传端所布置的数据库服务器IP;
Server接收端根据数据库备份文件名和Client上传端数据库服务器IP组织文件存储结构,创建目录准备接收数据库备份文件;
持续接收分片发送的文件传输数据,写入已组织好的数据库备份文件中,循环此步骤接收并写入数据库备份文件,直到数据库备份文件接收结束;
检测文件接收状态,当数据库备份文件已全部接收完成时进入等待数据库自动恢复步骤,接收过程中出现异常情况时,Server接收端自动发送邮件提醒,邮件接收人在配置文件中进行相应配置处理;
Server接收端按接收备份文件名创建日志文件,日志文件中详细记录Client上传端的分片上传进度以及Server接收端数据库恢复过程执行的sql和恢复日志,如有任何异常,日志文件中均进行详细记录。
有益效果
本发明的一种Python语言数据库跨平台备份与恢复方法,与现有技术相比利用Python语言实现了数据库的跨平台作业,所有任务完全实现自动化,完全无需人工干预。
本发明通过独特的socket分片传输文件方式突破大文件上传的难题;
Server接收端SocketServer支持并发,很容易实现多台服务器数据自动归集;独创的从文件传输到传输完成后自动恢复数据库到数据自动归集抽取形成一条完整线路,中途无需任何干预即可完成整个任务,中间任一环节均可实现自定义需求,按需传输文件、按需归集数据、按需抽取数据。
同时,本发明解决了跨机器传输数据库备份文件并自动恢复数据库的四大难点:
1、备份到恢复实现完全自动化,完全无需人工干预。传输文件方式非常自由,也非常容易个性化自定义,比如文件传输时间可利用配置文件自由配置,分片传输的文件大小也可通过配置文件自由配置。数据库恢复方式较为丰富,可通过Python恢复任意一种流行的数据库;
2、由于数据库采用的是Python语言,通用的平台全部支持,跨平台传输数据库备份文件将变得非常容易;
3、在大数据积累的环境下,数据库和备份文件都会非常大,总文件大小都是TB级别,甚至会到PB级别,本发明利用稳定的SocketServer和Client上传端分片上传数据库备份文件,理论上限的PB级别数据库备份文件传输都将变得很稳定,并且提供监控状态功能;
4、本发明的Server接收端可轻松实现多台服务器数据归集,也可自由定义规则抽取数据并生成特定数据报表。
附图说明
图1为Python语言数据库的连接关系图;
图2为本发明的方法顺序图。
具体实施方式
为使对本发明的结构特征及所达成的功效有更进一步的了解与认识,用以较佳的实施例及附图配合详细的说明,说明如下:
本发明使用Python语言socket分片稳定的文件传输技术,实现了超大文件传输,保证了传输过程的稳定性。分片粒度可自由控制,目前配置的是100KB,经过长时间的验证和实践,此分片粒度即可保证传输速度,也可保证传输的稳定性。
利用Python语言的跨平台性,实现了不同平台之间的文件自动化传输,比如从Linux服务器传输文件到Windows服务器。不同平台间的差异很大,但是Python语言差异小,仅需调整差异代码即可实现跨平台运行。本发明在配置中可配置兼容的平台,目前常用的平台均可运行,如Windows、Linux、MacOS X。
利用Python语言的伪循环特性,在生产服务器上部署客户端几乎不会占用服务器资源的情况完成文件传输,避免了生产服务器受文件传输和数据抽取的影响。利用很少的代码量即可实现自动化定时传输文件,配置文件中自由配置传输文件目录和时间点,Client上传端和Server接收端实时持续检测完成上传和接收任务。Server接收端预备了很多数据库抽取代码,也可自定义配置,最大化的实现个性化数据归集抽取任务。
本发明所述的一种Python语言数据库跨平台备份与恢复方法,如图1所示,Python语言数据库包括Client上传端和Server接收端通过socket通信交互,Client上传端部署在数据库服务器上,Client上传端负责分片上传文件,所以占用服务器的资源极低,对数据库服务器毫无影响。Server接收端部署在备份数据库服务器上,Server接收端接收文件并自动恢复数据库。当出现意外异常情况时,Client上传端和Server服务端均会自动发送邮件提醒。
如图2所示,Python语言数据库跨平台备份与恢复方法包括以下步骤:
第一步,Python语言数据库的设定:利用Python语言对数据库的属性进行设定。其具体步骤如下:
(1)利用Python语言的struct结构体定义数据库的文件包结构。文件包结构定义规则设定为:‘128sq’,其中,128s表示128位长度的字符串,用来储存文件名,q表示8位的long长整型,用来存储文件大小。
(2)设定Python语言的SocketServer服务为Server接收端的监听组件。
第二步,Python语言数据库跨平台备份:Client上传端将数据备份至备份数据库服务器。其具体步骤如下:
首先,Client上传端进行数据库备份文件向备份数据库服务器的上传。
(1)Client上传端自动检测待上传的数据库备份文件(数据库服务器通常是每天一次增量备份,每周一次全量备份):当Client上传端检测到待上传的数据库备份文件时,启动循环读取待上传的数据库备份文件步骤;若未发现待上传的数据库备份文件时则继续检测。在实际应用中,数据库备份文件并不是实时都会产生,通常每天才会产生一次,所以Client上传端可在配置文件中配置每天固定的检查时间,只有在配置的时间点才会去检测是否有待上传的数据库文件。Client端使用python伪循环语法持续检测的方式几乎不会占用数据库服务器资源,比较稳定安全。
(2)循环读取待上传的数据库备份文件:Client上传端检测待上传的数据库备份文件中是否有数据库全量备份文件;若有数据库全量备份文件,则只上传数据库全量备份文件,无需再上传数据库增量备份文件,因为数据库全量恢复即可替代增量恢复,并且在此次数据库全量备份文件之前的增量备份文件都将失效;若无数据库全量备份文件,则进行数据库全量备份文件和增量备份文件在内的文件打包处理。
(3)文件打包处理,打包文件头发送文件名和文件大小,基于支持跨平台,不同的平台系统编码不一样,在传输文件时就需要定义文件头包来传输二进制数据,在此使用第一步设置的Python的struct结构体定义包结构。
Client上传端使用Python的struct结构体的文件包结构形式对需上传的数据库备份文件进行打包处理,生成struct结构体包头和备份文件包。
(4)分片读取备份文件包内容循环发送给Server接收端。
Client上传端利用Python的socket分片传输struct结构体包头和备份文件包,将其传送至备份数据库服务器,每次从struct结构体包头和备份文件包中读取100KB发送给Server接收端,循环发送直到备份文件包读取结束。分片读取并发送可有效控制消耗服务器资源,以确保数据库服务器不受影响。
(5)检查文件发送状态。
当备份文件包全部发送结束时,继续Client上传端自动检测待上传的数据库备份文件步骤;发送过程中出现任何意外异常情况时,Client上传端自动发送邮件提醒,邮件接收人在配置文件中相应配置处理。
其次,Server接收端在备份数据库服务器进行数据库备份文件的接收。
(1)Server接收端持续监听各个Client上传端状态:Server接收端采用Python的SocketServer服务持续监听Client上传端状态,SocketServer服务较为稳定,且支持同一时间多个Client上传端同时上传接收数据库备份文件并自动恢复数据库,当检测到有数据传输时开始进行接收文件步骤。
(2)Server接收端接收文件头struct结构体包,接收到struct结构体包后使用定义的结构体规则进行解包。
(3)Server接收端根据解包后的数据获取本次Client上传端上传的数据库备份文件名和文件大小。
(4)Server接收端获取Client上传端所布置的数据库服务器IP,通过数据库服务器IP组织文件结构,以确保支持多服务器同时上传数据库备份文件。
(5)Server接收端根据数据库备份文件名和Client上传端数据库服务器IP组织文件存储结构,创建目录准备接收数据库备份文件。
(6)持续接收分片发送的文件传输数据,写入已组织好的数据库备份文件中,循环此步骤接收并写入数据库备份文件,直到数据库备份文件接收结束。
(7)检测文件接收状态,当数据库备份文件已全部接收完成时进入等待数据库自动恢复步骤,接收过程中出现异常情况时,Server接收端自动发送邮件提醒,邮件接收人在配置文件中相应配置处理。
(8)Server接收端按接收备份文件名创建日志文件,日志文件中详细记录Client上传端的分片上传进度以及Server接收端数据库恢复过程执行的sql和恢复日志,如有任何异常,日志文件中均进行详细记录。
第三步,Python语言数据库跨平台恢复:Server接收端对备份数据库内的数据进行恢复处理。其具体步骤如下:
(1)根据所需恢复的数据库备份文件获取到需要恢复的数据库名称,判断已接收的数据库备份文件类型;若为数据库全量备份文件则进入全量自动恢复数据库步骤,若为数据库增量备份文件则进入增量自动恢复数据库步骤。
(2)全量自动恢复数据库的步骤为:
根据获取的数据库名,使用Python调用对应数据库类型的api或执行sql进行全量自动恢复数据库,其中针对于SqlServer类型数据库,执行SqlServer通用的全量恢复数据库sql进行数据库恢复:其语法表达式如下:
RESTORE DATABASE dbname FROM DISK='全量数据库备份文件完整路径'。
(3)增量自动恢复数据库的步骤为:
根据需要恢复的数据库名获取本次增量备份恢复依赖的全量数据库备份文件(通常最新的增量数据库备份文件恢复数据库依赖最近的一次全量数据库备份文件),利用Python调用对应数据库类型的api或执行sql进行全量增量恢复数据库,其中针对于SqlServer类型数据库,可执行SqlServer通用的增量恢复数据库sql进行数据库恢复,其语法表达式如下:
RESTORE DATABASE dbname FROM DISK='全量数据库备份文件完整路径'WITHNORECOVERY,
RESTORE DATABASE dbname FROM DISK='增量数据库备份文件完整路径'WITHFILE=1,NOUNLOAD,STATS=10。
(4)检查数据库恢复状态:当数据库恢复全部自动结束后,Server接收端持续等待Client上传端的恢复指令,数据库恢复过程中出现任何异常情况时,Server接收端自动发送邮件提醒,邮件接收人在配置文件中相应配置处理。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明的范围内。本发明要求的保护范围由所附的权利要求书及其等同物界定。

Claims (6)

1.一种Python语言数据库跨平台备份与恢复方法,Python语言数据库包括Client上传端、Server接收端,Client上传端和Server接收端通过socket通信交互,Client上传端部署在数据库服务器上,Client上传端负责分片上传文件,Server接收端部署在备份数据库服务器上,Server接收端接收文件并自动恢复数据库;其特征在于,所述的跨平台备份与恢复方法包括以下步骤:
11)Python语言数据库的设定:利用Python语言对数据库的属性进行设定;
12)Python语言数据库跨平台备份:Client上传端将数据备份至备份数据库服务器;
13)Python语言数据库跨平台恢复:Server接收端对备份数据库内的数据进行恢复处理。
2.根据权利要求1所述的一种Python语言数据库跨平台备份与恢复方法,其特征在于,所述Python语言数据库的设定包括以下步骤:
21)利用Python语言的struct结构体定义数据库的文件包结构,文件包结构定义规则设定为:‘128sq’,其中,128s表示128位长度的字符串,用来储存文件名,q表示8位的long长整型,用来存储文件大小;
22)设定Python语言的SocketServer服务为Server接收端的监听组件。
3.根据权利要求1所述的一种Python语言数据库跨平台备份与恢复方法,其特征在于,所述Python语言数据库跨平台备份包括以下步骤:
31)Client上传端进行数据库备份文件向备份数据库服务器的上传;
32)Server接收端在备份数据库服务器进行数据库备份文件的接收。
4.根据权利要求1所述的一种Python语言数据库跨平台备份与恢复方法,其特征在于,所述的Python语言数据库跨平台恢复包括以下步骤:
41)根据所需恢复的数据库备份文件获取到需要恢复的数据库名称,判断已接收的数据库备份文件类型;若为数据库全量备份文件则进入全量自动恢复数据库步骤,若为数据库增量备份文件则进入增量自动恢复数据库步骤;
42)全量自动恢复数据库:根据获取的数据库名,使用Python调用对应数据库类型的api或执行sql进行全量自动恢复数据库,其中针对于SqlServer类型数据库,执行SqlServer通用的全量恢复数据库sql进行数据库恢复:其语法表达式如下:
RESTORE DATABASE dbname FROM DISK='全量数据库备份文件完整路径';
43)增量自动恢复数据库:
根据需要恢复的数据库名获取本次增量备份恢复依赖的全量数据库备份文件,利用Python调用对应数据库类型的api或执行sql进行全量增量恢复数据库,其中针对于SqlServer类型数据库,执行SqlServer通用的增量恢复数据库sql进行数据库恢复,其语法表达式如下:
RESTORE DATABASE dbname FROM DISK='全量数据库备份文件完整路径'WITHNORECOVERY,
RESTORE DATABASE dbname FROM DISK='增量数据库备份文件完整路径'WITH FILE=1,NOUNLOAD,STATS=10;
44)检查数据库恢复状态:当数据库恢复全部自动结束后,Server接收端持续等待Client上传端的恢复指令,数据库恢复过程中出现任何异常情况时,Server接收端自动发送邮件提醒,邮件接收人在配置文件中进行相应配置处理。
5.根据权利要求3所述的一种Python语言数据库跨平台备份与恢复方法,其特征在于,所述Client上传端进行数据库备份文件向备份数据库服务器的上传以下步骤:
51)Client上传端自动检测待上传的数据库备份文件:当Client上传端检测到待上传的数据库备份文件时,启动循环读取待上传的数据库备份文件步骤;若未发现待上传的数据库备份文件时则继续检测;
52)循环读取待上传的数据库备份文件:Client上传端检测待上传的数据库备份文件中是否有数据库全量备份文件;若有数据库全量备份文件,则只上传数据库全量备份文件;若无数据库全量备份文件,则进行数据库全量备份文件和增量备份文件在内的文件打包处理;
53)文件打包处理:Client上传端使用Python的struct结构体的文件包结构形式对需上传的数据库备份文件进行打包处理,生成struct结构体包头和备份文件包;
54)分片读取备份文件包内容循环发送给Server接收端:Client上传端利用Python的socket分片传输struct结构体包头和备份文件包,将其传送至备份数据库服务器,每次从struct结构体包头和备份文件包中读取100KB发送给Server接收端,循环发送直到备份文件包读取结束;
55)检查文件发送状态:当备份文件包全部发送结束时,继续Client上传端自动检测待上传的数据库备份文件步骤;发送过程中出现任何意外异常情况时,Client上传端自动发送邮件提醒,邮件接收人在配置文件中相应配置处理。
6.根据权利要求3所述的一种Python语言数据库跨平台备份与恢复方法,其特征在于,所述Server接收端在备份数据库服务器进行数据库备份文件的接收包括以下步骤:
61)Server接收端持续监听各个Client上传端状态:Server接收端采用Python的SocketServer服务持续监听Client上传端状态,当检测到有数据传输时开始进行接收文件步骤;
62)Server接收端接收文件头struct结构体包,接收到struct结构体包后使用定义的结构体规则进行解包;
63)Server接收端根据解包后的数据获取本次Client上传端上传的数据库备份文件名和文件大小;
64)Server接收端获取Client上传端所布置的数据库服务器IP;
65)Server接收端根据数据库备份文件名和Client上传端数据库服务器IP组织文件存储结构,创建目录准备接收数据库备份文件;
66)持续接收分片发送的文件传输数据,写入已组织好的数据库备份文件中,循环此步骤接收并写入数据库备份文件,直到数据库备份文件接收结束;
67)检测文件接收状态,当数据库备份文件已全部接收完成时进入等待数据库自动恢复步骤,接收过程中出现异常情况时,Server接收端自动发送邮件提醒,邮件接收人在配置文件中相应配置处理;
68)Server接收端按接收备份文件名创建日志文件,日志文件中详细记录Client上传端的分片上传进度以及Server接收端数据库恢复过程执行的sql和恢复日志,如有任何异常,日志文件中均进行详细记录。
CN201910618547.0A 2019-07-10 2019-07-10 一种Python语言数据库跨平台备份与恢复方法 Active CN110309021B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910618547.0A CN110309021B (zh) 2019-07-10 2019-07-10 一种Python语言数据库跨平台备份与恢复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910618547.0A CN110309021B (zh) 2019-07-10 2019-07-10 一种Python语言数据库跨平台备份与恢复方法

Publications (2)

Publication Number Publication Date
CN110309021A true CN110309021A (zh) 2019-10-08
CN110309021B CN110309021B (zh) 2021-06-15

Family

ID=68079816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910618547.0A Active CN110309021B (zh) 2019-07-10 2019-07-10 一种Python语言数据库跨平台备份与恢复方法

Country Status (1)

Country Link
CN (1) CN110309021B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908840A (zh) * 2019-12-02 2020-03-24 杭州安恒信息技术股份有限公司 一种还原bak备份文件的方法、装置、设备及存储介质
CN111158957A (zh) * 2019-12-31 2020-05-15 广州鼎甲计算机科技有限公司 一种虚拟机文件恢复方法、系统、装置及存储介质
CN111176889A (zh) * 2019-12-11 2020-05-19 天翼电子商务有限公司 自动化备份恢复装置及方法
CN112256483A (zh) * 2020-10-30 2021-01-22 浪潮云信息技术股份公司 一种SQL Server云数据库备份方法
CN113127259A (zh) * 2019-12-30 2021-07-16 北京懿医云科技有限公司 数据部署方法、装置、设备及存储介质
CN114172898A (zh) * 2022-02-10 2022-03-11 中国人民解放军海军工程大学 一种大文件远程传输方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776116A (zh) * 2016-11-15 2017-05-31 许继集团有限公司 一种跨平台数据远程备份和还原方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776116A (zh) * 2016-11-15 2017-05-31 许继集团有限公司 一种跨平台数据远程备份和还原方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
HNICHOLAS: "Python实现大文件分片上传 CSDN https://blog.csdn.net/zsy162534/article/details/83991785", 《PYTHON实现大文件分片上传》 *
WEIXIN_30809333: "Python实现对文件的全量、增量备份 CSDN https://blog.csdn.net/weixin_30809333/article/details/98040607", 《PYTHON实现对文件的全量、增量备份》 *
截击机1: "Python--MySQL权限管理 数据备份还原 博客园 https://www.cnblogs.com/uiys/p/10673276.html", 《PYTHON--MYSQL权限管理 数据备份还原》 *
校草的舍友: "python socket传输文件(解决跨平台传输时数据丢失)CSDN https://blog.csdn.net/zsy162534/article/details/83991785", 《PYTHON SOCKET传输文件(解决跨平台传输时数据丢失)》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908840A (zh) * 2019-12-02 2020-03-24 杭州安恒信息技术股份有限公司 一种还原bak备份文件的方法、装置、设备及存储介质
CN111176889A (zh) * 2019-12-11 2020-05-19 天翼电子商务有限公司 自动化备份恢复装置及方法
CN113127259A (zh) * 2019-12-30 2021-07-16 北京懿医云科技有限公司 数据部署方法、装置、设备及存储介质
CN113127259B (zh) * 2019-12-30 2024-03-12 北京懿医云科技有限公司 数据部署方法、装置、设备及存储介质
CN111158957A (zh) * 2019-12-31 2020-05-15 广州鼎甲计算机科技有限公司 一种虚拟机文件恢复方法、系统、装置及存储介质
CN112256483A (zh) * 2020-10-30 2021-01-22 浪潮云信息技术股份公司 一种SQL Server云数据库备份方法
CN114172898A (zh) * 2022-02-10 2022-03-11 中国人民解放军海军工程大学 一种大文件远程传输方法

Also Published As

Publication number Publication date
CN110309021B (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
CN110309021A (zh) 一种Python语言数据库跨平台备份与恢复方法
CN103067483A (zh) 基于数据包的远程数据增量同步方法和装置
CN105930228A (zh) 数据备份方法及系统
CN102360410B (zh) 一种文件系统的用户操作发现方法和装置
CN107256182A (zh) 一种数据库还原的方法及设备
CN107168775B (zh) 一种悬挂事务自动处理的方法和装置
CN110895488B (zh) 任务调度方法及装置
CN102521390B (zh) 一种基于功能插件的数据库管理监控系统
CN101771548A (zh) 文件同步方法及系统
CN102136941A (zh) 一种综合接入设备备份数据方法、设备以及系统
CN108710684A (zh) Etl任务数据源切换方法、系统、计算机设备和存储介质
CN102467520A (zh) 一种数据存储方法和装置
CN101631042B (zh) 一种实现异构网管系统的数据备份恢复的方法及系统
CN110650164A (zh) 文件的上传方法、装置、终端以及计算机存储介质
CN105404645A (zh) 文件服务器系统中的文件管理方法及文件服务器系统
CN108900337B (zh) 一种元数据服务的故障恢复方法、服务器、客户端及系统
CN105468643A (zh) 分布式文件系统的访问方法和系统
CN104063294B (zh) 一种Linux系统备份和恢复方法
CN101650678A (zh) 一种基于文件操作语义异步复制的方法
CN110620798A (zh) Ftp连接的控制方法、系统、设备和存储介质
CN104734881A (zh) 一种日志和异常探针的实现方法
CN105787135A (zh) 一种用于数据库日志备份的方法与设备
CN111611107A (zh) 获取数据库日志的方法及装置
CN101866311A (zh) 一种利用外设的计算机系统监控与恢复方法
CN112966046B (zh) 数据同步方法和装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 230088 first floor, no.19-6 Tianhu Road, high tech Zone, Hefei City, Anhui Province

Applicant after: Anhui qisemi Information Technology Co.,Ltd.

Address before: 230088 no.a-441, National University Science Park, 602 Huangshan Road, high tech Zone, Hefei City, Anhui Province

Applicant before: HEFEI YINGYUN INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant