Nota:

Migre Google Cloud Platform CloudSQL para MySQL a Oracle Cloud Infrastructure MySQL Heatwave mediante replicación

Introducción

En este tutorial se explica cómo realizar la migración en directo de Google Cloud Platform CloudSQL para MySQL a Oracle Cloud Infrastructure (OCI) MySQL Heatwave Database Service. Con la ayuda de este artículo, podremos comprender cómo podemos utilizar la replicación MySQL entre dos proveedores de nube diferentes y esto actuará como su documento para una migración exitosa a OCI Heatwave. En este tutorial, vamos a hacer uso de los siguientes productos :-

  1. GCP CloudSQL para MySQL
  2. MySQL Heatwave para el procesamiento de transacciones en línea (OLTP)
  3. OCI Object Storage
  4. OCI Compute como bastión
  5. MySQL Shell

Objetivos

Conecte Google Cloud Platform CloudSQL para MySQL a MySQL Heatwave Database Service y, a continuación, inicie la replicación entrante en el sistema de base de datos OCI. Cubriremos la visión general de alto nivel de conectividad entre Google Cloud Platform y MySQL, pero en la documentación oficial se puede hacer referencia a posibilidades de red detalladas entre Google Cloud Platform CloudSQL y MySQL Heatwave.

Arquitectura

A continuación se muestra un ejemplo de arquitectura de alto nivel de la solución.

Imagen principal

La línea de puntos representa el flujo de los datos, es decir, de Cloud SQL de GCP para MySQL a Object Storage para el juego de datos inicial. Una vez que los datos estén disponibles en el almacenamiento de objetos, seguiremos utilizando los canales de replicación que se ofrecen con el sistema de base de datos MySQL de Heatwave de OCI.

Requisitos

Como parte de este tutorial, utilizaremos la replicación de entrada. Con la ayuda de la replicación de entrada, utilizamos el canal de replicación configurado en MySQL Heatwave Database Service y, con ello, podemos enviar transacciones de una ubicación a otra. Nuestras fuentes pueden ser diferentes, por ejemplo, on-premises, Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, etc. En este tutorial, nos centramos en Google Cloud Platform Cloud SQL para MySQL y nuestro objetivo es MySQL Heatwave Database Service.

Puede obtener más información sobre la visión general de la replicación de entrada MySQL aquí. Tenga a mano este tutorial, ya que también proporciona una descripción detallada de la configuración de origen, la creación de usuarios de replicación, la creación de un canal de replicación y sus limitaciones.

Estamos dividiendo todo el proceso de migración en los siguientes pasos de alto nivel.

  1. Acceso a Cloud SQL existente de Google Cloud Platform para MySQL
  2. Preparación de Cloud SQL de Google Cloud Platform para MySQL
  3. Bastión en OCI con shell MySQL
  4. Consideración de las redes entre Google Cloud Platform Cloud SQL para MySQL y OCI Heatwave DB System
  5. Configuración del cubo de almacenamiento de objetos en OCI
  6. Exportación de datos a OCI Object Storage
  7. Creación de un nuevo sistema de base de datos en OCI
  8. Creación de un canal de replicación en OCI

Tarea 1: Acceso al SQL existente de Google Cloud Platform Cloud para MySQL

Estamos utilizando la base de datos de ejemplo alojada en Cloud SQL de Google Cloud Platform para MySQL con el propósito de realizar nuestra migración. La instancia MySQL existente se aloja en una subred pública que Google Cloud Platform permite, por lo que la estamos utilizando como nuestra base de datos de origen. Supongamos que Google Cloud Platform CloudSQL para MySQL está ejecutando la edición empresarial con MySQL versión 8.0.

Imagen 1

Imagen 2

Una vez que conozcamos la IP pública, podemos incluir en la lista blanca nuestra dirección IP y conectarnos fácilmente con el cliente MySQL. También puede utilizar el shell MySQL o la utilidad gcloud para conectarse a la base de datos. Podemos hacer la lista blanca de nuestra IP pública agregando la sección de redes para Google Cloud Platform Cloud SQL para MySQL y haciendo clic en Guardar cambios.

Imagen 3

Nota: Aquí también se agregarán otras IP. Hablaremos de ellas en secciones posteriores.

Una vez que podamos conectar, podemos consultar las bases de datos existentes en Google Cloud Platform CloudSQL para la instancia MySQL. Para nuestro propósito de migración, solo nos centraremos en la base de datos de ejemplo Sakila.

Imagen 4

Tarea 2: Preparación de Google Cloud Platform Cloud SQL para MySQL

A medida que utilizamos la replicación de entrada, debemos realizar dos pasos en el servidor de origen. Tenemos que crear un usuario que se utilizará para la replicación y también debemos asegurarnos de que disponemos de la activación de GTID en nuestro servidor de origen. Con GTID (identificador de transacción global), se puede identificar y realizar un seguimiento de cada transacción a medida que se confirma en el servidor de origen. A continuación, se aplica la misma transacción a la réplica de destino.

  1. Cree un usuario de replicación y asigne roles mediante los siguientes comandos.

    mysql> create user repl@'%' IDENTIFIED BY 'yourreplpassword' REQUIRE SSL;
    mysql> grant replication slave on *.* to repl@'%';
    mysql> select user from mysql.user;;
    
  2. Asegúrese de que los GTID estén activados. Por defecto, los GTID están activados, pero en caso de que no lo estén, puede activarlos.

    mysql>show global variables like 'gtid%';

    Imagen 5

Tarea 3: Despliegue de Bastion en OCI con el shell MySQL

Con Oracle Cloud Infrastructure, no se puede acceder directamente desde Internet a los puntos finales del sistema de base de datos MySQL. Se debe a una seguridad mejorada y se despliega con la ayuda de un punto final privado en la VCN configurada. Como resultado, necesitamos conectar el servicio de base de datos de OCI MySQL Heatwave mediante una instancia informática, una VPN, un bastión o un equilibrador de carga de red para acceder al punto final privado.

Puede elegir cualquiera de las opciones mencionadas anteriormente. En nuestro caso, utilizaremos la instancia informática que actuará como bastión para nuestro servicio de base de datos de Heatwave MySQL. Puede consultar cómo utilizar el resto de opciones aquí.

A medida que utilizamos la instancia informática, necesitamos desplegar los recursos informáticos en la subred pública de nuestra VCN cuya subred privada alojará el servicio de base de datos de Heatwave MySQL. Al configurar la instancia informática, no tiene que preocuparse de la configuración de recursos para los recursos informáticos, ya que solo se utilizará para instalar el shell MySQL o el cliente MySQL y para conectarse a Google Cloud Platform Cloud SQL para MySQL.

Puede obtener más información sobre cómo crear una instancia informática aquí.

Como puede ver en la siguiente imagen, hemos creado la instancia informática en la subred pública de la VCN en la que se alojará MySQL Heatwave Database Service. Este servidor de Bastion actuará como un intermediario entre OCI y Google Cloud Platform, donde podemos acceder a las dos instancias MySQL. Para conectarse a la instancia de base de datos MySQL, podemos utilizar el shell MySQL o el cliente MySQL.

Imagen 6

Vamos a instalar el shell Mysql ejecutando el siguiente comando.

`sudo yum install mysql-shell`

También puede consultar la documentación para obtener más información.

Tarea 4: Verificación de las consideraciones de red entre Cloud SQL para MySQL y OCI MySQL Heatwave Database Service

Una cosa importante aquí es garantizar que la comunicación se establezca correctamente entre el servidor de origen y el de destino.

En la consola de Google Cloud Platform, también debemos garantizar que la IP pública de nuestra instancia de Bastion esté incluida en la lista blanca. Esto se puede lograr utilizando el mismo proceso que hemos seguido anteriormente para conectar la base de datos con nuestro cliente MySQL.

En la consola de OCI, se debe establecer comunicación entre la instancia informática de Bastion que se aloja en la subred pública de MySQLVCN y MySQL Heatwave Database Service alojada en una subred privada dentro de la misma VCN. Tenemos que permitir el tráfico y podemos abrir reglas de entrada con subred privada y permitir conexiones.

Tarea 5: Configurar el cubo de Object Storage en OCI

Necesitamos configurar el almacenamiento de objetos en OCI para almacenar el volcado de datos inicial desde Google Cloud Platform CloudSQL para MySQL. Esta será una actividad de una vez y estos datos se utilizarán para crear la base de datos en MySQL Heatwave Database Service.

Para obtener información sobre la creación de un cubo en OCI, consulte Creación de un cubo.

Imagen 7

Una vez creado el cubo anterior, necesitamos establecer un enlace entre el cubo de almacenamiento de objetos y la instancia de Bastion. Para ello, utilizaremos el archivo de configuración de oci que utilizará el shell MySQL.

Nota: El parámetro key_file se debe actualizar con la ubicación de la clave privada generada en la consola de OCI durante la creación de la clave de API.

Tarea 6: Exportación de datos a OCI Object Storage

Utilizaremos la utilidad Shell MySQL en el servidor Bastion para exportar datos de Cloud SQL de Google Cloud Platform para MySQL. La utilidad de shell MySQL es una herramienta muy potente que ayuda a exportar toda la instancia a la vez y proporciona varias opciones.

Para este ejercicio, exportaremos el esquema del CloudSQL de Google Cloud Platform para la base de datos Mysql a nuestro almacenamiento de objetos OCI.

En primer lugar, conéctese a la instancia MySQL desde nuestros recursos informáticos de Bastion.

Imagen 12

util.dumpSchemas(["sakila"], "", { osBucketName: "MysqlBucket", osNamespace: "orasenatdpltintegration01", ocimds: true, ociParManifest: true, threads: 8, compatibility: ["force_innodb", "skip_invalid_accounts", "strip_definers", "strip_restricted_grants",  "strip_tablespaces"], dryRun: "true"})

El resto de las opciones se pueden utilizar en función de sus necesidades y puede encontrar más información aquí.

Imagen 13

Una vez completada la ejecución simulada, examine la salida y resuelva los problemas. Si no tenemos ningún problema de compatibilidad, ejecute sin dryRun como se muestra a continuación:-

Imagen 14

Proporciona información detallada sobre la actividad de exportación y también proporciona la duración. Como es una base de datos de ejemplo, con alrededor de 45k registros, terminó rápidamente.

Una vez que el proceso se realice correctamente, los datos estarán presentes en el bloque que forma parte del almacenamiento de objetos.

Imagen 15

Tarea 7: Creación de un nuevo sistema de base de datos en OCI

Para obtener más información sobre cómo configurar el sistema de base de datos MySQL, consulte Creación de un sistema de base de datos.

Lo único que debemos tener en cuenta es que, como ya tenemos datos en el almacenamiento de objetos, vamos a utilizarlos para configurar el sistema de base de datos. También puede cargar los datos más tarde, pero esta opción ahorra mucho tiempo. Para utilizar esta opción, necesitamos crear una solicitud de PAR.

Imagen 16

Imagen 17

Asegúrese de haber guardado la URL generada aquí, ya que se utilizará como se indica a continuación.

Imagen 18

Una vez especificada la URL de PAR, el sistema de base de datos MySQL se crea automáticamente con la base de datos Sakila.

Para validar, ejecute el siguiente comando.

Imagen 19

Con esto, ahora tenemos la base de datos origen en el sistema de base de datos destino. Ahora, crearemos replicación entre el origen y el destino.

Tarea 8: Creación de un canal de replicación en OCI

Los canales de replicación se utilizan para conectar el sistema de base de datos origen al sistema de base de datos destino. Todas las transacciones se copian con la ayuda de estos canales. La creación de estos canales es bastante fácil, ya que solo tenemos que proporcionar pocos detalles sobre nuestro origen y objetivo. Siempre se recomienda utilizar la conexión cifrada y por eso, cuando creamos el usuario, especificamos la palabra clave SSL en pasos anteriores.

Como el origen de replicación puede ser diferente, también permitimos filtros de canal que varían para los distintos proveedores de nube pública. Para obtener más información, consulte aquí.

En la imagen siguiente se muestran diferentes opciones que están presentes al crear el canal de replicación en OCI. Debemos proporcionar el nombre de host de origen o la dirección IP pública junto con el número de puerto. Vamos a autenticar con ayuda del usuario de Reaprovisionamiento que hemos creado anteriormente.

Imagen 20

Imagen 21

También especificamos el sistema de base de datos de destino que hemos creado para nuestra replicación y, con los filtros de replicación, proporcionamos una opción en la que puede seleccionar los filtros de replicación en el menú desplegable según corresponda.

Si no hay más carga en el sistema de origen después de la exportación, el canal de replicación se debe activar y se debe completar. Sin embargo, hay posibilidades de que la carga sea incoherente debido a la falta de coincidencia de GTID y se deben realizar las acciones necesarias. Hay diferentes etapas del canal de replicación; sus detalles se mencionan aquí.

Para obtener detalles sobre los mensajes de error más comunes que podemos encontrar durante la configuración de replicación entrante, consulte la guía de resolución de problemas.

Inserte datos ficticios en el origen de Google Cloud Platform como se muestra en la siguiente imagen.

Imagen 21

Consulte la base de datos de ejemplo en MySQL Heatwave Database Service.

Imagen 22

En la consola, podemos ver que hay un desfase cero entre el origen y el destino, y que las transacciones se copian y confirman. Por lo tanto, podemos utilizar canales de replicación para fines de recuperación ante desastres y migración. En función del tiempo de inactividad adecuado de las aplicaciones y la planificación, podemos realizar la actividad de migración total y utilizar el servicio de base de datos de Heatwave MySQL, que es la solución integral para transacciones OLTP y cargas de trabajo analíticas.

Pasos Siguientes

En este tutorial, hemos visto OCI MySQL Heatwave Database Service como un mecanismo bastante sencillo para utilizar la replicación entrante. Soporta varios orígenes e incluso proporciona filtros de canal de replicación con respecto a estos orígenes. La replicación de entrada se puede utilizar para llevar el conjunto de datos a Oracle Cloud y utilizar su oferta de oleada de calor. No solo esto, se ha introducido MySQL Heatwave Lakehouse, donde puede traer grandes cargas de datos en terabytes en varios formatos. Puede encontrar más información sobre MySQL Heatwave Database Service y cómo maximiza el rendimiento de las consultas proporcionando Acelerador de consultas en memoria.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre los productos, visite Oracle Help Center.