

# Referencia de MariaDB en Amazon RDS SQL
<a name="Appendix.MariaDB.SQLRef"></a>

A continuación, puede encontrar las descripciones de los procedimientos almacenados del sistema que están disponibles para las instancias de Amazon RDS que ejecutan el motor de base de datos MariaDB.

Puede utilizar los procedimientos almacenados del sistema que están disponibles para instancias de base de datos de MySQL y de MariaDB. Estos procedimientos almacenados están documentados en [Referencia de procedimientos almacenados de RDS para MySQL](Appendix.MySQL.SQLRef.md). Las instancias de base de datos de MariaDB admiten todos los procedimientos almacenados, excepto `mysql.rds_start_replication_until` y `mysql.rds_start_replication_until_gtid`.

Además, los siguientes procedimientos almacenados del sistema solo son compatibles con las instancias de base de datos de Amazon RDS en las que se ejecuta MariaDB:
+ [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md)
+ [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md)
+ [mysql.rds\$1kill\$1query\$1id](mysql_rds_kill_query_id.md)
+ [mysql.rds\$1execute\$1operation](mysql_rds_execute_operation.md)

# mysql.rds\$1replica\$1status
<a name="mysql_rds_replica_status"></a>

Muestra el estado de replicación de una réplica de lectura de MariaDB.

Llama a este procedimiento en la réplica de lectura para mostrar información de estado sobre los parámetros esenciales de los subprocesos de replicación.

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

```
CALL mysql.rds_replica_status;
```

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

Este procedimiento solo es compatible con instancias de base de datos de MariaDB que se ejecuten con las versiones 10.5 y superiores de MariaDB.

Este procedimiento es el equivalente del comando `SHOW REPLICA STATUS`. Este comando no es compatible con las versiones 10.5 y superiores de las instancias de base de datos de MariaDB.

En las versiones anteriores de MariaDB, el comando `SHOW SLAVE STATUS` equivalente requería el privilegio `REPLICATION SLAVE`. En la versión 10.5 y versiones posteriores de MariaDB, se requiere el privilegio `REPLICATION REPLICA ADMIN`. Para proteger la administración de RDS de instancias de base de datos de la versión 10.5 de MariaDB y versiones posteriores, este nuevo privilegio no se otorga al usuario maestro de RDS.

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

En el siguiente ejemplo se muestra el estado de una réplica de lectura de MariaDB:

```
call mysql.rds_replica_status;
```

La respuesta será similar a la siguiente:

```
*************************** 1. row ***************************
                Replica_IO_State: Waiting for master to send event
                     Source_Host: XX.XX.XX.XXX
                     Source_User: rdsrepladmin
                     Source_Port: 3306
                   Connect_Retry: 60
                 Source_Log_File: mysql-bin-changelog.003988
             Read_Source_Log_Pos: 405
                  Relay_Log_File: relaylog.011024
                   Relay_Log_Pos: 657
           Relay_Source_Log_File: mysql-bin-changelog.003988
              Replica_IO_Running: Yes
             Replica_SQL_Running: Yes
                 Replicate_Do_DB:
             Replicate_Ignore_DB:
              Replicate_Do_Table:
          Replicate_Ignore_Table: mysql.rds_sysinfo,mysql.rds_history,mysql.rds_replication_status
         Replicate_Wild_Do_Table:
     Replicate_Wild_Ignore_Table:
                      Last_Errno: 0
                      Last_Error:
                    Skip_Counter: 0
             Exec_Source_Log_Pos: 405
                 Relay_Log_Space: 1016
                 Until_Condition: None
                  Until_Log_File:
                   Until_Log_Pos: 0
              Source_SSL_Allowed: No
              Source_SSL_CA_File:
              Source_SSL_CA_Path:
                 Source_SSL_Cert:
               Source_SSL_Cipher:
                  Source_SSL_Key:
           Seconds_Behind_Master: 0
   Source_SSL_Verify_Server_Cert: No
                   Last_IO_Errno: 0
                   Last_IO_Error:
                  Last_SQL_Errno: 0
                  Last_SQL_Error:
     Replicate_Ignore_Server_Ids:
                Source_Server_Id: 807509301
                  Source_SSL_Crl:
              Source_SSL_Crlpath:
                      Using_Gtid: Slave_Pos
                     Gtid_IO_Pos: 0-807509301-3980
         Replicate_Do_Domain_Ids:
     Replicate_Ignore_Domain_Ids:
                   Parallel_Mode: optimistic
                       SQL_Delay: 0
             SQL_Remaining_Delay: NULL
       Replica_SQL_Running_State: Reading event from the relay log
              Replica_DDL_Groups: 15
Replica_Non_Transactional_Groups: 0
    Replica_Transactional_Groups: 3658
1 row in set (0.000 sec)

Query OK, 0 rows affected (0.000 sec)
```

# mysql.rds\$1set\$1external\$1master\$1gtid
<a name="mysql_rds_set_external_master_gtid"></a>

Configura la reproducción basada en GTID desde una instancia de MariaDB que se ejecuta fuera de Amazon RDS a una instancia de base de datos de MariaDB. Este procedimiento almacenado solo se admite cuando la instancia de MariaDB externa tiene la versión 10.0.24 o posterior. Cuando configure una replicación en la que una o las dos instancias no admitan los identificadores de transacciones globales (GTID) de MariaDB, use [mysql.rds\$1set\$1external\$1master (RDS para MariaDB y RDS para las versiones principales de MySQL 8.0 e inferiores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master).

El uso de GTID para la replicación proporciona características de seguridad en caso de bloqueo que no ofrece la replicación con registros binarios, así que es el procedimiento recomendado cuando las instancias que se van a replicar lo admiten. 

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

 

```
CALL mysql.rds_set_external_master_gtid(
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , gtid
  , ssl_encryption
);
```

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

 *host\$1name*   
Cadena. El nombre de host o dirección IP de la instancia de MariaDB ejecutada fuera de Amazon RDS que se convertirá en instancia de origen.

 *host\$1port*   
Entero. El puerto usado por la instancia de MariaDB ejecutada fuera de Amazon RDS que se configurará como instancia de origen. Si la configuración de la red incluye la replicación del puerto SSH que convierte el número de puerto, especifique el número de puerto expuesto por SSH.

 *replication\$1user\$1name*   
Cadena. ID de un usuario con permisos `REPLICATION SLAVE` en la instancia de base de datos de MariaDB que se va a configurar como réplica de lectura.

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

 *gtid*   
Cadena. El ID de transacción global de la instancia de origen desde el que debe comenzar la replicación.  
Puede usar `@@gtid_current_pos` para obtener el GTID actual si la instancia de origen se ha bloqueado mientras se configura la replicación con el fin de que el registro binario no cambie entre los puntos en los que se obtiene el GTID y comienza la replicación.  
De lo contrario, si usa `mysqldump` versión 10.0.13 o posterior para rellenar la instancia de réplica antes de comenzar la replicación, puede obtener la posición de GTID en la salida usando las opciones `--master-data` o `--dump-slave`. Si no usa `mysqldump` 10.0.13 o posterior, puede ejecutar `SHOW MASTER STATUS` o usar las mismas opciones de `mysqldump` para obtener el nombre y la posición del archivo de registro binario y convertirlos a continuación en un GTID ejecutando `BINLOG_GTID_POS` en la instancia de MariaDB externa:  

```
SELECT BINLOG_GTID_POS('<binary log file name>', <binary log file position>);
```
Para obtener más información acerca de la implementación de los GTID en MariaDB, vaya a [Global Transaction ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/) en la documentación de MariaDB.

 *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 `MASTER_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.

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

El usuario maestro debe ejecutar el procedimiento `mysql.rds_set_external_master_gtid`. Se debe ejecutar en la instancia de base de datos de MariaDB que se está configurando como réplica de una instancia de MariaDB que se ejecuta fuera de Amazon RDS. Antes de ejecutar `mysql.rds_set_external_master_gtid`, debe haber configurado la instancia de MariaDB que se ejecuta fuera de Amazon RDS como instancia de origen. Para obtener más información, consulte [Importación de datos en una instancia de base de datos de Amazon RDS para MariaDB](MariaDB.Procedural.Importing.md).

**aviso**  
No use `mysql.rds_set_external_master_gtid` para administrar la replicación entre dos instancias de base de datos de Amazon RDS. Úselo solo cuando replique con una instancia de MariaDB que se ejecute fuera de RDS. Para obtener información sobre la administración de la replicación entre instancias de base de datos de Amazon RDS, consulte [Trabajo con réplicas de lectura de instancias de base de datos](USER_ReadRepl.md).

Después de llamar a `mysql.rds_set_external_master_gtid` para configurar una instancia de base de datos de Amazon RDS como réplica de lectura, puede llamar a [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) en la réplica para iniciar el proceso de replicación. Puede llamar a [mysql.rds\$1reset\$1external\$1master (RDS para MariaDB y RDS para las versiones principales de MySQL 8.0 e inferiores)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) para eliminar la configuración de la réplica de lectura.

Cuando se llama a `mysql.rds_set_external_master_gtid`, Amazon RDS registra la hora, el usuario y una acción "set master" en las tablas `mysql.rds_history` y `mysql.rds_replication_status`.

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

Cuando se ejecuta en una instancia de base de datos de MariaDB, el siguiente ejemplo la configura como réplica de una instancia de MariaDB que se ejecuta fuera de Amazon RDS.

```
call mysql.rds_set_external_master_gtid ('Sourcedb.some.com',3306,'ReplicationUser','SomePassW0rd','0-123-456',0); 
```

# mysql.rds\$1kill\$1query\$1id
<a name="mysql_rds_kill_query_id"></a>

Finaliza una consulta que se ejecuta en el servidor de MariaDB para finalizar consultas de larga duración o problemáticas. Puede identificar el ID de la consulta y detener de forma eficaz una consulta específica para abordar los problemas de rendimiento y mantener un funcionamiento óptimo de la base de datos.

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

```
CALL mysql.rds_kill_query_id(queryID);
```

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

 *queryID*   
Entero. La identidad de la consulta que se va a finalizar.

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

Para detener una consulta que se ejecute en el servidor de MariaDB, use el procedimiento `mysql.rds_kill_query_id` y transfiera el ID de esa consulta. Para obtener el ID de la consulta, consulte la [Information Schema PROCESSLIST Table](http://mariadb.com/kb/en/mariadb/information-schema-processlist-table/) de MariaDB, como se muestra a continuación:

```
SELECT USER, HOST, COMMAND, TIME, STATE, INFO, QUERY_ID FROM 
                INFORMATION_SCHEMA.PROCESSLIST WHERE USER = '<user name>';
```

La conexión al servidor de MariaDB se conserva.

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

El siguiente ejemplo finaliza una consulta con el ID de consulta 230040:

```
call mysql.rds_kill_query_id(230040); 
```

# mysql.rds\$1execute\$1operation
<a name="mysql_rds_execute_operation"></a>

Ejecuta operaciones de InnoDB para administrar los estados de los grupos de búferes y el espacio de tablas temporal. Este procedimiento se puede utilizar para controlar dinámicamente las operaciones de InnoDB, como volcar y cargar los estados de los grupos de búferes o truncar un espacio de tabla temporal.

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

```
CALL mysql.rds_execute_operation(operation);
```

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

 *Operación de*   
Cadena. Las operaciones de InnoDB a ejecutar. Los valores válidos son:  
+ *innodb\$1buffer\$1pool\$1dump\$1now*: operación que vuelca el estado actual del conjunto de búferes.
+ *innodb\$1buffer\$1pool\$1load\$1now*: operación que carga el estado del conjunto de búferes guardado.
+ *innodb\$1buffer\$1pool\$1load\$1abort*: operación que anula una operación de carga de un grupo de búferes.
+ *innodb\$1truncate\$1temporary\$1tablespace\$1now*: operación que trunca el espacio de tabla temporal.

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

Este procedimiento solo es compatible con instancias de base de datos de MariaDB que se ejecuten con las versiones 11.8 y superiores de MariaDB.

Durante la ejecución, el registro binario se desactiva temporalmente para impedir la replicación de estos comandos administrativos.

El procedimiento mantiene un registro de auditoría al registrar todas las operaciones en la tabla de [https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls](https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls).

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

El siguiente ejemplo muestra la reducción de un espacio de tablas temporal mediante `mysql.rds_execute_operation`:

Para comprobar el tamaño actual del espacio de tabla temporal, ejecute la siguiente consulta:

```
      
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary';
+------------+
| FILE_SIZE  |
+------------+
| 6723469312 |  -- 6.3 GB
+------------+
```

Al eliminar tablas temporales, no se reduce el uso de almacenamiento en el espacio de tablas global. Para reducir el tamaño del espacio de tablas global, ejecute el comando `mysql.rds_execute_operation` para reducir el espacio de tabla temporal.

```
 
CALL mysql.rds_execute_operation('innodb_truncate_temporary_tablespace_now');
Query OK, 2 rows affected (0.004 sec)
```

Tras ejecutar el procedimiento, compruebe que se ha reclamado el espacio.

```
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary';
+-----------+
| FILE_SIZE |
+-----------+
|  12582912 |  -- 12 MB
+-----------+
```

**nota**  
 La operación de reducción puede tardar un poco, en función del tamaño del espacio de tablas temporal y de la carga de trabajo actual.

**importante**  
El espacio de tablas temporal se reduce solo cuando todas las tablas temporales que contribuyeron a su tamaño ya no se utilizan. Se recomienda ejecutar este procedimiento cuando no haya espacios de tabla temporales activos en la instancia. 