简体   繁体   English

数据库增量备份和还原(如何在Perl或Java中实现)

[英]Database Incremental Backup and Restore (how to implement in Perl or Java)

I have several Sqlite databases, which will be updated daily. 我有几个Sqlite数据库,每天都会更新。 So I need to do daily backup, in case if any crash happens so I can restore. 因此,我需要进行日常备份,以防万一发生任何崩溃,以便恢复。 However, it is costly to backup the whole database everyday, so I'm thinking of doing incremental backup (only backup those information between two different dates). 但是,每天备份整个数据库成本很高,因此我正在考虑进行增量备份(仅在两个不同日期之间备份那些信息)。

Currently my database updating process is done in Perl, so I am wondering: does anyone know how can I perform incremental database backup/ recovery in Perl/ Matlab/ Java using script? 目前,我的数据库更新过程是在Perl中完成的,所以我想知道:有人知道如何使用脚本在Perl / Matlab / Java中执行增量数据库备份/恢复吗?

Thank you! 谢谢!

Yours Sincerely, Qiao. 您真诚的,乔。

  1. Store the timestamp of when each row was changed in your tables (call it change_timestamp column). 将每行更改的时间戳记存储在表中(称为change_timestamp列)。

  2. Don't delete rows - instead, mark them with "D" deleted status. 不要删除行-而是将其标记为“ D”已删除状态。 This way you don't have to break your head/back figuring out which rows were deleted since last backup. 这样,您不必费神就可以确定自上次备份以来删除了哪些行。

  3. Have a "backup times" table 有一个“备份时间”表

  4. When you run a backup: 运行备份时:

    • Save current run time into "backup times" table 将当前运行时间保存到“备份时间”表中

    • Retrieve the last 2 rows from "backup times" table (If <2 rows, do full backup) 从“备份时间”表中检索最后2行(如果<2行,请执行完整备份)

    • Back up main table rows where change_timestamp is between the 2 last backup timestamps. 备份主表行,这些行的change_timestamp在最后两个备份时间戳之间。

You can do #1/#2 with judicious use of audit tables but it's a bit harder. 您可以明智地使用审计表来执行#1 /#2的操作,但这会有点困难。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM