How to Migrate Redis from AWS to a Vultr Managed Database

Updated on January 4, 2023
How to Migrate Redis from AWS to a Vultr Managed Database header image

Introduction

This guide explains how you can migrate your AWS Cloud Database to Vultr with minimal downtime to the source database applications. Vultr's Managed Databases for Redis offer reduced costs, easy management and backups, scheduled updates, quick scaling, straightforward monitoring, and automated failover to replica nodes in case of database failures.

Prerequisites

Before your start, make sure you:

  • Verify that your source AWS Cloud Database accepts connections from any source 0.0.0.0/0.
  • Deploy a fresh Vultr Managed Database for Redis with the same size as your AWS database.

Migrate Redis

This section explains how you can migrate Redis data from your Elastic Cache for Redis database to a Vultr Managed Database for Redis. You'll connect to the Redis cluster using stunnel listening on localhost port 2000 for the source, and 4000 for the target, then use a bash script to migrate the Redis data to the Vultr Redis database.

  1. Open and edit your stunnel configuration file.

       $ sudo nano /etc/stunnel/stunnel.conf
  2. Add the following configurations to the file.

      fips = no
      setuid = nobody
      setgid = nogroup
      pid = /tmp/stunnel-pid/stunnel.pid
      debug = 7
      delay = no
      [Target]
        client = yes
        accept = 127.0.0.1:4000
        connect = vultr-prod.vultrdb:1234
    
      [Source]
        client = yes
        accept = 127.0.0.1:2000
        connect = redis.amazonaws.com:1234

    Save and close the file.

    For more information on configuring stunnel, please visit how to connect your Redis database using stunnel.

  3. Using redis-cli, access your source Redis database server.

      $ redis-cli -h 127.0.0.1 -p 2000

    Enter the Redis password.

      > auth PASSWORD
  4. Select the database you intend to migrate.

      > select 1
  5. Make a database snapshot to save a backup before migration.

      > save
  6. Exit the Redis interface.

      > exit
  7. Create a new bash file, for example migrate-to-vultr.sh.

      $ touch ~/migrate-to-vultr.sh
  8. Open and edit the file using a text editor of your choice.

      $ nano ~/migrate-to-vultr.sh
  9. Add the following Redis migration configurations to the file.

      #!/bin/bash
    
      set -euo pipefail
    
      source=${1}
      target=${2}
      count=-1
    
      read  -p "Please enter source Amazon Redis password: "sourcepass
      read  -p "Enter your Vultr Managed Redis Database password: "vultrpass
    
      while [[ "$count" -ne 0 ]]; do
    
        if [["$count" -eq -1 ]]
           then
              count=0
            fi
      redis-cli  -a -n
      reply=$(redis-cli -h localhost 2000 -a "$sourcepass" -n "$source" SCAN "$count")
    
      if [ -n "$reply" ]; then
           echo "$reply" | tail -n +2 |
           while IFS= read -r key; do
                  redis-cli -h localhost 2000 -a "$sourcepass" -n "$source" migrate localhost 4000 "$key" "$target" 4000 copy auth "$vultrpass" >/dev/null 2>&1
            done
      fi
    
      count=$(expr "$reply" : '\([0-9]*[0-9]\)')
    
      done

    The above configurations use the Redis scan and migrate commands to process database keys, then migrate them to the target database. Upon execution, you should pass the source and target database by number, then enter the associated passwords when prompted.

    Save and close the file.

  10. Make the script executable.

     $ sudo chmod +x ~/migrate-to-vultr.sh
  11. Run the script to start migrating your Redis data.

     $ ./~/migrate-to-vultr.sh 1 1

    The script arguments 1 1 refer to your source and target databases, respectively. Enter your source Redis password. Enter your Vultr Managed Database for Redis password. When complete, test that your Redis Database migration is successful.

Test the Migration

  1. Log in to your Vultr Redis Database.

      $ redis-cli -h 127.0.0.1 -p 4000

    Enter your Vultr Redis password.

      > auth PASSWORD
  2. Select your database.

      > select 1
  3. Scan keys stored in the database.

      > scan 1

    Verify that the data matches your source database.

  4. Exit the Redis interface.

      > exit

Update Applications

Depending on the applications using your source database, cut over requests to your new database by editing the application's configuration files. Please refer to your application's official documentation on how to edit your database connection settings.

Conclusion

In this article, you have migrated an AWS Redis database to a Vultr Managed Database. Depending on your database size, you can choose between the command line or graphical tools to safely migrate your database with no downtime to the applications using your database. For each migrated database, you can access logs and available databases through the Vultr customer portal. For more information about Vultr Managed Databases for Redis, see the Reference Guide.