Migración a Databases for Redis

Si necesita la migración de datos

Si es absolutamente necesario conservar los datos persistentes al actualizar a la siguiente versión principal de Databases for Redis, tome medidas para migrar correctamente todos los datos. Copie todos los pares de clave-valor en el nuevo despliegue. Haga esto desde la instancia antigua al nuevo despliegue utilizando un método adecuado al caso de uso.

Databases for Redis proporciona un script de ejemplo no soportado para ayudar a simplificar este proceso.

El script de migración

¡Aviso! Este script no recibe soporte y existe como ejemplo de lo que puede crear para mover los datos de Databases for Redis desde una instancia a otra como parte de una actualización de versión. Todo el código fuente y los binarios que se adjuntan a este documento se denominan aquí "el Programa". IBM no proporciona servicios de programa de ningún tipo para el Programa. IBM proporciona el Programa "TAL CUAL" sin garantía de ningún tipo. IBM NO SERÁ RESPONSABLE DE NINGÚN DAÑO REAL, DIRECTO, ESPECIAL, INCIDENTAL O INDIRECTO O DE CUALQUIER DAÑO ECONÓMICO CONSECUENTE (INCLUIDOS LOS BENEFICIOS O AHORROS PERDIDOS), INCLUSO SI IBM, O SU DISTRIBUIDOR, HA SIDO INFORMADO DE LA POSIBILIDAD DE TALES DAÑOS.

Para copiar los datos de su antigua implementación Databases for Redis a una nueva versión, es necesario ejecutar un sencillo script Python disponible en GitHub. El script copia todas las claves de la base de datos de origen al nuevo despliegue de Databases for Redis. Descargue el script y asegúrese de que tiene instalado Python 3.x. Si estás en macOS, utiliza ' homebrew para instalarlo ejecutando el comando ' brew install python3, que te dará la última versión.

A continuación, cree una ventana de migración para informar a sus usuarios de que está realizando tareas de mantenimiento. De este modo, tendrá tiempo para migrar todos sus datos a la nueva implementación de Databases for Redis. Si está utilizando Redis como un almacén de valores clave con tiempos de caducidad en las claves, estos tiempos de caducidad se copian a su nueva base de datos. Nuestro ejemplo lo hace con 10 millones de claves en nuestra base de datos, que no requieren mucho tiempo para migrar en función de su ancho de banda.

Obtención de credenciales de base de datos de destino y origen

Obtención de las credenciales de base de datos de origen y destino en la interfaz de usuario

Ahora, disponga de las credenciales tanto de la antigua base de datos de origen como de su nueva implementación Databases for Redis. Obtenga las credenciales para ambos despliegues de Databases for Redis seleccionando las bases de datos en la página Recursos. A continuación, pulse el enlace Credenciales de servicio . Desde allí, cree una nueva credencial para la base de datos de destino haciendo clic en Nueva credencial. Utilice las credenciales que cree para el origen.

Obtención de las credenciales de base de datos de origen y destino en la CLI

Obtenga las credenciales de la base de datos de origen y destino utilizando el plugin de CLI deCloud Databases.

Ejecute un mandato como:

ibmcloud cdb deployment-connections <INSTANCE_NAME_OR_CRN>

Esto le proporciona el URI de conexión de Databases for Redis que incluye el nombre de host y el puerto. Para obtener el certificado de CA descodificado para la base de datos, ejecute:

ibmcloud cdb deployment-cacert <INSTANCE_NAME_OR_CRN>

Una vez descodificado el certificado CA, guárdelo en un archivo para conectarse más tarde a la base de datos. Si no conoce la contraseña de su implantación, obténgala a partir de las credenciales de servicio generadas o cree una nueva contraseña ejecutando:

ibmcloud cdb deployment-user-password <INSTANCE_NAME_OR_CRN> admin <NEW PASSWORD>

Con esta información, tiene lo que necesita para el destino y las bases de datos de origen.

Ejecute el script y migre los datos

Ya que tienes todas las credenciales para ambas bases de datos (origen y nuevo destino Databases for Redis ), estás listo para ejecutar el script ' pymigration.py '. Ejecute el código desde el terminal utilizando las credenciales de los pasos anteriores:

python pymigration.py <SOURCE HOST> <SOURCE PASSWORD> <SOURCE PORT>
<DESTINATION HOST> <DESTINATION_USERNAME:DESTINATION_PASSWORD> <DESTINATION PORT>
<DESTINATION CA CERTIFICATE PATH> --sslsrc --ssldst

Para versiones más recientes de Redis como fuente, utilice ' <SOURCE USER:SOURCE PASSWORD>.

Dado que está copiando datos de una fuente externa a la base de datos ' Databases for Redis, añada el indicador ' --sslsrc ' si su base de datos ' Databases for Redis ' tiene habilitado SSL/TLS. Si no es así, no añada el distintivo.

Esto garantiza que Redis se conecte a una base de datos habilitada para SSL/TLS. Añada también --ssldst puesto que la base de datos de destino es el nuevo despliegue de Databases for Redis, que también está habilitado para SSL/TLS.

Los distintivos suplementarios que puede añadir son --db y --flush. --db indica la base de datos desde la que se copian las claves, que es la base de datos en la que se copiaron en el nuevo despliegue.

El indicador " --flush " vacía la base de datos de destino antes de importar las claves de la base de datos de origen. Si desea mantener las cosas frescas en su nuevo despliegue, ' --flush borra todas las claves, y luego importa las nuevas claves de su base de datos de origen.

Al ejecutar el script que utiliza " OldDB " como origen de la migración de datos y " NewDB " como destino de los datos migrados, se obtiene un resultado como el siguiente:

python pymigration.py OldDB.databases.appdomain.cloud OldDBpassword1 88888 NewDB.databases.appdomain.cloud NewDBpassword1 99999 ~/NewDBCA  --sslsrc --ssldst  10000000 keys: 100% |###################################################| Time: 0:00:00 Keys disappeared on source during scan: 0 Keys already existing on destination: 0

Este script ha copiado 10 millones de claves de OldDB a NewDB. No se han suprimido claves en la base de datos OldDB. Si añade una nueva clave al despliegue " OldDB " e intenta migrar los datos de nuevo, observará que el recuento de claves en el destino cambia a 10000000, ya que los 10 millones de claves originales ya existen en esa base de datos.

10000000 keys: 100% |###################################################| Time: 0:00:00
Keys disappeared on source during scan: 0
Keys already existing on destination: 10000000

Próximos pasos

Tras la migración de los datos, cambie las cadenas de conexión a la base de datos de la aplicación por las nuevas cadenas de conexión y credenciales.