I don't think it can be done, and if it could be done, it would not be wise.

The journal is owned and specific to a connection. a hot Journal for connection A on DB 1 cannot ever be used to roll back or affect in any way connection B on DB 2.

However, when you say the "standby is syncing", I assume from your description it copies the file all the time? having an exact copy of the DB file and accompanying journal might work on a technical level, but how can you be sure you have the exact same moment in time files? The answer is easy: you can't. Especially not when one of the machines went down or hung up.

The best way to achieve your scenario (in my opinion, other people might come up with better best ways) is to either have a second connection to the DB which is updating new records to the second DB (which means the second DB will handle its own hot journals and back ups and the like.) with maybe a once-a-day copy of the full DB after possibly a vacuum or other maintenance routines. This all depends on your workload and implementation specifics.

Personally I would have System output any and all SQL that it writes to DB 1 to a file or pipe to the sync service/program which will then apply all the exact same SQL to the second DB, that way they are always in sync and they can't both fail. (Ok they /can/ technically, but the odds of that is negligible). This option also prevents re-copying insane amounts of data which are in both DBs already, all the time.

Another option is the backup API but if you don't have a relatively good space of time to make copies of the DB (i.e where there are no updates) then it will not work well.




On 2/12/2015 11:09 PM, Mayank Kumar (mayankum) wrote:
Hi All

We have two systems which are running in active/standby configuration. The 
active machine, is actively writing sqlite transactions to a file abcd.db. The 
standby is syncing the abcd.db  file from the active  machine on a 
communication channel and writing the delta records to the  abcd.db on the 
standby machine.

Now my question is , lets say the active machine crashes in the middle of the 
transaction and we have a hot journal created on the active machine.   Does it 
make sense to copy the hot journal to the standby machine, so that the sqlite 
application on the standby will notice this hot journal and use it to recover 
any lost transactions  or the hot journal can only be used on the same db on 
which it was created.

Remember , both the db on active and standby are same(maintained in sync and 
have same names), so can a hot journal from one db on active machine be used on 
standby machine to recover lost transactions.

We are assuming that somehow the sqlite application on active is not able to 
use the journal file to recover from it, so as a fallback would copying it to 
standby make sense at all so that it can be used by the backup db ?

Hope by question doesn't sound too absurd:)
-Mayank
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to