RethinkDB Pull
- Prompts for local and remote db/password info if none provided in
options
argument or.env
file - Uses ssh-tunnel to connect to a remote RethinkDB server
- Downloads a compressed file containing a database from the server
- Extracts the file and imports the tables into a local database, overwriting existing data unless
merge
option istrue
Requirements
- rethinkdb: The Python version (
sudo pip install rethinkdb
) - node.js >= 4
Usage
Put the following in a file within your project (e.g. pull.js
):
const rethinkdbPull = ; // Using minimum required settings;
Add an npm script to package.json
:
On the command line:
npm run db:pull
Returns
The rethinkdbPull
function returns a Promise
.
The Promise is resolved with a settings
object, which is the result of merging per-call settings, environment variables, and default settings.
Settings
Available settings, with their defaults:
let settings = localDb: undefined // String localPwd: undefined // String remoteDb: undefined // String or Array remotePwd: undefined tempDir: '/tmp' includeTables: excludeTables: force: false // if true, skips inquirer prompts that would otherwise appear fetchOnly: false // [ *see more below ] fetchToPath: '/tmp/rethink_dump.tar.gz' // if fetchOnly is true, path of the tarball to save // See https://github.com/agebrock/tunnel-ssh for details on tunnel settings: tunnel: username: undefined host: undefined port: 22 dstHost: '127.0.0.1' dstPort: 28015 localHost: '127.0.0.1' localPort: 9999 keepAlive: true
* fetchOnly
may be useful as a backup strategy.
If set to true
, the function call will only dump
the remote db, NOT restore
into a local db. The resulting file will be saved as: [tempDir]/[timestamp]/rethink_dump.tar.gz
.
Database and password settings
- If you don't include values for
localDb
,localPwd
,remoteDb
, orremotePwd
, you will be prompted to do so. - Instead of passing these settings into the function argument, you may use
.env
settings:DB_NAME # localDbLOCAL_DB_ADMIN_PASSWORD # localPwdREMOTE_DB_NAME # remoteDbREMOTE_DB_ADMIN_PASSWORD # remotePwd - If you pass in
remoteDb
as an array, you will be prompted to choose one of the array elements when the script is run.