5 分間隔で実行される cronjob から sqlite データベースをバックアップしようとしています。データベースは「ライブ」であるため、バックアップを実行したいときに実行中のクエリがあります。
バックアップを信頼できるように、バックアップ時にデータベースが良好な状態であることを確認したいと思います。
私の現在の戦略(擬似コード):
function backup()
{
    #try to acquire the lock for 2 seconds, then check the database integrity
    sqlite3 mydb.sqlite '.timeout 2000' 'PRAGMA integrity_check;'
    if (integrity is ok and database was not locked)
    {
        #perform the backup to backup.sqlite
        sqlite3 mydb.sqlite '.timeout 2000' '.backup backup.sqlite'
        if (backup could be performed)
        {
            #Check the consistency of the backup database
            sqlite3 backup.sqlite 'PRAGMA integrity_check;'
            if (ok)
            {
                return true;
            }
        }
    }
    return false;
}
さて、私の戦略にはいくつかの問題があります。
- ライブ データベースがロックされていると、バックアップを実行できないため、問題が発生します。多分トランザクションはそこで役立つでしょうか?
 - とバックアップの間に何か問題が発生した場合
PRAGMA integrity_check;、私はめちゃくちゃです。 
何か案は?sqlite3 .backupところで、と 古き良きの違いは何cp mydb.sqlite mybackup.sqliteですか?
[編集]私は組み込みシステムで nodejs を実行しているので、誰かが Ruby ラッパーを使用したsqlite オンライン バックアップ APIを提案したとしても、チャンスはありません ;(