Configuración de la replicación de posición de archivo de registro binario con una instancia de origen externa - Amazon Relational Database Service

Configuración de la replicación de posición de archivo de registro binario con una instancia de origen externa

Puede configurar la replicación entre una instancia de base de datos de RDS for MySQL o MariaDB y una instancia MySQL o MariaDB externa a Amazon RDS.

Antes de empezar

Puede configurar la replicación usando la posición de los archivos de registro binarios de transacciones replicadas.

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 usar los comandos mysql.rds_set_external_master y mysql.rds_start_replication de Amazon RDS para configurar la replicación entre la base de datos en funcionamiento y la base de datos de Amazon RDS.

Para establecer el formato de registro binario para una base de datos MySQL o MariaDB, actualice el parámetro binlog_format. Si su instancia de base de datos usa el grupo de parámetros de instancia de base de datos predeterminado, cree un nuevo grupo de parámetros de base de datos para modificar la configuración binlog_format. Recomendamos que utilice la configuración predeterminada para binlog_format, que es MIXED. Sin embargo, también puede configurar binlog_format como ROW o STATEMENT si necesita un formato de registro binario (binlog) concreto. Reinicie la instancia de base de datos para que el cambio entre en vigor.

Para obtener más información sobre configurar el parámetro binlog_format, consulte Configuración del registro binario de MySQL. Para obtener más información acerca de las implicaciones de distintos tipos de replicación de MySQL, consulte Advantages and Disadvantages of Statement-Based and Row-Based Replication en la documentación de MySQL.

Configuración de la replicación de posición de archivo de registro binario con una instancia de origen externa

Siga estas directrices al configurar una instancia de origen externa y una réplica en Amazon RDS:

  • Monitorice los eventos de conmutación por error para la instancia de base de datos de Amazon RDS que usa como réplica. Si se produce una conmutación por error, la instancia de base de datos que es la réplica se puede volver a crear en un nuevo host con una dirección de red diferente. Para obtener información acerca de la monitorización de los eventos de conmutación por error, consulte Uso de notificaciones de eventos de Amazon RDS.

  • Mantenga los binlogs en la instancia de origen hasta que haya verificado que se han aplicado a la réplica. Este mantenimiento garantiza que se pueda restaurar la instancia de origen en caso de error.

  • Active las copias de seguridad automatizadas para la instancia de base de datos de Amazon RDS. La activación de las copias de seguridad automatizadas garantiza que puede restaurar su réplica a un momento dado si necesita volver a sincronizar la instancia de origen y la réplica. Para obtener información acerca de las copias de seguridad y la restauración a un momento dado, consulte Copia de seguridad, restauración y exportación de datos.

Para configurar la replicación de archivos de registro binario con una instancia de origen externa
  1. Configure la instancia de base de datos MySQL o MariaDB de origen como de solo lectura.

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. Ejecute el comando SHOW MASTER STATUS en la instancia de base de datos MySQL o MariaDB para determinar la ubicación del binlog.

    Se recibe un resultado similar al del siguiente ejemplo.

    File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
  3. Copie la base de datos de la instancia externa a la instancia de Amazon RDS con mysqldump. Para las bases de datos muy grandes, puede usar el procedimiento que se describe en Importación de datos a una base de datos de Amazon RDS MariaDB o MySQL con un tiempo de inactividad reducido.

    Para Linux, macOS, o Unix:

    mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u local_user \ -plocal_password | mysql \ --host=hostname \ --port=3306 \ -u RDS_user_name \ -pRDS_password

    En Windows:

    mysqldump --databases database_name ^ --single-transaction ^ --compress ^ --order-by-primary ^ -u local_user ^ -plocal_password | mysql ^ --host=hostname ^ --port=3306 ^ -u RDS_user_name ^ -pRDS_password
    nota

    Asegúrese de que no haya ningún espacio entre la opción -p y la contraseña que haya escrito.

    Para especificar el nombre de host, el nombre de usuario, el puerto y la contraseña para conectarse a su instancia de base de datos en Amazon RDS, use las opciones --host, --user (-u), --port y -p en el comando mysql. El nombre de host es el nombre del servicio de nombre de dominio (DNS) tomado del punto de enlace de la instancia de 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 AWS Management Console.

  4. Haga que la instancia MySQL o MariaDB de origen vuelvan a admitir la escritura.

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;

    Para obtener más información sobre cómo hacer copias de seguridad para su uso con replicación, consulte la documentación de MySQL.

  5. En la AWS Management Console, agregue la dirección IP del servidor que aloja la base de datos externa al grupo de seguridad de la nube virtual privada (VPC) 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.

    La dirección IP puede cambiar cuando se cumplen las siguientes condiciones:

    • Está usando una dirección IP pública para la comunicación entre la instancia de origen externa y la instancia de base de datos.

    • La instancia de origen externa se detuvo y se reinició.

    Si se cumplen esas condiciones, compruebe la dirección IP antes de añadirla.

    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. Eso se hace para que la red local se pueda comunicar con la instancia de MySQL o MariaDB externa. 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 conexión de la instancia de base de datos de Amazon RDS.

  6. Con el cliente que prefiera, conecte con la instancia externa y cree un usuario para la replicación. Use esta cuenta únicamente para la replicación y limítela a su dominio para mejorar la seguridad. A continuación, se muestra un ejemplo.

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

    Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

  7. Para la instancia externa, conceda los privilegios REPLICATION CLIENT y REPLICATION SLAVE al usuario de replicación. 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.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
  8. Defina la instancia de base de datos de Amazon RDS como réplica, Para ello, en primer lugar, conéctese a la instancia de base de datos de Amazon RDS como usuario maestro. A continuación, identifique la base de datos MySQL o MariaDB externa como instancia de origen usando el comando mysql.rds_set_external_master. Use el nombre del archivo de registro maestro y la posición del registro maestro que determinó en el paso 2. A continuación, se muestra un ejemplo.

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

    En RDS para MySQL, puede aplicar la replicación retrasada si lo desea al ejecutar en su lugar el procedimiento almacenado mysql.rds_set_external_master_with_delay. Un motivo para usar la replicación retrasada en RDS para MySQL es activar la recuperación de desastres con el procedimiento almacenado mysql.rds_start_replication_until. En la actualidad, RDS para MariaDB es compatible con la replicación retrasada, pero no con el procedimiento mysql.rds_start_replication_until.

  9. 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;