After hours of research I found a way to migrate keypsaces from cassandra to cassandra, its very simple actually without any need to backup snapshots of keyspaces or tables of existing data.
Usecase Scenario : Assume a company wants to migrate its data from development environment to production. You have a cassandra database which you want to migrate to production environment there is one way where you take snapshots of each keyspace and then restore them one by one which for me make my work more complicated.
I have come up with a solution which make migration very easy and fast. Below are the steps to migrate cassandra database to other different cassandra database :
Pre-requites :
- Cassandra should be installed but not running on the system
- If you have already started Cassandra then stop it and clear it log files from
/var/lib/cassandra/commitlog
Step 1 : Copy Cassandra data directory from old Cassandra database
Usually data directory is located at /var/lib/cassandra
tar -zcvf cassandra.tar.gz /var/lib/cassandra
Step 2 : Move and extract tar file to production environment
scp cassandra.tar.gz ec2-user@10.0.1.102:~
sudo tar -xzvf cassandra.tar.gz
Step 3 : Clear the commit log from cassandra/commitlog/*
sudo rm -rf cassandra/commitlog/*
Step 4 : Copy and replace the /var/lib/cassandra
directory with the one copied from old environment
sudo mv /var/lib/cassandra /var/lib/cassandra_backup sudo cp -R cassandra /var/lib/cassandra
Step 5 : Change the ownership of all the files in /var/lib/cassandra
sudo chown root:root -R /var/lib/cassandra/*
Step 6 : Start the cassandra services and check for the log files for any error
sudo service cassandra start
Check that cassandra is listening to the port 9160 :
sudo netstat -tulpn
Look for any possible errors if not in cassandra startup log file :
sudo nano /var/log/cassandra.log
Step 7: Login into cassandra terminal and check for the keyspaces
If everything is normal and cassandra is running with no error’s then login in cassandra
cqlsh 10.0.1.102 9160
cqlsh> show keyspaces;
At this moment you should be able to see all the data exported. If not then make sure you have followed all the above steps as each of them is important including clearing log files, making sure that the cassandra is not working, if working in background then just kill the process then restart it.
Step 8 (Optional): If you have multinode installation then repair the keyspaces using nodetool
nodetool repair
Using nodetool command will sync and repair your database keyspaces on other nodes.
That’s it!
This how you easily migrate keyspaces from cassandra to cassandra.
Hope that helped, if any problem feel free to drop in you queries in comments section below or you can write it to me.
-Bhargav
References :
Social Profiles