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 o un clúster de base de datos Multi-AZ de MySQL. Utilice el siguiente procedimiento para minimizar el impacto en la disponibilidad de las aplicaciones. Este procedimiento también puede resultar útil al trabajar con una base de datos de gran tamaño. Con este procedimiento, puede reducir el coste de la importación al reducir la cantidad de datos que se transfieren a través de la red a AWS.

En el procedimiento, se transfiere primero una copia de los datos de la base de datos a una instancia de Amazon EC2 y después se importan los datos a una nueva base de datos de Amazon RDS. A continuación, se usa la replicación para actualizar la base de datos de Amazon RDS al estado de la instancia externa activa, antes de redirigir la aplicación a la 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 una versión posterior y la instancia de destino es RDS para 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 porque es un método más fiable. 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, recomendamos importar y exportar los datos 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 base de datos MySQL en RDS
nota

No recomendamos usar este procedimiento con bases de datos MySQL de origen desde una versión de MySQL inferior a 5.5, debido a posibles problemas de replicació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 una gran cantidad de datos a una base de datos de RDS para MariaDB o RDS para MySQL 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. Para la replicación con un clúster de base de datos Multi-AZ, establezca ENFORCE_GTID_CONSISTENCY y el parámetro GTID_MODE en ON.

    mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    mysql> SET @@GLOBAL.GTID_MODE = ON;

    Esta configuración no es necesaria para la replicación con una instancia de base de datos.

  3. 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
      nota

      Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

      En Windows:

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

      Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

    • 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

      En 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

      Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

      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 base de datos de Amazon RDS. Tenga en cuenta el tamaño del archivo de copia de seguridad. Necesitará esta información para determinar el tamaño de la instancia de 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 la 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 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 tiene pensado crear la base de datos de RDS, cree una nube privada virtual (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 especificar 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.

  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 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 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 Red Hat 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 base de datos MySQL o MariaDB e importe los datos desde la instancia de Amazon EC2

Cuando crea una instancia de base de datos de MySQL o MariaDB o un clúster de base de datos Multi-AZ de MySQL 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 desde la instancia de EC2 a la base de datos MySQL

Para crear una 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 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 de .

  2. Cree una instancia de base de datos o un clúster de base de datos Multi-AZ en la región AWS que contenga la instancia de Amazon EC2.

    Para crear un clúster de base de datos Multi-AZ de MySQL, siga las instrucciones de Creación de un clúster de base de datos Multi-AZ.

    Para crear una instancia de base de datos de MySQL o MariaDB, siga las siguientes instrucciones de Creación de una instancia de base de datos de Amazon RDS y estas pautas:

    • Especifique una versión del motor de base de datos compatible con la instancia de base de datos 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.

    • Especifique la misma nube privada virtual (VPC) y el mismo grupo de seguridad de VPC que para la instancia de 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. Asegúrese de que la instancia de base de datos sea de acceso público. 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.

    • 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 completada la importación, puede configurar Multi-AZ y la retención de copia de seguridad para la instancia de producción.

  3. Revise las opciones de configuración predeterminadas para la base de datos de Amazon RDS. Si el grupo de parámetros predeterminado para la base de datos 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 Working with parameter groups (Trabajar con grupos de parámetros).

  4. Conéctese a la nueva 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 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.123456789012.us-west-2.rds.amazonaws.com. Puede encontrar el valor del punto de conexión en los detalles de la base de datos en la consola de administración de Amazon RDS.

  5. 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.

  6. Conecte con la 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 punto de conexión de la base de datos de Amazon RDS.

  7. 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 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 rendimiento, 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 LOAD DATA LOCAL INFILE para garantizar una interpretación adecuada del contenido del archivo de datos.

  8. Ejecute una consulta SELECT sencilla en una o dos de las tablas de la base de datos importada para comprobar que la importació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.

Replicar entre una base de datos externa y una nueva base de datos de Amazon RDS

Es probable que su base de datos de origen se haya actualizado durante el tiempo que tardó en copiar y transferir los datos a la base de datos MariaDB o MySQL. Por tanto, puede utilizar la replicación para actualizar la base de datos copiada con la base de datos de origen.

Replicar datos desde la base de datos MySQL externa a la base de datos en RDS

Los permisos requeridos para comenzar la replicación en una 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 base de datos de Amazon RDS como réplica estableciendo la base de datos activa como instancia de replicación de origen.

  1. En la consola de administración 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 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 base de datos de Amazon RDS para que se pueda comunicar con la instancia de origen. Para encontrar la dirección IP de la base de datos de Amazon RDS, use el comando host.

    host rds_db_endpoint

    El nombre de host es el nombre de DNS tomado del punto de conexión de la base de datos de Amazon RDS, por ejemplo myinstance.123456789012.us-east-1.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.

  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';
    nota

    Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

  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';
    nota

    Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

  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. Convertir la base de datos de Amazon RDS en la réplica. Si la instancia externa no es MariaDB 10.0.24 o una versión posterior, conéctese a la 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);
    nota

    Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

    Si la instancia externa no es MariaDB 10.0.24 o una versión posterior, conéctese a la 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_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.

    nota

    Especifique credenciales distintas de las que se muestran aquí como práctica recomendada de seguridad.

  6. En la 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 base de datos de Amazon, RDS ejecute el comando SHOW REPLICA STATUS para determinar si la réplica está actualizada con la instancia de replicació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 o 10.11 ejecute el procedimiento mysql.rds_replica_status en lugar del comando de MySQL.

  8. Una vez que la 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 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 Introducción a las copias de seguridad.

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

Una vez que la 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 activa a la base de datos en RDS

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

  1. Para añadir el grupo de seguridad de VPC para la base de datos de Amazon RDS, añada la dirección IP del servidor que aloja 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 o 10.11 ejecute el procedimiento mysql.rds_replica_status en lugar del comando de MySQL.

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

  4. Actualice la aplicación para que use la 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 base de datos de Amazon RDS, la cuenta de usuario y la contraseña con las que conectarse y la base de datos que se debe emplear.

  5. Conéctese a la instancia de base de datos.

    Para un clúster de base de datos Multi-AZ, conéctese a la instancia de base de datos de escritor.

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

    CALL mysql.rds_stop_replication;
  7. Ejecute el comando mysql.rds_reset_external_master en la 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;
  8. 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 Configuración y administración de una implementación multi-AZ y Trabajo con réplicas de lectura de instancias de base de datos.