Commit Graph

34 Commits

Author SHA1 Message Date
Ben Johnson
afb8731ead Add snapshot interval
This commit adds the ability to periodically perform snapshots on
an interval that is separate from retention. For example, this lets
you retain backups for 24 hours but you can snapshot your database
every six hours to improve recovery time.
2021-02-25 15:34:13 -07:00
Ben Johnson
7f81890bae Fix shadow wal corruption on stalled validation
This commit fixes a timing bug that occurs in a specific scenario
where the shadow wal sync stalls because of an s3 validation and
the catch up write to the shadow wal is large enough to allow a
window between WAL reads and the final copy.

The file copy has been replaced by direct writes of the frame
buffer to the shadow to ensure that every validated byte is exactly
what is being written to the shadow wal. The one downside to this
change is that the frame buffer will grow with the transaction
size so it will use additional heap. This can be replaced by a
spill-to-disk implementation but this should work well in the
short term.
2021-02-06 07:28:15 -07:00
Ben Johnson
67eeb49101 Allow replica URL to be used for commands
This commit refactors the commands to allow a replica URL when
restoring a database. If the first CLI arg is a URL with a scheme,
the it is treated as a replica URL.
2021-01-26 16:33:16 -07:00
Ben Johnson
7fb98df240 cleanup 2021-01-18 15:58:49 -07:00
Ben Johnson
14dad1fd5a Switch from gzip to lz4 2021-01-18 14:45:12 -07:00
Ben Johnson
90a1d959d4 Remove size from s3 filenames 2021-01-17 10:02:06 -07:00
Ben Johnson
04d75507e3 Fix checksum hex padding 2021-01-17 09:52:09 -07:00
Ben Johnson
e1c9e09161 Update wal segment naming 2021-01-14 15:26:29 -07:00
Ben Johnson
a42f83f3cb Add LITESTREAM_CONFIG env var 2021-01-13 13:17:38 -07:00
Ben Johnson
57a02a8628 S3 replica 2021-01-13 10:14:54 -07:00
Ben Johnson
faa5765745 Add retention policy, remove WAL subdir 2021-01-12 15:22:37 -07:00
Ben Johnson
1fa1313b0b Add trace logging. 2021-01-11 11:04:29 -07:00
Ben Johnson
bcdb553267 Use database owner/group 2021-01-11 09:39:08 -07:00
Ben Johnson
f4d0d87fa7 Add DB.UpdatedAt() tests 2021-01-01 08:20:40 -07:00
Ben Johnson
3b9275488d Add 'validate' command 2020-12-31 10:36:48 -07:00
Ben Johnson
11d7d22383 Add 'wal' command 2020-12-30 16:03:23 -07:00
Ben Johnson
ffc25e2654 Add 'snapshots' command. 2020-12-30 15:31:35 -07:00
Ben Johnson
d4891f33da Refactor DB.checkpoint() to accept any mode.
This was originally meant to add a TRUNCATE checkpoint before starting
a new generation, however, there is a write lock that blocks the
checkpoint and it's more complicated to roll it back and attempt the
truncation.
2020-12-29 17:02:33 -07:00
Ben Johnson
42a33cccf4 Group WAL files in file replica 2020-12-29 16:40:28 -07:00
Ben Johnson
81e99c8035 Add 'restore' command. 2020-12-29 12:37:42 -07:00
Ben Johnson
98014f4e49 Add generations command 2020-12-26 09:39:21 -07:00
Ben Johnson
89fd441e9a Remove tmp files on start up 2020-12-24 16:42:45 -07:00
Ben Johnson
9fa526f2c3 File replicator snapshot 2020-12-24 15:41:45 -07:00
Ben Johnson
341eac268c Basic file replication working with WAL 2020-12-24 13:23:52 -07:00
Ben Johnson
9fe52ce3f5 Fix rollover issue under load 2020-12-23 13:10:04 -07:00
Ben Johnson
5218a1f2c2 Add checkpoint seq no verification. 2020-12-23 11:15:10 -07:00
Ben Johnson
79d19e25e6 Clean up old generations on startup 2020-12-22 13:52:31 -07:00
Ben Johnson
2bbe5d91bf Add salt & checksum checking 2020-12-21 16:59:15 -07:00
Ben Johnson
85e97cd6ac db refactor 2020-12-17 16:32:10 -07:00
Ben Johnson
2941a2433f Add recovery for 'real WAL only'. 2020-11-06 16:30:37 -07:00
Ben Johnson
d964e4199a Validate sqlite header 2020-11-06 12:33:01 -07:00
Ben Johnson
e52d3be78d Fixing locking; unlock still not working 2020-11-03 16:35:58 -07:00
Ben Johnson
d30f06b618 Implement Checksum() 2020-10-23 14:01:52 -06:00
Ben Johnson
dc3da53c76 Add WALHeader & WALFrameHeader 2020-10-22 14:53:14 -06:00