Skip to content

A command line tool to ease development and administration.

License

Notifications You must be signed in to change notification settings

gather/thinker

Repository files navigation

Thinker

A RethinkDB management tool.

npm versionlicense

A command line tool to ease development and administration.

FAQ

Doesn't RethinkDB already have dump and restore commands for handling this?

Thinker's clone command can dump and restore in one step (even to remote databases). clone can also target a different database on the same server.

The sync command is different entirely, sync runs a hashing function on the tables in both databases and only modifies the data that is different, saving tons of bandwidth and time. For example, I regularly update a local copy of a production database for development. The database is 20GB in size, I can sync the changes over a ~25mb link in about 20 minutes.


Special thanks to Arthur Andrew Medical for sponsoring this project.

Arthur Andrew Medical manufactures products with ingredients that have extensive clinical research for safety and efficacy. We specialize in Enzymes, Probiotics and Antioxidants.


Installation.

Required nodejs v6+

npm install -g thinker

Documentation

Clone a RethinkDB database.

thinker clone directly copies tables, indexes and data from the source database to the target database. The target database is dropped and recreated.

Thinker Clone ============================== Clone a RethinkDB database on the same host or between remote hosts. Usage: thinker clone [options] thinker clone --sh host[:port] --th host[:port] --sd dbName --td newDbName thinker clone -h | --help Options: --sh, --sourceHost=<host[:port]> Source host, defaults to 'localhost:21015' --th, --targetHost=<host[:port]> Target host, defaults to 'localhost:21015' --sd, --sourceDB=<dbName> Source database --td, --targetDB=<dbName> Target database --pt, --pickTables=<table1,table2> Comma separated list of tables to copy (whitelist) --ot, --omitTables=<table1,table2> Comma separated list of tables to ignore (blacklist) Note: '--pt' and '--ot' are mutually exclusive options. --user Source and Target username --password Source and Target password --su Source username, overrides --user --sp Source password, overrides --password --tu Target username, overrides --user --tp Target password, overrides --password

Synchronize two RethinkDB databases.

thinker sync Synchronizes tables, indexes and data from the source database to the target database. The target database is modified to match the source.

Thinker Sync ============================== Sync two RethinkDB databases. Usage: thinker sync [options] thinker sync --sh host[:port] --th host[:port] --sd dbName --td dbName thinker sync -h | --help Options: --sh, --sourceHost=<host[:port]> Source host, defaults to 'localhost:21015' --th, --targetHost=<host[:port]> Target host, defaults to 'localhost:21015' --sd, --sourceDB=<dbName> Source database --td, --targetDB=<dbName> Target database --pt, --pickTables=<table1,table2> Comma separated list of tables to sync (whitelist) --ot, --omitTables=<table1,table2> Comma separated list of tables to ignore (blacklist) Note: '--pt' and '--ot' are mutually exclusive options. --user Source and Target username --password Source and Target password --su Source username, overrides --user --sp Source password, overrides --password --tu Target username, overrides --user --tp Target password, overrides --password --silent, --s Skip interactive approval --c, --companyIds=<id1,id2> Uses seconary ids to filter Company Secondary Index from what is synced

To copy specific tables by specific company ids you would do the following:

./bin/thinker sync --sh <FROM> --th <TO> --sd gather --td gather --c sa0oiol9,phbq3484 --s --pt accounts,bookings,charges,comments,contacts,locations,logins,messages,policies,rooms,templates,users 

About

A command line tool to ease development and administration.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript98.3%
  • Shell1.7%