

# Administración de la replicación de varios orígenes
<a name="mysql-stored-proc-multi-source-replication"></a>

Los siguientes procedimientos almacenados configuran y administran los canales de replicación en una réplica de varios orígenes de RDS para MySQL. Para obtener más información, consulte [Configuración de la replicación de varios orígenes de Amazon RDS para MySQL](mysql-multi-source-replication.md).

Estos procedimientos almacenados solo están disponibles con instancias de base de datos de RDS para MySQL que ejecuten las siguientes versiones de motor:
+ Todas las versiones 8.4
+ 8.0.35 y versiones secundarias posteriores
+ 5.7.44 y versiones secundarias posteriores

Cuando utilice procedimientos almacenados para administrar la replicación con un usuario de replicación configurado con `caching_sha2_passwword`, debe configurar TLS especificando `SOURCE_SSL=1`. `caching_sha2_password` es el complemento de autenticación predeterminado de RDS para MySQL 8.4.

**nota**  
Si bien en esta documentación se hace referencia a las instancias de base de datos de origen como instancias de base de datos de RDS para MySQL, estos procedimientos también funcionan para las instancias de MySQL que se ejecutan de forma externa a Amazon RDS.

**Topics**
+ [mysql.rds\$1next\$1source\$1log\$1for\$1channel](#mysql_rds_next_source_log_for_channel)
+ [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1for\$1channel](#mysql_rds_set_external_source_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel](#mysql_rds_set_external_source_with_auto_position_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel](#mysql_rds_set_external_source_with_delay_for_channel)
+ [mysql.rds\$1set\$1source\$1auto\$1position\$1for\$1channel](#mysql_rds_set_source_auto_position_for_channel)
+ [mysql.rds\$1set\$1source\$1delay\$1for\$1channel](#mysql_rds_set_source_delay_for_channel)
+ [mysql.rds\$1skip\$1repl\$1error\$1for\$1channel](#mysql_rds_skip_repl_error_for_channel)
+ [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)
+ [mysql.rds\$1start\$1replication\$1until\$1for\$1channel](#mysql_rds_start_replication_until_for_channel)
+ [mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel](#mysql_rds_start_replication_until_gtid_for_channel)
+ [mysql.rds\$1stop\$1replication\$1for\$1channel](#mysql_rds_stop_replication_for_channel)

## mysql.rds\$1next\$1source\$1log\$1for\$1channel
<a name="mysql_rds_next_source_log_for_channel"></a>

Cambia la posición del registro de instancia de base de datos de origen al inicio del siguiente registro binario en la instancia de base de datos de origen del canal. Use este procedimiento únicamente si aparece el error de E/S de replicación 1236 en una réplica de varios orígenes.

### Sintaxis
<a name="mysql_rds_next_source_log_for_channel-syntax"></a>

 

```
CALL mysql.rds_next_source_log_for_channel(
curr_master_log,
channel_name           
);
```

### Parámetros
<a name="mysql_rds_next_source_log_for_channel-parameters"></a>

 *curr\$1master\$1log*  
El índice del archivo de registro de origen actual. Por ejemplo, si el nombre del archivo actual es `mysql-bin-changelog.012345`, el índice es 12345. Para determinar el nombre del archivo de registro de origen actual, ejecute el comando `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'` y vea el campo `Source_Log_File`.

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_next_source_log_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_next_source_log_for_channel`. Si se produce un error IO\$1Thread, por ejemplo, puede utilizar este procedimiento para omitir todos los eventos del archivo de registro binario actual y reanudar la replicación desde el siguiente archivo de registro binario para el canal especificado en `channel_name`.

### Ejemplo
<a name="mysql_rds_group_replication_advance_gtid-examples"></a>

Suponga que la replicación falla en un canal de una réplica de varios orígenes. La ejecución de `SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G` en la réplica de varios orígenes devuelve el siguiente resultado:

```
mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com
                  Source_User: ReplicationUser
                  Source_Port: 3306
                Connect_Retry: 60
              Source_Log_File: mysql-bin-changelog.012345
          Read_Source_Log_Pos: 1219393
               Relay_Log_File: replica-relay-bin.000003
                Relay_Log_Pos: 30223388
        Relay_Source_Log_File: mysql-bin-changelog.012345
           Replica_IO_Running: No
          Replica_SQL_Running: Yes
              Replicate_Do_DB:.
              .
              .
                Last_IO_Errno: 1236
                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.'
               Last_SQL_Errno: 0
               Last_SQL_Error:
               .
               .
                 Channel_name: channel_1
              .
              .
 -- Some fields are omitted in this example output
```

El campo `Last_IO_Errno` muestra que la instancia ha recibido el error de E/S 1236. El campo `Source_Log_File` muestra que el nombre de archivo es `mysql-bin-changelog.012345`, lo que significa que el índice del archivo de registro es `12345`. Para resolver el error, puede llamar a `mysql.rds_next_source_log_for_channel` con los siguientes parámetros:

```
CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
```

## mysql.rds\$1reset\$1external\$1source\$1for\$1channel
<a name="mysql_rds_reset_external_source_for_channel"></a>

Detiene el proceso de replicación en el canal especificado y elimina el canal y las configuraciones asociadas de la réplica de varios orígenes.

**importante**  
Para ejecutar este procedimiento, `autocommit` debe estar habilitado. Para habilitarlo, establezca el parámetro `autocommit` en `1`. Para obtener información acerca de cómo modificar los parámetros, consulte [Modificación de los parámetros de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

### Sintaxis
<a name="mysql_rds_reset_external_source_for_channel-syntax"></a>



```
CALL mysql.rds_reset_external_source_for_channel (channel_name);
```

### Parámetros
<a name="mysql_rds_reset_external_source_for_channel-parameters"></a>

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_reset_external_source_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_reset_external_source_for_channel`. Este procedimiento elimina todos los registros de retransmisión que pertenecen al canal que se va a eliminar.

## mysql.rds\$1set\$1external\$1source\$1for\$1channel
<a name="mysql_rds_set_external_source_for_channel"></a>

Puede configurar un canal de replicación en una instancia de base de datos de RDS para MySQL para replicar los datos de otra instancia de base de datos de RDS para MySQL.

**importante**  
Para ejecutar este procedimiento, `autocommit` debe estar habilitado. Para habilitarlo, establezca el parámetro `autocommit` en `1`. Para obtener información acerca de cómo modificar los parámetros, consulte [Modificación de los parámetros de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

**nota**  
Puede utilizar el procedimiento almacenado [mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel](#mysql_rds_set_external_source_with_delay_for_channel) en lugar de configurar este canal con replicación retardada.

### Sintaxis
<a name="mysql_rds_set_external_source_for_channel-syntax"></a>



```
CALL mysql.rds_set_external_source_for_channel (
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , mysql_binary_log_file_name
  , mysql_binary_log_file_location
  , ssl_encryption
  , channel_name
);
```

### Parámetros
<a name="mysql_rds_set_external_source_for_channel-parameters"></a>

 *host\$1name*   
El nombre de host o la dirección IP de la instancia de base de datos de origen de RDS para MySQL.

 *host\$1port*   
El puerto utilizado por la instancia de base de datos de origen de RDS para MySQL. Si la configuración de la red incluye la replicación de puertos Secure Shell (SSH) que convierte el número de puerto, especifique el número de puerto expuesto por SSH.

 *replication\$1user\$1name*   
El identificador de un usuario con permisos `REPLICATION CLIENT` y `REPLICATION SLAVE` en la instancia de base de datos de origen de RDS para MySQL. Es recomendable que proporcione una cuenta que se use solo para la replicación con la instancia de base de datos de origen.

 *replication\$1user\$1password*   
La contraseña del ID de usuario especificado en `replication_user_name`.

 *mysql\$1binary\$1log\$1file\$1name*   
El nombre del registro binario de la instancia de base de datos de origen que contiene la información de replicación.

 *mysql\$1binary\$1log\$1file\$1location*   
La ubicación del registro binario `mysql_binary_log_file_name` en la que la replicación empieza a leer la información de la replicación.  
Para determinar el nombre y la ubicación del archivo binlog, puede ejecutar `SHOW BINARY LOG STATUS` en la instancia de base de datos de origen.   
Versiones anteriores de MySQL utilizaban `SHOW MASTER STATUS` en lugar de `SHOW BINARY LOG STATUS`. Si usa una versión de MySQL anterior a la 8.4, utilice `SHOW MASTER STATUS`.

 *ssl\$1encryption*   
Valor que especifica si el cifrado de la capa de conexión segura (SSL) se usa en la conexión de reproducción. El 1 especifica que se usa el cifrado SSL; el 0 especifica que no se usa el cifrado. El valor predeterminado es 0.  
La opción `SOURCE_SSL_VERIFY_SERVER_CERT` no es compatible. Esta opción se establece en 0, lo que significa que la conexión está cifrada, pero los certificados no se verifican.

 *nombre\$1canal*   
El nombre del canal de replicación. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_set_external_source_for_channel-usage-notes"></a>

 El usuario maestro debe ejecutar el procedimiento `mysql.rds_set_external_source_for_channel`. Este procedimiento debe ejecutarse en la instancia de base de datos de RDS para MySQL de destino en la que va a crear el canal de replicación.

 Antes de ejecutar `mysql.rds_set_external_source_for_channel`, configure un usuario de replicación en la instancia de base de datos de origen con los privilegios necesarios para la réplica de varios orígenes. Para conectar la réplica de varios orígenes a la instancia de base de datos de origen, debe especificar los valores de `replication_user_name` y `replication_user_password` de un usuario de la replicación que tenga permisos `REPLICATION CLIENT` y `REPLICATION SLAVE` en la instancia de base de datos de origen.

**Configuración de un usuario de replicación en la instancia de base de datos de origen**

1. Con el cliente de MySQL que prefiera, conéctese a la instancia de base de datos de origen y cree una cuenta de usuario que se usará para la replicación. A continuación se muestra un ejemplo.
**importante**  
Como práctica recomendada de seguridad, especifique una contraseña distinta del valor de marcador de posición que se muestra en los ejemplos siguientes.

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. En la instancia de base de datos de origen, conceda al usuario de replicación los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE`. En el siguiente ejemplo se conceden los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE` en todas las bases de datos al usuario “repl\$1user” de su dominio.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
   ```

Para utilizar la replicación cifrada, configure la instancia de base de datos de origen para que utilice conexiones SSL.

Después de llamar a `mysql.rds_set_external_source_for_channel` para configurar este canal de replicación, puede llamar a [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) en la réplica para iniciar el proceso de replicación en el canal. Puede llamar a [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel) para detener la replicación en el canal y eliminar la configuración del canal de la réplica.

Cuando llama a `mysql.rds_set_external_source_for_channel`, Amazon RDS registra la hora, el usuario y una acción de `set channel source` en la tabla `mysql.rds_history` sin detalles específicos del canal y en la tabla `mysql.rds_replication_status` con el nombre del canal. Esta información se registra únicamente con fines de monitorización y uso interno. Para registrar toda la llamada al procedimiento con fines de auditoría, considere la posibilidad de habilitar los registros de auditoría o los registros generales, según los requisitos específicos de su aplicación.

### Ejemplos
<a name="mysql_rds_set_external_source_for_channel-examples"></a>

Cuando se ejecuta en una instancia de base de datos de RDS para MySQL, el siguiente ejemplo permite configurar un canal de replicación denominado `channel_1` en esta instancia de base de datos para replicar los datos del origen especificado por el host `sourcedb.example.com` y el puerto `3306`.

```
call mysql.rds_set_external_source_for_channel(
  'sourcedb.example.com',
  3306,
  'repl_user',
  'password',
  'mysql-bin-changelog.0777',
  120,
  0,
  'channel_1');
```

## mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_external_source_with_auto_position_for_channel"></a>

Configura un canal de replicación en una instancia de base de datos de RDS para MySQL con un retardo de replicación opcional. La replicación está basada en identificadores de transacciones globales (GTID).

**importante**  
Para ejecutar este procedimiento, `autocommit` debe estar habilitado. Para habilitarlo, establezca el parámetro `autocommit` en `1`. Para obtener información acerca de cómo modificar los parámetros, consulte [Modificación de los parámetros de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

### Sintaxis
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-syntax"></a>

 

```
CALL mysql.rds_set_external_source_with_auto_position_for_channel (
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , ssl_encryption
  , delay
  , channel_name
);
```

### Parámetros
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-parameters"></a>

 *host\$1name*   
El nombre de host o la dirección IP de la instancia de base de datos de origen de RDS para MySQL.

 *host\$1port*   
El puerto utilizado por la instancia de base de datos de origen de RDS para MySQL. Si la configuración de la red incluye la replicación de puertos Secure Shell (SSH) que convierte el número de puerto, especifique el número de puerto expuesto por SSH.

 *replication\$1user\$1name*   
El identificador de un usuario con permisos `REPLICATION CLIENT` y `REPLICATION SLAVE` en la instancia de base de datos de origen de RDS para MySQL. Es recomendable que proporcione una cuenta que se use solo para la replicación con la instancia de base de datos de origen.

 *replication\$1user\$1password*   
La contraseña del ID de usuario especificado en `replication_user_name`.

 *ssl\$1encryption*   
Valor que especifica si el cifrado de la capa de conexión segura (SSL) se usa en la conexión de reproducción. El 1 especifica que se usa el cifrado SSL; el 0 especifica que no se usa el cifrado. El valor predeterminado es 0.  
La opción `SOURCE_SSL_VERIFY_SERVER_CERT` no es compatible. Esta opción se establece en 0, lo que significa que la conexión está cifrada, pero los certificados no se verifican.

 *delay*   
El número mínimo de segundos para retardar la replicación desde la instancia de base de datos de origen.  
El límite de este parámetro es de un día (86400 segundos).

 *nombre\$1canal*   
El nombre del canal de replicación. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_set_external_source_with_auto_position_for_channel`. Este procedimiento debe ejecutarse en la instancia de base de datos de RDS para MySQL de destino en la que va a crear el canal de replicación.

Antes de ejecutar `rds_set_external_source_with_auto_position_for_channel`, configure un usuario de replicación en la instancia de base de datos de origen con los privilegios necesarios para la réplica de varios orígenes. Para conectar la réplica de varios orígenes a la instancia de base de datos de origen, debe especificar los valores de `replication_user_name` y `replication_user_password` de un usuario de la replicación que tenga permisos `REPLICATION CLIENT` y `REPLICATION SLAVE` en la instancia de base de datos de origen.

**Configuración de un usuario de replicación en la instancia de base de datos de origen**

1. Con el cliente de MySQL que prefiera, conéctese a la instancia de base de datos de origen y cree una cuenta de usuario que se usará para la replicación. A continuación se muestra un ejemplo.
**importante**  
Como práctica recomendada de seguridad, especifique una contraseña distinta del valor de marcador de posición que se muestra en los ejemplos siguientes.

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. En la instancia de base de datos de origen, conceda al usuario de replicación los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE`. En el siguiente ejemplo se conceden los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE` en todas las bases de datos al usuario “repl\$1user” de su dominio.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
   ```

Para utilizar la replicación cifrada, configure la instancia de base de datos de origen para que utilice conexiones SSL.

Antes de llamar a `mysql.rds_set_external_source_with_auto_position_for_channel`, asegúrese de llamar a [mysql.rds\$1set\$1external\$1source\$1gtid\$1purged](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_gtid_purged) para configurar la variable de sistema `gtid_purged` con un rango de GTID especificado desde un origen externo.

Después de llamar a `mysql.rds_set_external_source_with_auto_position_for_channel` para configurar una instancia de base de datos de Amazon RDS como réplica de lectura en un canal específico, puede llamar a [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) en la réplica de lectura para iniciar el proceso de replicación en ese canal.

Después de llamar a `mysql.rds_set_external_source_with_auto_position_for_channel` para configurar este canal de replicación, puede llamar a [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) en la réplica para iniciar el proceso de replicación en el canal. Puede llamar a [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel) para detener la replicación en el canal y eliminar la configuración del canal de la réplica.

### Ejemplos
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-examples"></a>

Cuando se ejecuta en una instancia de base de datos de RDS para MySQL, el siguiente ejemplo permite configurar un canal de replicación denominado `channel_1` en esta instancia de base de datos para replicar los datos del origen especificado por el host `sourcedb.example.com` y el puerto `3306`. Configura el retardo de replicación mínimo en una hora (3600 segundos). Esto significa que un cambio en la instancia de base de datos de RDS para MySQL de origen no se aplica en la réplica de varios orígenes hasta que haya transcurrido al menos una hora.

```
call mysql.rds_set_external_source_with_auto_position_for_channel(
  'sourcedb.example.com',
  3306,
  'repl_user',
  'password',
  1,
  3600,
  'channel_1');
```

## mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel
<a name="mysql_rds_set_external_source_with_delay_for_channel"></a>

Configura un canal de replicación en una instancia de base de datos de RDS para MySQL con un retardo de replicación especificado.

**importante**  
Para ejecutar este procedimiento, `autocommit` debe estar habilitado. Para habilitarlo, establezca el parámetro `autocommit` en `1`. Para obtener información acerca de cómo modificar los parámetros, consulte [Modificación de los parámetros de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

### Sintaxis
<a name="mysql_rds_set_external_source_with_delay_for_channel-syntax"></a>

 

```
CALL mysql.rds_set_external_source_with_delay_for_channel (
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , mysql_binary_log_file_name
  , mysql_binary_log_file_location
  , ssl_encryption
  , delay
  , channel_name
);
```

### Parámetros
<a name="mysql_rds_set_external_source_with_delay_for_channel-parameters"></a>

 *host\$1name*   
El nombre de host o la dirección IP de la instancia de base de datos de origen de RDS para MySQL.

 *host\$1port*   
El puerto utilizado por la instancia de base de datos de origen de RDS para MySQL. Si la configuración de la red incluye la replicación de puertos Secure Shell (SSH) que convierte el número de puerto, especifique el número de puerto expuesto por SSH.

 *replication\$1user\$1name*   
El identificador de un usuario con permisos `REPLICATION CLIENT` y `REPLICATION SLAVE` en la instancia de base de datos de origen de RDS para MySQL. Es recomendable que proporcione una cuenta que se use solo para la replicación con la instancia de base de datos de origen.

 *replication\$1user\$1password*   
La contraseña del ID de usuario especificado en `replication_user_name`.

 *mysql\$1binary\$1log\$1file\$1name*   
El nombre del registro binario de la instancia de base de datos de origen que contiene la información de replicación.

 *mysql\$1binary\$1log\$1file\$1location*   
La ubicación del registro binario `mysql_binary_log_file_name` en la que la replicación comenzará a leer la información de la replicación.  
Para determinar el nombre y la ubicación del archivo binlog, puede ejecutar `SHOW BINARY LOG STATUS` en la instancia de base de datos de origen.  
Versiones anteriores de MySQL utilizaban `SHOW MASTER STATUS` en lugar de `SHOW BINARY LOG STATUS`. Si usa una versión de MySQL anterior a la 8.4, utilice `SHOW MASTER STATUS`.

 *ssl\$1encryption*   
Valor que especifica si el cifrado de la capa de conexión segura (SSL) se usa en la conexión de reproducción. El 1 especifica que se usa el cifrado SSL; el 0 especifica que no se usa el cifrado. El valor predeterminado es 0.  
La opción `SOURCE_SSL_VERIFY_SERVER_CERT` no es compatible. Esta opción se establece en 0, lo que significa que la conexión está cifrada, pero los certificados no se verifican.

 *delay*   
El número mínimo de segundos para retardar la replicación desde la instancia de base de datos de origen.  
El límite de este parámetro es de un día (86400 segundos).

 *nombre\$1canal*   
El nombre del canal de replicación. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_set_external_source_with_delay_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_set_external_source_with_delay_for_channel`. Este procedimiento debe ejecutarse en la instancia de base de datos de RDS para MySQL de destino en la que va a crear el canal de replicación.

Antes de ejecutar `mysql.rds_set_external_source_with_delay_for_channel`, configure un usuario de replicación en la instancia de base de datos de origen con los privilegios necesarios para la réplica de varios orígenes. Para conectar la réplica de varios orígenes a la instancia de base de datos de origen, debe especificar los valores de `replication_user_name` y `replication_user_password` de un usuario de la replicación que tenga permisos `REPLICATION CLIENT` y `REPLICATION SLAVE` en la instancia de base de datos de origen.

**Configuración de un usuario de replicación en la instancia de base de datos de origen**

1. Con el cliente de MySQL que prefiera, conéctese a la instancia de base de datos de origen y cree una cuenta de usuario que se usará para la replicación. A continuación se muestra un ejemplo.
**importante**  
Como práctica recomendada de seguridad, especifique una contraseña distinta del valor de marcador de posición que se muestra en los ejemplos siguientes.

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. En la instancia de base de datos de origen, conceda al usuario de replicación los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE`. En el siguiente ejemplo se conceden los privilegios `REPLICATION CLIENT` y `REPLICATION SLAVE` en todas las bases de datos al usuario “repl\$1user” de su dominio.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
   ```

Para utilizar la replicación cifrada, configure la instancia de base de datos de origen para que utilice conexiones SSL.

Después de llamar a `mysql.rds_set_external_source_with_delay_for_channel` para configurar este canal de replicación, puede llamar a [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) en la réplica para iniciar el proceso de replicación en el canal. Puede llamar a [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel) para detener la replicación en el canal y eliminar la configuración del canal de la réplica.

Cuando llama a `mysql.rds_set_external_source_with_delay_for_channel`, Amazon RDS registra la hora, el usuario y una acción de `set channel source` en la tabla `mysql.rds_history` sin detalles específicos del canal y en la tabla `mysql.rds_replication_status` con el nombre del canal. Esta información se registra únicamente con fines de monitorización y uso interno. Para registrar toda la llamada al procedimiento con fines de auditoría, considere la posibilidad de habilitar los registros de auditoría o los registros generales, según los requisitos específicos de su aplicación.

### Ejemplos
<a name="mysql_rds_set_external_source_with_delay_for_channel-examples"></a>

Cuando se ejecuta en una instancia de base de datos de RDS para MySQL, el siguiente ejemplo permite configurar un canal de replicación denominado `channel_1` en esta instancia de base de datos para replicar los datos del origen especificado por el host `sourcedb.example.com` y el puerto `3306`. Configura el retardo de replicación mínimo en una hora (3600 segundos). Esto significa que un cambio en la instancia de base de datos de RDS para MySQL de origen no se aplica en la réplica de varios orígenes hasta que haya transcurrido al menos una hora.

```
call mysql.rds_set_external_source_with_delay_for_channel(
  'sourcedb.example.com',
  3306,
  'repl_user',
  'password',
  'mysql-bin-changelog.000777',
  120,
  1,
  3600,
  'channel_1');
```

## mysql.rds\$1set\$1source\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_source_auto_position_for_channel"></a>

Establece el modo de replicación para el canal especificado en el que se debe basar ya sea en posiciones de archivos de registros binarios o en identificadores de transacciones globales (GTID).

### Sintaxis
<a name="mysql_rds_set_source_auto_position_for_channel-syntax"></a>

 

```
CALL mysql.rds_set_source_auto_position_for_channel (
auto_position_mode
 , channel_name
);
```

### Parámetros
<a name="mysql_rds_set_source_auto_position_for_channel-parameters"></a>

 *auto\$1position\$1mode*   
Un valor que indicar si debe usarse la replicación de posición de los archivos de registro o la replicación basada en GTID:  
+ `0`: utilice el método de replicación basado en la posición del archivo de registro binario. El valor predeterminado es `0`.
+ `1`: utilice el método de replicación basado en GTID.

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_set_source_auto_position_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_set_source_auto_position_for_channel`. Este procedimiento reinicia la replicación en el canal especificado para aplicar el modo de posición automática especificado.

### Ejemplos
<a name="mysql_rds_set_source_auto_position_for_channel-examples"></a>

En el siguiente ejemplo, se establece el modo de posición automática para que channel\$11 utilice el método de replicación basado en GTID.

```
call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');
```

## mysql.rds\$1set\$1source\$1delay\$1for\$1channel
<a name="mysql_rds_set_source_delay_for_channel"></a>

Establece el número mínimo de segundos para retardar la replicación desde la instancia de base de datos de origen a la réplica de varios orígenes para el canal especificado.

### Sintaxis
<a name="mysql_rds_set_source_delay_for_channel-syntax"></a>

```
CALL mysql.rds_set_source_delay_for_channel(delay, channel_name);
```

### Parámetros
<a name="mysql_rds_set_source_delay_for_channel-parameters"></a>

 *delay*   
El número mínimo de segundos para retardar la replicación desde la instancia de base de datos de origen.  
El límite de este parámetro es de un día (86400 segundos).

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_set_source_delay_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_set_source_delay_for_channel`. Para utilizar este procedimiento, primero llame a `mysql.rds_stop_replication_for_channel` para detener la replicación. A continuación, llame a este procedimiento para establecer el valor del retardo de la replicación. Cuando el retardo esté establecido, llame a `mysql.rds_start_replication_for_channel` para reiniciar la replicación.

### Ejemplos
<a name="mysql_rds_set_source_delay_for_channel-examples"></a>

En el ejemplo siguiente, se establece el retardo de replicación desde la instancia de base de datos de origen en `channel_1` de la réplica de varios orígenes en al menos una hora (3600 segundos).

```
CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');
```

## mysql.rds\$1skip\$1repl\$1error\$1for\$1channel
<a name="mysql_rds_skip_repl_error_for_channel"></a>

Omite un evento de registro binario y elimina un error de replicación en una réplica de varios orígenes de base de datos MySQL para el canal especificado.

### Sintaxis
<a name="mysql_rds_skip_repl_error_for_channel-syntax"></a>

 

```
CALL mysql.rds_skip_repl_error_for_channel(channel_name);
```

### Parámetros
<a name="mysql_rds_skip_repl_error_for_channel-parameters"></a>

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_skip_repl_error_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_skip_repl_error_for_channel` en una réplica de lectura. Este procedimiento se puede utilizar de forma similar a como se utiliza `mysql.rds_skip_repl_error` para omitir un error en una réplica de lectura. Para obtener más información, consulte [Llamar al procedimiento mysql.rds\$1skip\$1repl\$1error](Appendix.MySQL.CommonDBATasks.SkipError.md#Appendix.MySQL.CommonDBATasks.SkipError.procedure).

**nota**  
Para omitir errores en la replicación basada en GTID, se recomienda utilizar este procedimiento en lugar de [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid).

Para determinar si hay errores, ejecute el comando `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G` de MySQL. Si un error de replicación no es crítico, puede ejecutar `mysql.rds_skip_repl_error_for_channel` para omitir el error. Si hay varios errores, `mysql.rds_skip_repl_error_for_channel` elimina el primer error en el canal de replicación especificado y advierte de que hay otros presentes. A continuación, puede usar `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G` para determinar la acción correcta para el siguiente error. Para obtener información acerca de los valores devueltos, consulte [la instrucción SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html) en la documentación de MySQL.

## mysql.rds\$1start\$1replication\$1for\$1channel
<a name="mysql_rds_start_replication_for_channel"></a>

Inicia la replicación desde una instancia de base de datos de RDS para MySQL a una réplica de varios orígenes en el canal especificado.

**nota**  
Puede utilizar el procedimiento almacenado [mysql.rds\$1start\$1replication\$1until\$1for\$1channel](#mysql_rds_start_replication_until_for_channel) o [mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel](#mysql_rds_start_replication_until_gtid_for_channel) para iniciar la reproducción desde una instancia de base de datos de RDS for MySQL y detener la reproducción en la ubicación del archivo de registro binario especificado.

### Sintaxis
<a name="mysql_rds_start_replication_for_channel-syntax"></a>

 

```
CALL mysql.rds_start_replication_for_channel(channel_name);
```

### Parámetros
<a name="mysql_rds_start_replication_for_channel-parameters"></a>

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_start_replication_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_start_replication_for_channel`. Tras importar los datos desde la instancia de base de datos de RDS para MySQL de origen, ejecute este comando en la réplica de varios orígenes para iniciar la replicación en el canal especificado.

### Ejemplos
<a name="mysql_rds_start_replication_for_channel-examples"></a>

En el siguiente ejemplo, se inicia la replicación en `channel_1` de la réplica de varios orígenes.

```
CALL mysql.rds_start_replication_for_channel('channel_1');
```

## mysql.rds\$1start\$1replication\$1until\$1for\$1channel
<a name="mysql_rds_start_replication_until_for_channel"></a>

Inicia la replicación desde una instancia de base de datos de RDS para MySQL en el canal especificado y detiene la replicación en la ubicación del archivo de registro binario especificado.

### Sintaxis
<a name="mysql_rds_start_replication_until_for_channel-syntax"></a>

 

```
CALL mysql.rds_start_replication_until_for_channel (
replication_log_file
  , replication_stop_point
  , channel_name
);
```

### Parámetros
<a name="mysql_rds_start_replication_until_for_channel-parameters"></a>

 *replication\$1log\$1file*   
El nombre del registro binario de la instancia de base de datos de origen que contiene la información de replicación.

 *replication\$1stop\$1point *   
La ubicación del registro binario `replication_log_file` en la que la replicación se detendrá.

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_start_replication_until_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_start_replication_until_for_channel`. Con este procedimiento, la replicación se inicia y, a continuación, se detiene cuando se alcanza la posición especificada del archivo binlog. Este procedimiento detiene tanto `SQL_THREAD` como `IO_THREAD`.

El nombre de archivo especificado para el parámetro `replication_log_file` debe coincidir con el nombre del archivo binlog de la instancia de base de datos de origen.

Cuando el parámetro `replication_stop_point` especifica una ubicación de parada correspondiente al pasado, la replicación se detiene de inmediato.

### Ejemplos
<a name="mysql_rds_start_replication_until_for_channel-examples"></a>

En el ejemplo siguiente, se inicia la replicación en `channel_1` y se replican los cambios hasta que alcanza la ubicación `120` en el archivo de registro binario `mysql-bin-changelog.000777`.

```
call mysql.rds_start_replication_until_for_channel(
  'mysql-bin-changelog.000777',
  120,
  'channel_1'
  );
```

## mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel
<a name="mysql_rds_start_replication_until_gtid_for_channel"></a>

Inicia la replicación en el canal especificado desde una instancia de base de datos de RDS para MySQL y detiene la replicación en el identificador de transacción global (GTID) especificado.

### Sintaxis
<a name="mysql_rds_start_replication_until_gtid_for_channel-syntax"></a>

 

```
CALL mysql.rds_start_replication_until_gtid_for_channel(gtid,channel_name);
```

### Parámetros
<a name="mysql_rds_start_replication_until_gtid_for_channel-parameters"></a>

 *gtid*   
El GTID después del cual debe detenerse la replicación.

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_start_replication_until_gtid_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_start_replication_until_gtid_for_channel`. El procedimiento inicia la replicación en el canal especificado y aplica todos los cambios hasta el valor de GTID especificado. A continuación, detiene la replicación en el canal.

Cuando el parámetro `gtid` especifica una transacción que ya ha ejecutado la réplica, la replicación se detiene de inmediato.

Antes de ejecutar este procedimiento, debe deshabilitar la réplica multiproceso estableciendo el valor de `replica_parallel_workers` o `slave_parallel_workers` en `0`.

### Ejemplos
<a name="mysql_rds_start_replication_until_gtid_for_channel-examples"></a>

En el ejemplo siguiente, se inicia la replicación en `channel_1` y se replican los cambios hasta que alcanza la ubicación `3E11FA47-71CA-11E1-9E33-C80AA9429562:23` del GTI.

```
call mysql.rds_start_replication_until_gtid_for_channel('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','channel_1');
```

## mysql.rds\$1stop\$1replication\$1for\$1channel
<a name="mysql_rds_stop_replication_for_channel"></a>

Detiene la replicación desde una instancia de base de datos de MySQL en el canal especificado.

### Sintaxis
<a name="mysql_rds_stop_replication_for_channel-syntax"></a>

 

```
CALL mysql.rds_stop_replication_for_channel(channel_name);
```

### Parámetros
<a name="mysql_rds_stop_replication_for_channel-parameters"></a>

 *nombre\$1canal*   
El nombre del canal de replicación de la réplica de varios orígenes. Cada canal de replicación recibe los eventos del registro binario de una sola instancia de base de datos de RDS para MySQL de origen que se ejecuta en un host y un puerto específicos.

### Notas de uso
<a name="mysql_rds_stop_replication_for_channel-usage-notes"></a>

El usuario maestro debe ejecutar el procedimiento `mysql.rds_stop_replication_for_channel`.

### Ejemplos
<a name="mysql_rds_stop_replication_for_channel-examples"></a>

En el siguiente ejemplo, se detiene la replicación en `channel_1` de la réplica de varios orígenes.

```
CALL mysql.rds_stop_replication_for_channel('channel_1');
```