Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ekristen/level-snapshot
Takes snapshots and maintains a transactional log since the snapshot, allows for replication via snapshots and the logs
https://github.com/ekristen/level-snapshot
Last synced: about 2 months ago
JSON representation
Takes snapshots and maintains a transactional log since the snapshot, allows for replication via snapshots and the logs
- Host: GitHub
- URL: https://github.com/ekristen/level-snapshot
- Owner: ekristen
- License: mit
- Created: 2015-11-06T19:38:52.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2016-02-19T19:55:37.000Z (almost 9 years ago)
- Last Synced: 2024-10-13T15:56:27.574Z (3 months ago)
- Language: JavaScript
- Size: 28.3 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# level-snapshot
Snapshot Level DB using level-hyper's liveBackup method. After each snapshot a transaction log is kept.
## Usage
```js
var level = require('level-hyper')
var Snapshot = require('level-snapshot')var db = level('./db')
var snapshot = Snapshot(db)snapshot.on('snapshot:complete', function (snapshotName) {
console.log('took snapshot', snapshotName)
})snapshot.start()
```## Api
#### `var snapshot = Snapshot(db[, options])`
Create a `level-snapshot` instance using `db`. Options include:
```js
{
path: './snaphots', // store snapshots in this folder
logPath: './logs', // store transaction logs in this folder
interval: 3600, // interval in seconds between snapshots
lastSyncPath: './lastsync' // file to store last sync time
}
```#### `snapshot.start()`
Take a snapshot on `nextTick()` and continue taking snapshots at each `interval`. Defaults to one snapshot per hour.
#### `snapshot.stop()`
Stop taking snapshots.
#### `var server = snapshot.createServer()`
Create and return a `tcp` server. The server is not listening to connections until you call `.listen()` on it.
#### `var client = snapshot.createClient(port, host)`
Create a snapshot client and connect it to `port` and `host`.
If the client has never synced with the server before, it will:
* close the db
* stream the latest snapshot from the server
* re-open the db
* receive live updates from the serverIf the client has synced before, it will:
* receive all logs since the last sync time
* receive live updates from the server#### `var time = snapshot.getLastSnapshotSyncTime()`
Returns the last sync time.
#### `snapshot.on('snapshot:start', function (name) {})`
Emitted when a snapshot has started.
#### `snapshot.on('snapshot:complete', function (name) {})`
Emitted when a snapshot has completed successfully.
#### `snapshot.on('snapshot:error', function (err) {})`
Emitted if a snapshot failed.
#### `snapshot.on('snapshot:cleanup', function (path) {})`
Emitted when an old snapshot has been cleaned up.
#### `snapshot.on('snapshot:db-reopened', function () {})`
Emitted when the db was reopened successfully.
## License
MIT