[发明专利]一种获取数据库一致性快照的方法在审
申请号: | 202011201759.8 | 申请日: | 2020-11-02 |
公开(公告)号: | CN112286870A | 公开(公告)日: | 2021-01-29 |
发明(设计)人: | 刘小龙;唐军;周文龙 | 申请(专利权)人: | 四川长虹电器股份有限公司 |
主分类号: | G06F16/11 | 分类号: | G06F16/11;G06F16/22;G06F16/28 |
代理公司: | 成都虹桥专利事务所(普通合伙) 51124 | 代理人: | 吴中伟 |
地址: | 621000 四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 数据库 一致性 快照 方法 | ||
本发明涉及数据库领域,其公开了一种获取数据库一致性快照的方法,实现数据库在可读写的状态下获取到一致性快照。该方法包括以下步骤:A、关闭所有打开的表,给全局数据库加上读锁;B、更改可重复读的事务隔离级别,开启事务的一致性快照;C、获取复制日志状态信息,释放全局读锁;D、结合还原点对单个表结构和数据顺序导出;E、断开连接并中止事务。本发明结合了锁和事务隔离级别的特性,在数据库正常读写的过程中,从回滚段里获取到事务开始时间点的快照。保证了在所有同时间点的数据在导出的过程里,不影响其他事务对数据的更新操作。同时结合了还原点的原理,让每个表数据导出之后,都可以再进行数据结构的修改,最大限度的提供了数据库的可用性。
技术领域
本发明涉及数据库领域,具体涉及一种获取数据库一致性快照的方法。
背景技术
在关系型数据库中,数据一致性通常是非常关键的概念。一致性是对数据可见性的约束,保证在一个事务中的多次操作的数据中间状态对其他事务不可见。而一致性快照是指数据库里某个特定时间点的数据集合,集合里的数据需要保持在同一个时间点。
传统技术中,在MySQL数据库中获取一致性快照,首先需要对全局数据库加读锁,避免数据再发生变化;然后通过查询所有表数据并导出,从而获取到所有数据的一致性快照。因为在获取数据的过程中一直使用排他锁,导致整个数据导出的过程中无法对数据库进行更新操作。还有一种方法是直接关闭数据库,再拷贝操作系统中的数据库文件,组成了数据库的一致性物理快照。虽然这种方法可以快速直接的获取到一致性数据,但是关闭数据库也就是意味着整个系统不能对外提供服务了。因此,这些方法最大的缺陷是,不能在获取到数据一致性快照的同时,保持数据库本身的读写可用性。
发明内容
本发明所要解决的技术问题是:提出一种获取数据库一致性快照的方法,实现数据库在可读写的状态下获取到一致性快照。
本发明解决上述技术问题采用的技术方案是:
一种获取数据库一致性快照的方法,包括以下步骤:
A、关闭所有打开的表,给全局数据库加上读锁;
B、更改可重复读的事务隔离级别,开启事务的一致性快照;
C、获取复制日志状态信息,释放全局读锁;
D、结合还原点对单个表结构和数据顺序导出;
E、断开连接并中止事务。
作为进一步优化,步骤B中,在当前会话更改操作的事务级别为可重复读,再在会话中开启全局事务的一致性快照。
作为进一步优化,步骤C中,在全局事务开始之后,在所有表数据开始导出之前,此刻获取的复制日志状态信息,包括了具体的日志文件编号和偏移量,采用这两个指标作为当前快照的一致性物理位置点,和当前的逻辑时间点对应。
作为进一步优化,步骤D中,在每个数据库开始导出之前都创建一个还原点,然后分别导出单个表的表结构和数据,对每个表导出完成之后,都回滚到开始创建的还原点,来释放操作表上的元数据锁;对于每一个已经完成导出的表,都可以立即再执行对表的数据结构修改操作。
作为进一步优化,步骤E中,在完成了对数据库中所有表的数据导出之后,即获取到完整的数据库一致性快照,在最后一次回滚还原点之后,直接断开连接,中止建立的全局事务。
本发明的有益效果是:
本发明结合了锁和事务隔离级别的特性,在数据库正常读写的过程中,从回滚段里获取到事务开始时间点的快照。保证了在所有同时间点的数据在导出的过程里,不影响其他事务对数据的更新操作。同时结合了还原点的原理,让每个表数据导出之后,都可以再进行数据结构的修改,最大限度的提供了数据库的可用性。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川长虹电器股份有限公司,未经四川长虹电器股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011201759.8/2.html,转载请声明来源钻瓜专利网。