I currently have a live redis server running on a cloud instance and I want to migrate this redis server to a new cloud instance and use that instance as my new redis server
Nowadays you can also use MIGRATE, available since 2.6.
I had to use this since I only wanted to move the data in one database and not all of them. The two Redis instances live on two different machines.
If you can't connect directly to Redis-2 from Redis-1, use ssh port binding:
ssh user@redis-2.foo.com -L 1234:127.0.0.1:6379
A small script to loop all the keys using KEYS and MIGRATE each key. This is Perl, but hopefully you get the idea:
foreach ( $redis_from->keys('*') ) {
$redis_from->migrate(
$destination{host}, # localhost in my example
$destination{port}, # 1234
$_, # The key
$destination{db},
$destination{timeout}
);
}
See http://redis.io/commands/migrate for more info.
To check where the dump.rdb has to be placed when importing redis data,
start client
$redis-cli
and
then
redis 127.0.0.1:6379> CONFIG GET *
1) "dir"
2) "/Users/Admin"
Here /Users/Admin is the location of dump.rdb that is read from server and therefore this is the file that has to be replaced.
Save a snapshot of the database into a dump.rdb by either running BGSAVE or SAVE from the command line. This will create a file named dump.rdb in the same folder as your redis server. See a list of all server commands.
Copy this dump.rdb to the other redis server you want to migrate to. When redis starts up, it looks for this file to initialize the database from.
It is also possible to migrate data using the SLAVEOF command:
SLAVEOF old_instance_name old_instance_port
Check that you have receive the keys with KEYS *
. You could test the new instance by any other way too, and when you are done just turn replication of:
SLAVEOF NO ONE
The simple way I found to export / Backup Redis data (create dump file ) is to start up a server via command line with slaveof flag and create live replica as follow (assuming the source Redis is 1.2.3.4 on port 6379):
/usr/bin/redis-server --port 6399 --dbfilename backup_of_master.rdb --slaveof 1.2.3.4 6379
redis-dump finally worked for me. Its documentation provides an example how to dump a Redis database and insert the data into another one.