Importación de datos a una instancia de base de datos de MySQL o MariaDB en Amazon RDS con tiempo de inactividad reducido - Amazon Relational Database Service

Importación de datos a una instancia de base de datos de MySQL o MariaDB en Amazon RDS con tiempo de inactividad reducido

En algunos casos, es posible que sea necesario importar datos de una base de datos de MySQL o MariaDB externa, que sea compatible con una aplicación activa, a una instancia de base de datos de MySQL o MariaDB. En estos casos, puede aplicar el procedimiento siguiente para minimizar el impacto en la disponibilidad de la aplicación. Este procedimiento también puede resultar útil al trabajar con una base de datos de gran tamaño. Aquí, el procedimiento resulta útil porque puede reducir el costo de la importación al reducir la cantidad de datos que se transfieren a través de la red AWS.

En el procedimiento se transfiere primero una copia de los datos de la base de datos a una instancia Amazon EC2 y después se importan los datos a una nueva instancia de base de datos de Amazon RDS. A continuación se usa la replicación para actualizar la instancia de base de datos de Amazon RDS al estado de la instancia externa en funcionamiento, antes de redirigir la aplicación a la instancia de base de datos de Amazon RDS. La replicación de MariaDB se configura en función de los identificadores de transacciones globales (GTID) si la instancia externa es MariaDB 10.0.24 o posterior y la instancia de destino es RDS for MariaDB. De lo contrario, debe configurar la replicación en función de las coordenadas de los registros binarios. Si la base de datos externa la admite, recomendamos la replicación basada en GTID debido a sus mejores características de seguridad frente a bloqueos. Para obtener más información, consulte Global Transaction ID en la documentación de MariaDB.

nota

Si desea importar datos a una instancia de base de datos de MySQL y su escenario lo admite, lo más sencillo es importar y exportar los datos dentro y fuera de Amazon RDS mediante el uso de archivos de copia de seguridad y Amazon S3. Para obtener más información, consulte Restauración de una copia de seguridad en una instancia de base de datos MySQL..


                     Importar una base de datos MySQL externa a una instancia de base de datos MySQL
nota

No recomendamos usar este procedimiento con bases de datos MySQL de origen de una versión inferior a 5.5, debido a posibles problemas de reproducción. Para obtener más información, consulte Replication Compatibility Between MySQL Versions en la documentación de MySQL.

Creación de una copia de la base de datos existente

El primer paso del proceso de migración de un gran volumen de datos a una instancia de base de datos de MySQL o MariaDB en Amazon RDS con un tiempo de inactividad mínimo es crear una copia de los datos de origen.


                        Crear una copia de seguridad de la base de datos MySQL

Con la utilidad mysqldump puede crear una copia de seguridad de la base de datos, ya sea en formato SQL o como texto delimitado. Se recomienda hacer una prueba con cada formato en un entorno que no sea de producción para determinar con qué método tarda menos la ejecución de mysqldump.

También se recomienda comparar el rendimiento de mysqldump con el beneficio que ofrece el uso del formato de texto delimitado para la carga. Una copia de seguridad con formato de texto delimitado crea un archivo de texto separado por tabuladores por cada tabla volcada. Los archivos obtenidos pueden cargarse en paralelo con el comando LOAD DATA LOCAL INFILE para reducir el tiempo necesario para importar la base de datos. Para obtener más información sobre cómo elegir un formato mysqldump y luego cargar los datos, consulte Uso de mysqldump para copias de seguridad en la documentación de MySQL.

Antes de iniciar la operación de copia de seguridad, asegúrese de configurar las opciones de replicación para la base de datos de MySQL o MariaDB que va a copiar en Amazon RDS. Las opciones de replicación incluyen la activación del registro binario y la configuración de un ID de servidor único. La activación de estas opciones hace que el servidor comience a registrar las transacciones de la base de datos y la prepare para ser una instancia de replicación de origen en una fase posterior del proceso.

nota

Utilice la opción --single-transaction con mysqldump porque vuelca un estado coherente de la base de datos. Para garantizar un archivo de volcado válido, no ejecute instrucciones de lenguaje de definición de datos (DDL) mientras mysqldump se está ejecutando. Puede programar un periodo de mantenimiento para estas operaciones.

Excluya los siguientes esquemas del archivo de volcado: sys, performance_schema e information_schema. La utilidad mysqldump excluye estos esquemas de forma predeterminada.

Para migrar usuarios y privilegios, considere la posibilidad de utilizar una herramienta que genere el lenguaje de control de datos (DCL) para volver a crearlos, como la utilidad pt-show-grants.

Para establecer las opciones de replicación

  1. Edite el archivo my.cnf (normalmente se encuentra en /etc).

    sudo vi /etc/my.cnf

    Añada las opciones log_bin y server_id a la sección [mysqld]. La opción log_bin proporciona un identificador de nombre de archivo para los archivos de log binarios. La opción server_id proporciona un identificador único para el servidor en las relaciones origen-réplica.

    El siguiente ejemplo muestra la sección [mysqld] actualizada de un archivo my.cnf.

    [mysqld] log-bin=mysql-bin server-id=1

    Para obtener más información, consulte la documentación de MySQL.

  2. Reinicie el servicio mysql.

    sudo service mysqld restart

Para crear una copia de seguridad de la base de datos existente

  1. Cree una copia de seguridad de los datos con la utilidad mysqldump especificando un formato SQL o de texto delimitado.

    Especifique --master-data=2 para crear un archivo de copia de seguridad que se pueda utilizar para iniciar la replicación entre servidores. Para obtener más información, consulte la documentación de mysqldump.

    Para mejorar el rendimiento y asegurar la integridad de los datos, utilice las opciones --order-by-primary y --single-transaction de mysqldump.

    Para evitar incluir la base de datos del sistema de MySQL en la copia de seguridad, no utlice la opción --all-databases con mysqldump. Para obtener más información, consulte Creating a Data Snapshot Using mysqldump en la documentación de MySQL.

    Si es necesario, utilice chmod para asegurarse de que es posible escribir en el directorio donde se va a crear el archivo de copia de seguridad.

    importante

    En Windows, ejecute el símbolo del sistema como administrador.

    • Para generar la salida en formato SQL, ejecute el siguiente comando.

      Para Linux, macOS o Unix:

      sudo mysqldump \ --databases database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u local_user \ -p password

      Para Windows:

      mysqldump ^ --databases database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u local_user ^ -p password
    • Para generar la salida en formato de texto delimitado, ejecute el siguiente comando.

      Para Linux, macOS o Unix:

      sudo mysqldump \ --tab=target_directory \ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \ database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -p password

      Para Windows:

      mysqldump ^ --tab=target_directory ^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^ database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -p password
      nota

      Asegúrese de crear de forma manual procedimientos almacenados, desencadenadores, funciones o eventos en su base de datos de Amazon RDS. Si hay alguno de estos objetos en la base de datos que va a copiar, exclúyalos cuando ejecute mysqldump. Para hacerlo, incluya los siguientes argumentos con el comando mysqldump: --routines=0 --triggers=0 --events=0.

      Cuando utiliza el formato de texto delimitado, se devuelve un comentario CHANGE MASTER TO cuando ejecuta mysqldump. Este comentario contiene el nombre y la ubicación del archivo de registro maestro. Si la instancia externa es distinta de MariaDB versión 10.0.24 o posterior, tenga en cuenta los valores de MASTER_LOG_FILE y MASTER_LOG_POS. Necesita estos valores al configurar la replicación.

      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      Si utiliza el formato SQL, puede obtener el nombre y la posición del archivo de registro maestro en el comentario CHANGE MASTER TO del archivo de copia de seguridad. Si la instancia externa corresponde a MariaDB versión 10.0.24 o posterior, puede obtener el GTID en el paso siguiente.

  2. Si la instancia externa que utiliza es de MariaDB versión 10.0.24 o posterior, usará la reproducción basada en GTID. Ejecute SHOW MASTER STATUS en la instancia MariaDB externa para obtener el nombre y ubicación del archivo de registro binario y, a continuación, conviértalos en un GTID ejecutando BINLOG_GTID_POS en la instancia MariaDB externa.

    SELECT BINLOG_GTID_POS('binary log file name', binary log file position);

    Observe el GTID obtenido, lo necesitará para configurar la replicación.

  3. Comprima los datos copiados para reducir los recursos de red necesarios para copiarlos a la instancia de base de datos de Amazon RDS. Observe el tamaño del archivo de copia de seguridad: necesitará esta información para determinar el tamaño de la instancia Amazon EC2 que se debe crear. Cuando haya terminado, comprima el archivo de copia de seguridad con GZIP o la utilidad de compresión que prefiera.

    • Para comprimir la salida en formato SQL, ejecute el siguiente comando.

      gzip backup.sql
    • Para comprimir la salida en formato de texto delimitado, ejecute el siguiente comando.

      tar -zcvf backup.tar.gz target_directory

Creación de una instancia Amazon EC2 y copia de la base de datos comprimida

La copia del archivo de copia de seguridad comprimido a una instancia Amazon EC2 requiere menos recursos de red que una copia directa de los datos sin comprimir entre las instancias de base de datos. Una vez que los datos se encuentran en Amazon EC2, puede copiarlos desde allí directamente a una instancia de base de datos de MySQL o MariaDB. Para ahorrar en el costo de los recursos de red, la instancia de Amazon EC2 debe estar en la misma región de AWS que la instancia de base de datos de Amazon RDS. Tener la instancia de Amazon EC2 en la misma región de AWS que la instancia de base de datos de Amazon RDS también reduce la latencia de red durante la importación.


                        Copiar la copia de seguridad de la base de datos a una instancia EC2

Para crear una instancia Amazon EC2 y copiar los datos

  1. En la región de AWS donde planea crear la instancia de base de datos de RDS para ejecutar el motor de base de datos de MySQL, cree una nube virtual privada (VPC), un grupo de seguridad de VPC y una subred de VPC. Asegúrese de que las reglas de entrada del grupo de seguridad de VPC permiten las direcciones IP necesarias para que la aplicación se conecte a AWS. Puede tratarse de un intervalo de direcciones IP (por ejemplo 203.0.113.0/24) u otro grupo de seguridad de VPC. Puede usar la Management Console de Amazon VPC para crear y administrar VPC, redes y grupos de seguridad. Para obtener más información, consulte Introducción a Amazon VPC en la Guía de introducción a Amazon Virtual Private Cloud.

    nota

    Las cuentas de AWS más antiguas también pueden lanzar instancias en modo EC2-Classic. En este caso, asegúrese de que las reglas de entrada configuradas para el grupo de seguridad de base de datos de la instancia de Amazon RDS permitan el acceso de la instancia EC2-Classic con la dirección IP privada de Amazon EC2. Para obtener más información, consulte Uso de grupos de seguridad de base de datos (plataforma EC2-Classic).

  2. Abra la consola de administración de Amazon EC2 y elija la región de AWS que contendrá la instancia de Amazon EC2 y la instancia de base de datos de Amazon RDS. Lance una instancia Amazon EC2 utilizando la VPC, la subred y el grupo de seguridad que creó en el paso 1. Asegúrese de seleccionar un tipo de instancia con suficiente espacio de almacenamiento para el archivo de copia de seguridad de base de datos sin comprimir. Para obtener más información sobre las instancias Amazon EC2, consulte Introducción a las instancias de Amazon EC2 Linux en la Guía del usuario de instancias de Linux de Amazon Elastic Compute Cloud.

  3. Para conectarse a la instancia de base de datos de Amazon RDS desde la instancia de Amazon EC2, edite el grupo de seguridad de VPC. Agregue una regla de entrada que especifique la dirección IP privada de la instancia de EC2. La dirección IP privada aparece en la pestaña Details (Detalles) del panel Instance (Instancia) de la consola de EC2. Para editar el grupo de seguridad de VPC y agregar una regla de entrada, elija Security Groups (Grupos de seguridad) en el panel de navegación de la consola de EC2, elija el grupo de seguridad y, luego, agregue una regla de entrada para MySQL o Aurora que especifique la dirección IP privada de la instancia de EC2. Para obtener información sobre cómo agregar una regla de entrada a un grupo de seguridad de VPC, consulte Adición y eliminación de reglas en la Guía del usuario de Amazon VPC.

  4. Copie el archivo de copia de seguridad de base de datos comprimido del sistema local a la instancia Amazon EC2. Si es necesario, utilice chmod para asegurarse de que tiene permiso de escritura para el directorio de destino de la instancia de Amazon EC2. Puede utilizar scp o un cliente de Secure Shell (SSH) para copiar el archivo. A continuación, se muestra un ejemplo.

    $ scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
    importante

    Asegúrese de copiar la información confidencial empleando un protocolo de transferencia seguro.

  5. Conéctese a la instancia de Amazon EC2 e instale las últimas actualizaciones y las herramientas de cliente de MySQL mediante los siguientes comandos.

    sudo yum update -y sudo yum install mysql -y

    Para obtener más información, consulte Conexión a la instancia en la Guía del usuario de instancias de Linux de Amazon Elastic Compute Cloud.

    importante

    En este ejemplo se instala el cliente de MySQL en una imagen de máquina de Amazon (AMI) para una distribución de Amazon Linux. Este ejemplo no funciona para instalar el cliente de MySQL en una distribución diferente, como Ubuntu o RedHat Enterprise Linux. Para obtener información sobre la instalación de MySQL, consulte Instalación y actualización de MySQL en la documentación de MySQL.

  6. Una vez establecida la conexión la instancia Amazon EC2 descomprima el archivo de copia de seguridad de base de datos. A continuación se muestran algunos ejemplos.

    • Para descomprimir la salida en formato SQL, ejecute el siguiente comando.

      gzip backup.sql.gz -d
    • Para descomprimir la salida en formato de texto delimitado, ejecute el siguiente comando.

      tar xzvf backup.tar.gz

Crear una instancia de base de datos MySQL o MariaDB e importar los datos de la instancia Amazon EC2

Cuando crea una instancia de base de datos de MySQL o MariaDB en la misma región de AWS que la instancia de Amazon EC2, puede importar el archivo de copia de seguridad de la base de datos desde EC2 más rápido que a través de Internet.


                        Importar la copia de seguridad de la instancia EC2 a la instancia de base de datos MySQL

Para crear una instancia de base de datos de MySQL o MariaDB e importar los datos

  1. Determine la clase de la instancia de base de datos y la cantidad de espacio de almacenamiento requeridas para atender la carga de trabajo prevista para esta instancia de base de datos de Amazon RDS. Como parte de este proceso, decida cuánto espacio y qué capacidad de procesamiento requieren los procedimientos de carga de datos. Decida también lo que se necesita para manejar la carga de trabajo de producción. Puede estimar esto en función del tamaño y los recursos de la base de datos de MySQL o MariaDB de origen. Para obtener más información, consulte Clases de instancia de base de datos .

  2. Determine si son necesarias las operaciones de E/S por segundo (IOPS) aprovisionadas de Amazon RDS para admitir las cargas de trabajo. El almacenamiento con IOPS provisionadas ofrece más velocidad en las cargas de trabajo de procesamiento de transacciones online (OLTP), que hacen un uso intensivo de E/S. Para obtener más información, consulte Almacenamiento de SSD de IOPS aprovisionadas.

  3. Abra la consola de Amazon RDS. En la esquina superior derecha, elija la región de AWS que contiene la instancia de Amazon EC2.

  4. En el panel de navegación, seleccione Databases (Bases de datos).

  5. Elija Create database (Crear base de datos) y siga los pasos para seleccionar las opciones de la instancia de base de datos:

    1. Asegúrese de que la opción Standard Create (Creación estándar) esté seleccionada.

    2. En la sección Engine options (Opciones del motor), elija MySQL o MariaDB, según corresponda.

    3. En Version (Versión), elija la versión compatible con la instancia MySQL de origen, de este modo:

      • Si la instancia de origen es MySQL 5.5.x, la instancia de base de datos de Amazon RDS debe ser MySQL.

      • Si la instancia de origen es MySQL 5.6.x o 5.7.x, la instancia de base de datos de Amazon RDS debe ser MySQL o MariaDB.

      • Si la instancia de origen es MySQL 8.0.x, la instancia de base de datos de Amazon RDS debe ser MySQL 8.0.x.

      • Si la instancia de origen es MariaDB 5.5 o superior, la instancia de base de datos de Amazon RDS debe ser MariaDB.

    4. En la sección Templates (Plantillas), elija Dev/Test (Desarrollo/Prueba) para omitir la configuración de la implementación Multi-AZ y el almacenamiento con IOPS provisionadas.

    5. En la sección Settings (Configuración), especifique la información de usuario y el DB instance identifier (Identificador de instancias de bases de datos) solicitados.

    6. En las secciones DB instance class (Clase de instancia de base de datos) y Storage (Almacenamiento), especifique la clase de instancia de base de datos y el tamaño de almacenamiento asignado que desea.

    7. En la sección Availability & durability (Disponibilidad y durabilidad), elija Do not create a standby instance (No crear una instancia en espera) para Multi-AZ deployment (Implementación Multi-AZ).

    8. En la sección Connectivity (Conectividad), elija la misma Virtual Private Cloud (VPC) y el mismo grupo de seguridad de VPC que para la instancia Amazon EC2. De este modo se asegura de que la instancia Amazon EC2 y la instancia de Amazon RDS sean visibles mutuamente a través de la red. Establezca Publicly accessible (Accesible públicamente) en Yes (Sí). Para configurar la replicación con la base de datos de origen como se describe más delante, la instancia de base de datos debe ser accesible públicamente.

      Utilice los valores predeterminados para el resto de la configuración de esta sección.

      En la sección Backup, establezca 0 como periodo de retención de copia de seguridad en 0 days.

      Utilice los valores predeterminados para el resto de la configuración de esta sección.

    9. Abra la sección Additional configuration (Configuración adicional) e introduzca un Initial database name (Nombre inicial de base de datos).

      Establezca el Backup retention period (Periodo de retención de copia de seguridad) en 0 days (0 días)

      Utilice los valores predeterminados para el resto de la configuración de esta sección.

    10. Elija Create database (Crear base de datos).

      Su nueva instancia de base de datos aparece en la lista Databases (Bases de datos) con el estado Creating (Creándose). Espere a que el Status (Estado) de su nueva instancia de base de datos se muestre como Available (Disponible).

    No configure varias zonas de disponibilidad, retenciones de copia de seguridad ni réplicas de lectura hasta haber importado la copia de seguridad de la base de datos. Una vez que se completa la importación, podrá configurar Multi-AZ y la retención de copia de seguridad como desee para la instancia de producción. Para ver una explicación detallada de cómo crear una instancia de base de datos, consulte Creación de una instancia de base de datos de Amazon RDS.

  6. Revise las opciones de configuración predeterminadas para la instancia de base de datos de Amazon RDS. En el panel de navegación izquierdo de la consola de RDS, elija Parameter groups (Grupos de parámetros) y, a continuación, seleccione el icono que representa una lupa situado junto al grupo de parámetros default.mysqlx.x o default.mariadbx.x. Si el grupo de parámetros no tiene las opciones de configuración que desea, busque otro que sea adecuado o cree un grupo de parámetros nuevo. Para obtener más información acerca de la creación de un grupo de parámetros, consulte Trabajo con los grupos de parámetros.

    Para utilizar un grupo de parámetros distinto del predeterminado, asócielo a la instancia de base de datos de Amazon RDS. Para obtener más información, consulte Modificación de una instancia de base de datos de Amazon RDS.

  7. Conéctese a la nueva instancia de base de datos de Amazon RDS como usuario maestro. Cree los usuarios necesarios para admitir a los administradores, las aplicaciones y los servicios que necesitan acceso a la instancia. El nombre de host para la instancia de base de datos de Amazon RDS es el valor de Endpoint (Punto de conexión) para esta instancia, sin incluir el número de puerto. Un ejemplo es mysampledb.claxc2oy9ak1.us-west-2.rds.amazonaws.com. Puede encontrar el valor del punto de conexión en los detalles de la instancia en la consola de administración de Amazon RDS.

  8. Conecte con la instancia Amazon EC2. Para obtener más información, consulte Conexión a la instancia en la Guía del usuario de instancias de Linux de Amazon Elastic Compute Cloud.

  9. Conecte con la instancia de base de datos de Amazon RDS como host remoto desde la instancia de Amazon EC2 con el comando mysql. A continuación se muestra un ejemplo.

    mysql -h host_name -P 3306 -u db_master_user -p

    El nombre de host es el nombre de DNS tomado del punto de conexión de la instancia de base de datos de Amazon RDS.

  10. En el símbolo del sistema mysql, ejecute el comando source y pásele el nombre del archivo de volcado de la base de datos para cargar los datos en la instancia de base de datos de Amazon RDS.

    • Para el formato SQL, utilice el siguiente comando.

      mysql> source backup.sql;
    • Para el formato de texto delimitado, cree primero la base de datos, si no es la predeterminada que se creó cuando se configuró la instancia de base de datos de Amazon RDS.

      mysql> create database database_name; $ mysql> use database_name;

      A continuación, cree las tablas.

      mysql> source table1.sql $ mysql> source table2.sql etc...

      Importe entonces los datos.

      mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; $ mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...

      Para mejorar el desempeño, puede ejecutar estas operaciones en paralelo desde varias conexiones, de modo que todas las tablas se creen y luego se carguen al mismo tiempo.

      nota

      Si utilizó alguna opción de formato de datos con mysqldump en el volcado inicial de la tabla, asegúrese de utilizar las mismas opciones con mysqlimport o LOAD DATA LOCAL INFILE para garantizar una interpretación adecuada del contenido del archivo de datos.

  11. Ejecute una consulta SELECT sencilla en una o dos de las tablas de la base de datos importada para comprobar que la operación se ha completado correctamente.

Si ya no necesita la instancia de Amazon EC2 utilizada en este procedimiento, termine la instancia de EC2 para reducir el uso de recursos de AWS. Para terminar una instancia de EC2, consulte Terminación de una instancia en la Guía del usuario de Amazon EC2.

Replicación entre una base de datos externa y una nueva instancia de base de datos de Amazon RDS

La base de datos de origen se actualizó probablemente durante el tiempo que tomó copiar los datos en la instancia de base de datos de MySQL o MariaDB y transferirlos a ella. En tal caso, puede utilizar la replicación para actualizar la base de datos copiada con la base de datos de origen.


                        Replicar datos de la base de datos MySQL externa a la instancia de base de datos MySQL

Los permisos requeridos para comenzar la replicación en una instancia de base de datos de Amazon RDS están restringidos y no están disponibles para el usuario maestro de Amazon RDS. Por este motivo, asegúrese de utilizar el comando mysql.rds_set_external_master de Amazon RDS o el comando mysql.rds_set_external_master_gtid para configurar la replicación, y el comando mysql.rds_start_replication para iniciar la replicación entre la base de datos activa y la base de datos de Amazon RDS.

Para iniciar la replicación

Anteriormente, activó el registro binario y estableció un ID de servidor único para la base de datos de origen. Ahora puede configurar la instancia de base de datos de Amazon RDS como réplica estableciendo la base de datos en funcionamiento como instancia de replicación de origen.

  1. En la Management Console de Amazon RDS, añada la dirección IP del servidor que aloja la base de datos de origen al grupo de seguridad de VPC configurado para la instancia de base de datos de Amazon RDS. Para obtener más información acerca de la modificación de un grupo de seguridad de VPC, consulte Grupos de seguridad de su VPC en la Guía del usuario de Amazon Virtual Private Cloud.

    Es posible que también necesite configurar su red local para permitir las conexiones desde la dirección IP de la instancia de base de datos de Amazon RDS para que se pueda comunicar con la instancia de origen. Para encontrar la dirección IP de la instancia de base de datos de Amazon RDS, use el comando host.

    host db_instance_endpoint

    El nombre de host es el nombre de DNS tomado del punto de enlace de la instancia de base de datos de Amazon RDS, por ejempl myinstance.123456789012.us-east-1.rds.amazonaws.com. Puede encontrar el valor del punto de enlace en los detalles de la instancia en la Management Console de Amazon RDS.

  2. Con el cliente que prefiera, conecte con la instancia de origen y cree un usuario para la replicación. Esta cuenta se usa únicamente para la replicación y debe estar limitada a su dominio para mejorar la seguridad. A continuación se muestra un ejemplo.

    MySQL 5.5, 5.6 y 5.7

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
  3. En la instancia de origen, conceda al usuario de replicación los privilegios REPLICATION CLIENT y REPLICATION SLAVE. Por ejemplo, para conceder los privilegios REPLICATION CLIENT y REPLICATION SLAVE en todas las bases de datos al usuario "repl_user" del dominio, ejecute el siguiente comando.

    MySQL 5.5, 5.6 y 5.7

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  4. Si eligió el formato SQL para crear el archivo de copia de seguridad y la instancia externa no es MariaDB 10.0.24 o posterior, observe el contenido del archivo.

    cat backup.sql

    El archivo contiene un comentario CHANGE MASTER TO que contiene el nombre y la posición del archivo de registro maestro. Este comentario se incluye en el archivo de copia de seguridad cuando se utiliza la opción --master-data con mysqldump. Tenga en cuenta los valores de MASTER_LOG_FILE y MASTER_LOG_POS.

    -- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

    Si utilizó el formato de texto delimitado para crear el archivo de copia de seguridad y la instancia externa no es MariaDB 10.0.24 o posterior, ya debe haber obtenido las coordenadas del registro binario en el paso 1 del procedimiento descrito en “To create a backup copy of your existing database” (Creación de una copia de seguridad de la base de datos existente) en este tema.

    Si la instancia externa es MariaDB 10.0.24 o posterior, ya debe haber obtenido el GTID desde el que inicia la replicación en el paso 2 del procedimiento descrito en “To create a backup copy of your existing database” (Creación de una copia de seguridad de la base de datos existente) en este tema.

  5. Defina la instancia de base de datos de Amazon RDS como réplica, Si la instancia externa no es MariaDB 10.0.24 o posterior, conéctese a la instancia de base de datos de Amazon RDS como usuario maestro e identifique la base de datos de origen como la instancia de replicación de origen con el comando mysql.rds_set_external_master. Utilice el nombre y la ubicación del archivo de registro maestro obtenidos en el paso anterior si el archivo de copia de seguridad tiene formato SQL. O bien, si utilizó formato delimitado por texto, utilice el nombre y la posición que determinó cuando creó los archivos de copia de seguridad. A continuación, se muestra un ejemplo.

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);

    Si la instancia externa es MariaDB 10.0.24 o posterior, conecte con la instancia de base de datos de Amazon RDS como usuario maestro e identifique la base de datos de origen como instancia de reproducción de origen con el comando mysql.rds_set_external_master_gtid. Utilice el GTID que determinó en el paso 2 del procedimiento descrito en “To create a backup copy of your existing database” (Creación de una copia de seguridad de la base de datos existente) en este tema. A continuación, se muestra un ejemplo.

    CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 0);

    source_server_ip_address es la dirección IP de la instancia de replicación de origen. Una dirección DNS privada de EC2 no se admite actualmente.

  6. En la instancia de base de datos de Amazon RDS, ejecute el comando mysql.rds_start_replication para comenzar la replicación.

    CALL mysql.rds_start_replication;
  7. En la instancia de base de datos de Amazon RDS ejecute el comando SHOW REPLICA STATUS para determinar si la réplica está actualizada con la instancia de reproducción de origen. Los resultados del comando SHOW REPLICA STATUS incluyen el campo Seconds_Behind_Master. Cuando el campo Seconds_Behind_Master devuelve 0, la réplica está actualizada con la instancia de replicación de origen.

    nota

    Versiones anteriores de MySQL utilizaban SHOW SLAVE STATUS en lugar de SHOW REPLICA STATUS. Si usa una versión de MySQL anterior a la 8.0.23, utilice SHOW SLAVE STATUS.

    Para una instancia de base de datos de MariaDB 10.5 o 10.6, ejecute el procedimiento mysql.rds_replica_status en lugar del comando MySQL.

  8. Una vez que la instancia de base de datos de Amazon RDS esté actualizada, active las copias de seguridad automatizadas para poder restaurar la base de datos si es necesario. Las copias de seguridad automatizadas de la instancia de base de datos de Amazon RDS pueden activarse o modificarse mediante la consola de administración de Amazon RDS. Para obtener más información, consulte Trabajo con copias de seguridad.

Redirección de una aplicación en funcionamiento a una instancia de Amazon RDS

Una vez que la instancia de base de datos de MySQL o MariaDB esté actualizada con la instancia de replicación de origen, puede actualizar la aplicación activa para utilizar la instancia de Amazon RDS.


                        Detener la replicación y dirigir la aplicación en vivo a la instancia de base de datos MySQL

Para redirigir una aplicación activa a una instancia de base de datos de MySQL o MariaDB y detener la replicación

  1. Para añadir el grupo de seguridad de VPC para la instancia de base de datos de Amazon RDS, agregue la dirección IP del servidor que alberga la aplicación. Para obtener más información acerca de la modificación de un grupo de seguridad de VPC, consulte Grupos de seguridad de su VPC en la Guía del usuario de Amazon Virtual Private Cloud.

  2. Compruebe que el valor del campo Seconds_Behind_Master en el comando SHOW REPLICA STATUS sea 0, lo que indica que la réplica está actualizada al estado de la instancia de reproducción de origen.

    SHOW REPLICA STATUS;
    nota

    Versiones anteriores de MySQL utilizaban SHOW SLAVE STATUS en lugar de SHOW REPLICA STATUS. Si usa una versión de MySQL anterior a la 8.0.23, utilice SHOW SLAVE STATUS.

    Para una instancia de base de datos de MariaDB 10.5 o 10.6, ejecute el procedimiento mysql.rds_replica_status en lugar del comando MySQL.

  3. Cierre todas las conexiones con el origen cuando se completen las transacciones.

  4. Actualice la aplicación para que use la instancia de base de datos de Amazon RDS. Normalmente, la actualización implicará cambar la configuración de conexión para identificar el nombre de host y el puerto de la instancia de base de datos de Amazon RDS la cuenta de usuario y la contraseña con las que conectar y la base de datos que se debe emplear.

  5. Detenga la replicación para la instancia de Amazon RDS con el comando mysql.rds_stop_replication.

    CALL mysql.rds_stop_replication;
  6. Ejecute el comando mysql.rds_reset_external_master en la instancia de base de datos de Amazon RDS para restablecer la configuración de replicación y que la instancia deje de considerarse una réplica.

    CALL mysql.rds_reset_external_master;
  7. Active las características adicionales de Amazon RDS, como la compatibilidad con Multi-AZ y las réplicas de lectura. Para obtener más información, consulte Implementaciones Multi-AZ para alta disponibilidad y Trabajo con réplicas de lectura.