Migrate data from one Cassandra server to another using medusa

Here are the steps I followed to get my dev instance of cassandra copied to a new server (both single node instances)

I’ve used medusa tool for the same. You can read more about it here


Install medusa on both source and destination cassandra-servers, by running the following commands on both –

curl -1sLf   'https://dl.cloudsmith.io/public/thelastpickle/medusa/setup.deb.sh'   | sudo -E bash

sudo apt update
sudo apt-get install cassandra-medusa

Export Data from Source DB

#ssh into source server and do these

mkdir ~/cassandra-bkup
sudo cp /etc/medusa/medusa-example.ini /etc/medusa/medusa.ini
sudo vi /etc/medusa/medusa.ini

# Search for, and set these values in the ini file
storage_provider = local
base_path = /home/{username}/cassandra-bkup
# Save and Exit

medusa backup --backup-name=dev-db-data --mode=full

#compress output folder
tar -czf dev-db-bkup-tar ~/cassandra-bkup

# SCP the backup directory to destination server
scp -r -i <key-file> dev-deb-bkup-tar {dest-user}@{dest-server}:~/

Import data in Target DB

# ssh into target serer and do these
tar -xzf dev-deb-bkup-tar

ls ls /home/{username}/cassandra-bkup/cassandra_backups/
#note down the folder name parallel to the folder index, let it be {sourceHostLocalName}
sudo /etc/hosts
#add an entry with local nodes IP and host name as {sourceHostLocalName}. 
#You can remove this later
# save /etc/hosts and Exit Vim.
sudo medusa restore-node --keyspace={keyspace of intereset} --backup-name=dev-db-data

Verify Imported data

cqlsh {targetNodeIp}
desc keyspaces #verify you have the source keyspace created
use {keyspaceOfInterest}
desc tables; #verify all your tables in the source are recreated here.

That’s it. You should now be able to work with your new Cassandra node!

A JS assistant to remind us to exercise during WFH days

Here is a weekend hack I wrote to remind me to get up from my workstation and do some lightweight exercises during the WFH days – Fit@WFH

Some of the features are –

  • Purely in browser side JS (your data stays at your computer)
  • Reminds you to workout during the tail end of every hour
  • Reminder both in Voice and Browser Notification
  • You can select the exercises you are comfortable with from a list
  • Built for desktop (i.e, for serious WFH’ers )

I guess someone else might also find tremendous value from it. So if you too are caught in a sedentary lifestyle and want to move more, go ahead – book mark and use it !

Launch WFH Fitness Utility

Change the datacenter set in cassandra-rackdc on Ubuntu

Problem: Changing just the datacenter name in cassandra-rackdc.properties gives the error:

Cannot start node if snitch's data center [newName] differs from previous data center [oldName]. Please fix the snitch configuration, decommission and rebootstrap this node or use the flag -Dcassandra.ignore_dc=true.

If you are just beginning to setup you cassandra cluster, and is ok to reset the data to bootstrapped state, do this

sudo service cassandra stop
sudo rm -R /var/lib/cassandra
sudo mkdir /var/lib/cassandra
sudo chown cassandra /var/lib/cassandra
sudo service cassandra start

If you need to persist the existing data, do this

sudo vi /etc/cassandra/cassandra-env.sh
# edit the JVM_OPTS line to make it look like below
JVM_OPTS=\"$JVM_OPTS -Dcassandra.ignore_rack=true -Dcassandra.ignore_dc=true\"

sudo service cassandra restart

This should normally resolve the dc name correction in rack-dc properties file.

RabbitMQ installation fails in in the last leg of setting up in ubuntu 20.04


Setting up rabbitmq-server (3.8.16-1) …
Job for rabbitmq-server.service failed because the control process exited with 
error code.
See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
invoke-rc.d: initscript rabbitmq-server, action "start" failed.

Reason: libtinfo.so library missing.


sudo apt install libncurses5

Note: No need to reattempt the installation.

An “eat dosa!” reminder for busy kids :)

Here is a one hour HTML app that you can use to repeat recorded audio to remind your busy kids they have to finish that food on the table, while watching their favorite videos on YouTube.

Launch Dosa Reminder HTML App

To use the app is this simple –

  • Click on record button. Give permission to access microphone if it asks for it.
  • The recording automatically stops in 4 seconds and replays what it recorded. You can re-record till you are satisfied with the playback.
  • Now you can set the number of seconds of interval, between which the above audio has to be repeated.
  • Click on “Start Reminder” button to start the reminders.
  • When your kid is done eating, you can stop the reminders by clicking “Stop Reminder” button

Happy parenting !

Enable dark mode for Chrome on desktop

Dark mode is great to protect your eyes, more so if you are a coder.

Here is how you can apply dark more on chrome on your desktop –

  • In the address bar paste this address : chrome://flags/#enable-force-dark
  • Change the setting “Force Dark Mode for Web Contents” from default to “enabled”

That’s it. Now you can have easy on eyes theme on Chrome, just like your IDE !

NPM install gives error : Cannot find module ‘semver’

We get this error when we do npm install –

Error: Cannot find module ‘semver’
Require stack:

  • /usr/share/npm/lib/utils/unsupported.js
  • /usr/share/npm/bin/npm-cli.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:924:15)
    at Function.Module._load (node:internal/modules/cjs/loader:769:27)
    at Module.require (node:internal/modules/cjs/loader:996:19)
    at require (node:internal/modules/cjs/helpers:92:18)
    at Object. (/usr/share/npm/lib/utils/unsupported.js:2:14)

Version issues

Run these commands

sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/bin/node*
sudo rm -rf /usr/local/include/node*

sudo apt-get purge nodejs npm
sudo apt autoremove
sudo apt-get install nodejs npm

Try now. Should be fixed !