摘要:
在现代数据库管理系统中,数据的安全性和可靠性是至关重要的。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操作方式,使得数据库管理更加高效和可靠。
关于亚信安慧AntDB数据库
AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

点击了解 往期精彩