摘要:
在现代数据库管理系统中,数据的安全性和可靠性是至关重要的。AntDB-M作为一款支持内存存储引擎的数据库,特别设计了Check Point(简称CK)功能来确保内存中的数据能够安全地持久化到磁盘上,防止意外情况导致数据丢失。本文将详细介绍CK功能的好处、整体流程以及如何实现数据的持久化。
1.CK的好处
1.1数据持久化
- 将内存中保存的数据和表结构等信息写入到磁盘文件中,确保数据的长期保存。
1.2缩短数据库恢复时间
- 数据库恢复时,先加载CK生成的文件,然后加载redo日志。由于redo日志记录了数据库的操作,使用redo日志恢复相当于重新执行操作,这比直接加载CK生成的数据文件要慢。
1.3节省磁盘空间
- CK前的数据已经写入到数据文件中,对应的redo日志文件可以被删除,从而节省磁盘空间。
2.CK的整体流程
加DDL锁
- CK操作过程中,不允许对表进行修改表结构的动作。加DDL锁可以防止DDL操作,同时为了减少DDL锁持有时间,在拿到DDL锁后,将当前所有表加上读锁,记录当前表列表,然后释放DDL锁。
加DB锁
- DB锁主要用于与事务做排它操作,保证DB锁加锁后,没有事务正在提交或回滚。持有DB锁后,记录当前的事务号作为CK的事务号。
获取正在进行的事务列表
- 加上DB锁后,记录正在进行的事务,并提取它们的undo数据,回写到CK文件中,以保证CK文件中的数据是事务完整的。
解锁DB锁
- 解锁DB锁后,事务可以正常提交或回滚。提交或回滚时会记录当前事务执行过的操作,并记录restore信息。
dump表数据
- 一个表对应一个线程,将表数据写入到磁盘中。在此过程中,所有事务执行的修改操作都会记录restore信息。
等待之前记录的所有事务结束
- 在表数据全部落地之后,等待之前加DB锁时获取的事务都提交或回滚,按照需要将它们的undo数据覆盖restore信息。
restore
- 将之前所有的restore信息回写到CK文件中。对于表空间来说,restore中记录了oid,根据oid可以计算出这一行在CK文件中的偏移量,然后将行数据写入到CK文件中。
记录表结构文件
- 表结构文件记录了表元数据。在数据库恢复时,将之前对应事务号的表结构文件恢复到对应目录。
删除临时文件
- 在dump文件和restore过程中操作的文件,操作的都是以.tmp作为后缀的临时文件,操作完成后删除这些文件。
记录表列表
- 表列表文件记录了CK事务号和当前CK对应的表列表。在数据库通过CK恢复时,加载表列表文件,读取事务号和表列表,再根据表列表和事务号信息获取需要加载的表和表对应的文件。
CK流程结束后会生成三类文件:表数据文件,表结构文件和表列表文件,如下图。
3.AntDB-M的CHECK POINT操作
AntDB-M提供命令实现CK操作,支持手动执行或设置成定时任务自动执行该命令。执行CK的过程中不阻塞业务的执行,确保业务的连续性和数据的安全性。
具体命令如下:
check point engine=mdb
复制
总结
AntDB-M的CHECK POINT功能是确保数据安全和提高数据库恢复效率的关键。通过本文的介绍,读者可以了解CK的重要性和执行流程,以及如何在AntDB-M中实现数据的持久化。AntDB-M灵活的CK操作方式,使得数据库管理更加高效和可靠。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。