

# Problemas conocidos y limitaciones para Amazon RDS para MySQL
<a name="MySQL.KnownIssuesAndLimitations"></a>

Los siguientes son problemas conocidos y limitaciones para el uso en Amazon RDS para MySQL.

**Topics**
+ [

## Palabra reservada InnoDB
](#MySQL.Concepts.KnownIssuesAndLimitations.InnodbDatabaseName)
+ [

## Comportamiento completo del almacenamiento de información para Amazon RDS for MySQL
](#MySQL.Concepts.StorageFullBehavior)
+ [

## Incoherencia en el tamaño del grupo de búfer de InnoDB
](#MySQL.Concepts.KnownIssuesAndLimitations.InnodbBufferPoolSize)
+ [

## La optimización de combinación de índice devuelve resultados incorrectos
](#MySQL.Concepts.KnownIssuesAndLimitations.IndexMergeOptimization)
+ [

## Excepciones en los parámetros de MySQL para las instancias de base de datos de Amazon RDS
](#MySQL.Concepts.ParameterNotes)
+ [

## Límites de tamaño de archivo de MySQL en Amazon RDS
](#MySQL.Concepts.Limits.FileSize)
+ [

## Complemento de llavero de MySQL no compatible
](#MySQL.Concepts.Limits.KeyRing)
+ [

## Puertos personalizados
](#MySQL.Concepts.KnownIssuesAndLimitations.CustomPorts)
+ [

## Limitaciones del procedimiento almacenado de MySQL
](#MySQL.Concepts.KnownIssuesAndLimitations.KillProcedures)
+ [

## Replicación basada en GTID con una instancia de origen externa
](#MySQL.Concepts.KnownIssuesAndLimitations.GTID)
+ [

## Complemento de autenticación predeterminado de MySQL
](#MySQL.Concepts.KnownIssuesAndLimitations.authentication-plugin)
+ [

## Anulación de innodb\$1buffer\$1pool\$1size
](#MySQL.Concepts.KnownIssuesAndLimitations.innodb-bp-size)
+ [

## Actualización de MySQL 5.7 a MySQL 8.4
](#MySQL.Concepts.KnownIssuesAndLimitations.upgrade-8-4)
+ [

## Compresión de página de InnoDB
](#MySQL.Concepts.KnownIssuesAndLimitations.innodb-page-compression)

## Palabra reservada InnoDB
<a name="MySQL.Concepts.KnownIssuesAndLimitations.InnodbDatabaseName"></a>

`InnoDB` es una palabra reservada para RDS para MySQL. No puede utilizar este nombre para una base de datos MySQL.

## Comportamiento completo del almacenamiento de información para Amazon RDS for MySQL
<a name="MySQL.Concepts.StorageFullBehavior"></a>

Cuando el almacenamiento se llena para una instancia de base de datos MySQL, puede haber inconsistencias de metadatos, descoincidencias de diccionario y tablas huérfanas. Para evitar estos problemas, detiene Amazon RDS automáticamente una instancia de base de datos que alcanza el `storage-full` estado.

Una instancia de base de datos MySQL alcanza el `storage-full` estado en los siguientes casos:
+ La instancia de base de datos tiene menos de 20.000 MiB de almacenamiento y el almacenamiento disponible alcanza 200 MiB o menos.
+ La instancia de base de datos tiene más de 102.400 MiB de almacenamiento y el almacenamiento disponible alcanza 1024 MiB o menos.
+ La instancia de base de datos tiene entre 20.000 MiB y 102.400 MiB de almacenamiento, y tiene menos del 1 % del almacenamiento disponible.

Después de Amazon RDS detener una instancia de base de datos automáticamente porque alcanzó el `storage-full` estado, aún puede modificarla. Para reiniciar la instancia de base de datos, complete al menos una de las siguientes opciones:
+ Modifique la instancia de base de datos para habilitar el escalado automático del almacenamiento.

  Para obtener más información sobre el escalado automático del almacenamiento, consulte [Administración automática de la capacidad con el escalado automático de almacenamiento de Amazon RDS](USER_PIOPS.Autoscaling.md).
+ Modifique la instancia de base de datos para aumentar su capacidad de almacenamiento.

  Para obtener más información sobre el aumento de la capacidad de almacenamiento, consulte [Aumento de la capacidad de almacenamiento de la instancia de base de datos](USER_PIOPS.ModifyingExisting.md).

Después de realizar uno de estos cambios, la instancia de base de datos se reinicia automáticamente. Para obtener más información acerca de la modificación de una instancia de base de datos , consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

## Incoherencia en el tamaño del grupo de búfer de InnoDB
<a name="MySQL.Concepts.KnownIssuesAndLimitations.InnodbBufferPoolSize"></a>

En MySQL 5.7, existe actualmente un error en el modo en que se administra el tamaño del grupo de búfer de InnoDB. MySQL 5.7 puede establecer en el parámetro `innodb_buffer_pool_size` un valor elevado que puede provocar que el grupo de búfer de InnoDB crezca demasiado y ocupe demasiada memoria. Este efecto puede hacer que el motor de base de datos MySQL deje de funcionar o impedir que se inicie. El problema es más común en las clases de instancia de base de datos que tienen poca memoria disponible.

Para resolverlo, defina como valor del parámetro `innodb_buffer_pool_size` un múltiplo del valor resultante de multiplicar `innodb_buffer_pool_instances` por `innodb_buffer_pool_chunk_size`. Por ejemplo, puede definir como valor de `innodb_buffer_pool_size` ocho veces el producto de `innodb_buffer_pool_instances` por `innodb_buffer_pool_chunk_size`, como se indica en el ejemplo siguiente.

```
innodb_buffer_pool_chunk_size = 536870912
innodb_buffer_pool_instances = 4
innodb_buffer_pool_size = (536870912 * 4) * 8 = 17179869184
```

Para obtener más detalles sobre este error de MySQL 5.7, consulte [https://bugs.mysql.com/bug.php?id=79379](https://bugs.mysql.com/bug.php?id=79379) en la documentación de MySQL. 

## La optimización de combinación de índice devuelve resultados incorrectos
<a name="MySQL.Concepts.KnownIssuesAndLimitations.IndexMergeOptimization"></a>

Las consultas que utilizan la optimización de combinación de índice podrían devolver resultados incorrectos debido a un error en el optimizador de consultas de MySQL introducidos en MySQL 5.5.37. Cuando realiza una consulta en una tabla con múltiples índices, el optimizador examina rangos de filas según múltiples índices, pero no combina los resultados correctamente. Para obtener más información acerca del error del optimizador de consultas, consulte [http://bugs.mysql.com/bug.php?id=72745](https://bugs.mysql.com/bug.php?id=72745) y [http://bugs.mysql.com/bug.php?id=68194](https://bugs.mysql.com/bug.php?id=68194) en la base de datos de errores de MySQL. 

Por ejemplo, imagine una consulta en una tabla con dos índices donde los argumentos de la búsqueda hacen referencia a las columnas indexadas. 

```
1. SELECT * FROM table1
2. WHERE indexed_col1 = 'value1' AND indexed_col2 = 'value2';
```

En este caso, el motor de búsqueda buscará en los dos índices. Sin embargo, debido al error, los resultados combinados son incorrectos. 

Para resolver este problema, puede seguir uno de estos pasos: 
+ Establezca en el parámetro `optimizer_switch` el valor `index_merge=off` en el grupo de parámetros de base de datos de la instancia MySQL. Para obtener información acerca de cómo configurar los parámetros de un grupo de parámetros de base de datos, consulte [Grupos de parámetros para Amazon RDS](USER_WorkingWithParamGroups.md).
+ Actualice la instancia de base de datos MySQL a la versión de MySQL 5.7 u 8.0. Para obtener más información, consulte [Actualizaciones del motor de base de datos de RDS para MySQL](USER_UpgradeDBInstance.MySQL.md). 
+ Si no puede actualizar la instancia ni cambiar el parámetro `optimizer_switch`, puede evitar el error identificando explícitamente un índice para la consulta, por ejemplo: 

  ```
  1. SELECT * FROM table1
  2. USE INDEX covering_index
  3. WHERE indexed_col1 = 'value1' AND indexed_col2 = 'value2';
  ```

Para obtener más información, consulte [Index merge optimization](https://dev.mysql.com/doc/refman/8.0/en/index-merge-optimization.html) (Optimización de combinación de índice) en la documentación de MySQL. 

## Excepciones en los parámetros de MySQL para las instancias de base de datos de Amazon RDS
<a name="MySQL.Concepts.ParameterNotes"></a>

Algunos parámetros de MySQL requieren consideraciones especiales cuando se usan en una instancia de base de datos de Amazon RDS.

### lower\$1case\$1table\$1names
<a name="MySQL.Concepts.ParameterNotes.lower-case-table-names"></a>

Debido a que en el sistema de archivos de Amazon RDS se distingue entre mayúsculas y minúsculas, en el parámetro `lower_case_table_names` no se admite el valor 2 (los nombres se almacenan como se especifican pero se comparan en minúsculas). Los siguientes valores se admiten para instancias de base de datos de Amazon RDS para MySQL:
+ 0 (nombres almacenados como se indican y las comparaciones distinguen de mayúsculas y minúsculas) se admite para todas las versiones de para MySQL.
+ 1 (los nombres almacenados en minúsculas y las comparaciones no distinguen entre mayúsculas y minúsculas) es compatible con las versiones 5.7, 8.0.28 y posteriores de la versión 8.0 y versiones 8.4.

El parámetro `lower_case_table_names` debe definirse como parte de un grupo de parámetros de base de datos personalizado antes de crear una instancia de base de datos. Después, especifique el grupo de parámetros de base de datos personalizado al crear la instancia de base de datos.

Cuando un grupo de parámetros está asociado a una instancia de base de datos de MySQL con una versión inferior a 8.0, le recomendamos que evite cambiar el parámetro `lower_case_table_names` en el grupo de parámetros. Al cambiarlo, podría provocar incoherencias con las copias de seguridad de restauración a un momento dado y con las instancias de base de datos de réplica de lectura.

Cuando un grupo de parámetros está asociado a una instancia de base de datos de MySQL con una versión 8.0 u 8.4, no puede cambiar el parámetro `lower_case_table_names` en el grupo de parámetros.

En las réplicas de lectura siempre debe usarse el mismo valor del parámetro `lower_case_table_names` que en la instancia de base de datos de origen. 

### long\$1query\$1time
<a name="MySQL.Concepts.ParameterNotes.long_query_time"></a>

En el parámetro `long_query_time` puede establecer un valor en coma flotante para poder registrar las consultas lentas en el registro de consultas lentas de MySQL con una resolución de microsegundos. Por ejemplo, el valor 0,1 corresponde a 100 milisegundos, lo que ayuda a depurar transacciones lentas que duran menos de un segundo. 

## Límites de tamaño de archivo de MySQL en Amazon RDS
<a name="MySQL.Concepts.Limits.FileSize"></a>

Para las instancias de base de datos MySQL 8.0 y superiores, el tamaño máximo de archivo es de 16 TiB. Cuando se utilizan espacios de tablas archivo por tabla, el tamaño máximo de archivo limita el tamaño de una tabla de InnoDB a 16 TiB. Los espacios fila-por-tabla de InnoDB (en los que las tablas están cada una en el propio espacio de tabla) se habilitan de manera predeterminada para las instancias de base de datos MySQL. Para obtener más información, consulte [InnoDB Limits](https://dev.mysql.com/doc/refman/8.0/en/innodb-limits.html) en la documentación de MySQL.

**nota**  
Algunas instancias de base de datos existentes tienen un límite inferior. Por ejemplo, las instancias de base de datos MySQL creadas antes de abril de 2014 tienen un límite de tamaño de tabla y de archivo de 2 TB. Este límite de tamaño de archivo de 2 TB también afecta a las instancias de base de datos o las réplicas de lectura creadas a partir de instantáneas de base de datos tomadas antes de abril de 2014, con independencia de cuándo se creó la instancia de base de datos.

El uso de los espacios de tabla file-per-table de InnoDB tiene pros y contras en función de la aplicación. Para determinar el mejor método para su aplicación, consulte [File-Per-Table Tablespaces](https://dev.mysql.com/doc/refman/8.0/en/innodb-file-per-table-tablespaces.html) en la documentación de MySQL. 

No es recomendable permitir que las tablas crezcan hasta el tamaño de archivo máximo. En general, es preferible dividir los datos en tablas más pequeñas, que pueden mejorar el desempeño y los tiempos de recuperación. 

Una opción que se puede usar para dividir una tabla grande en tablas más pequeñas es la creación de particiones. Las particiones distribuyen las porciones de una tabla grande en archivos independientes en función de las reglas que se hayan especificado. Por ejemplo, si almacena las transacciones por fecha, puede crear reglas de partición que distribuyan las transacciones más antiguas entre distintos archivos por medio de la creación de particiones. Después, periódicamente, se pueden archivar los datos de transacciones históricos que no tengan que estar disponibles de forma inmediata para su aplicación. Para obtener información, consulte [Partitioning](https://dev.mysql.com/doc/refman/8.0/en/partitioning.html) en la documentación de MySQL. 

Como no existe una sola tabla o vista del sistema que proporcione el tamaño de todas las tablas y del espacio de tablas del sistema InnoDB, debe consultar varias tablas para determinar el tamaño de los espacios de tablas.

**Determinación del tamaño del espacio de tablas del sistema InnoDB y del espacio de tablas del diccionario de datos**
+ Utilice el comando SQL siguiente para determinar si algún espacio de tablas es demasiado grande y por lo tanto es candidato para particiones. 
**nota**  
El espacio de tabla del diccionario de datos es específico de MySQL 8.0 y versiones posteriores.

  ```
  1. select FILE_NAME,TABLESPACE_NAME, ROUND(((TOTAL_EXTENTS*EXTENT_SIZE)
  2. /1024/1024/1024), 2)  as "File Size (GB)" from information_schema.FILES
  3. where tablespace_name in ('mysql','innodb_system');
  ```

**Para determinar el tamaño de las tablas de usuario de InnoDB fuera del espacio de tablas del sistema InnoDB (para las versiones de MySQL 5.7)**
+ Utilice el comando SQL siguiente para determinar si alguna de las tablas es demasiado grande y por lo tanto es candidata para particiones.

  ```
  1. SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2)
  2. as "Tablespace Size (GB)"
  3. FROM information_schema.INNODB_SYS_TABLESPACES ORDER BY 3 DESC;
  ```

**Determinación del tamaño de las tablas de usuario de InnoDB fuera del espacio de tabla del sistema InnoDB (para las versiones de MySQL 8.0 y posteriores)**
+ Utilice el comando SQL siguiente para determinar si alguna de las tablas es demasiado grande y por lo tanto es candidata para particiones.

  ```
  1. SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2)
  2. as "Tablespace Size (GB)"
  3. FROM information_schema.INNODB_TABLESPACES ORDER BY 3 DESC;
  ```

**Para determinar el tamaño de las tablas de usuario distintas de InnoDB**
+ Utilice el siguiente comando SQL para determinar si alguna de las tablas distintas de InnoDB es demasiado grande.

  ```
  SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH+DATA_FREE)
  / 1024 / 1024/ 1024), 2) As "Approximate size (GB)" FROM information_schema.TABLES
  WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema')
  and ENGINE<>'InnoDB';
  ```

**Para habilitar espacios de tablas file-per-table de InnoDB**
+ Establezca el parámetro  *innodb\$1file\$1per\$1table* en `1` en el grupo de parámetros para la instancia de base de datos. 

**Para deshabilitar los espacios de tablas file-per-table de InnoDB**
+ Establezca el parámetro  *innodb\$1file\$1per\$1table* en `0` en el grupo de parámetros para la instancia de base de datos.

Para obtener más información acerca de la actualización de un grupo de parámetros, consulte [Grupos de parámetros para Amazon RDS](USER_WorkingWithParamGroups.md). 

Cuando haya habilitado o deshabilitado espacios de tablas file-per-table de InnoDB, puede ejecutar el comando `ALTER TABLE` para mover una tabla del espacio de tablas global a su propio espacio de tablas o viceversa, como se muestra en el ejemplo siguiente: 

```
ALTER TABLE table_name TABLESPACE=innodb_file_per_table;
```

## Complemento de llavero de MySQL no compatible
<a name="MySQL.Concepts.Limits.KeyRing"></a>

Actualmente, Amazon RDS para MySQL no admite el complemento de llavero de Amazon Web Services `keyring_aws` de MySQL.

## Puertos personalizados
<a name="MySQL.Concepts.KnownIssuesAndLimitations.CustomPorts"></a>

Amazon RDS bloquea las conexiones al puerto personalizado 33060 para el motor de MySQL. Elija un puerto diferente para su motor de MySQL.

## Limitaciones del procedimiento almacenado de MySQL
<a name="MySQL.Concepts.KnownIssuesAndLimitations.KillProcedures"></a>

Los procedimientos almacenados [mysql.rds\$1kill](mysql-stored-proc-ending.md#mysql_rds_kill) y [mysql.rds\$1kill\$1query](mysql-stored-proc-ending.md#mysql_rds_kill_query) no pueden finalizar las sesiones o consultas propiedad de usuarios de MySQL con nombres de usuario de más de 16 caracteres en las siguientes versiones de RDS para MySQL:
+ Versión 8.0.32 y anteriores a la 8
+ Versión 5.7.41 y anteriores a 5.7

## Replicación basada en GTID con una instancia de origen externa
<a name="MySQL.Concepts.KnownIssuesAndLimitations.GTID"></a>

Amazon RDS admite la replicación basada en identificadores de transacciones globales (GTID) desde una instancia de MySQL externa en una instancia de base de datos de Amazon RDS para MySQL que requiere el ajuste de GTID\$1PURGED durante la configuración. Sin embargo, solo la versión 8.0.37 y versiones posteriores de RDS para MySQL admiten esta funcionalidad.

## Complemento de autenticación predeterminado de MySQL
<a name="MySQL.Concepts.KnownIssuesAndLimitations.authentication-plugin"></a>

Las versiones 8.0.34 y las versiones 8.0 posteriores de RDS para MySQL utilizan el complemento `mysql_native_password`. No se puede cambiar la configuración de `default_authentication_plugin`.

La versión 8.4 y las versiones posteriores de RDS para MySQL utilizan el complemento `caching_sha2_password` como complemento de autenticación predeterminado. Puede cambiar el complemento de autenticación predeterminado de MySQL 8.4. El complemento `mysql_native_password` sigue funcionando con MySQL 8.4, pero el soporte de este complemento finaliza con MySQL 8.4. Para cambiar el complemento de autenticación predeterminado, cree un grupo de parámetros personalizado y modifique el valor del parámetro `authentication_policy`. Para obtener más información, consulte [Grupos de parámetros predeterminados y personalizados](parameter-groups-overview.md#parameter-groups-overview.custom). 

## Anulación de innodb\$1buffer\$1pool\$1size
<a name="MySQL.Concepts.KnownIssuesAndLimitations.innodb-bp-size"></a>

En el caso de las clases de microinstancias o instancias pequeñas de base de datos, el valor predeterminado del parámetro `innodb_buffer_pool_size` puede diferir del valor devuelto al ejecutar el siguiente comando: 

```
mysql> SELECT @@innodb_buffer_pool_size;
```

Esta diferencia puede producirse cuando Amazon RDS necesita anular el valor predeterminado como parte de la administración de las clases de instancias de base de datos. Si es necesario, puede anular el valor predeterminado y establecerlo en un valor que admita la clase de instancia de base de datos. Para determinar un valor válido, añada el uso de memoria y la memoria total disponible en la instancia de base de datos. Para obtener más información, consulte [Tipos de instancias de Amazon RDS](https://aws.amazon.com/rds/instance-types/).

Si su instancia de base de datos tiene solo 4 GB de memoria, no puede configurar `innodb_buffer_pool_size` en 8 GB, pero puede configurarla en 3 GB, en función de la cantidad de memoria que haya asignado a otros parámetros.

Si el valor que introduce es demasiado grande, Amazon RDS lo reduce a los siguientes límites:
+ Clases de microinstancias de base de datos: 256 MB
+ Clases de instancias de base de datos db.t4g.micro: 128 MB

## Actualización de MySQL 5.7 a MySQL 8.4
<a name="MySQL.Concepts.KnownIssuesAndLimitations.upgrade-8-4"></a>

No puede actualizar directamente de MySQL 5.7 a MySQL 8.4. Debe actualizar primero desde MySQL 5.7 a MySQL 8.0 y, a continuación, actualizar de MySQL 8.0 a MySQL 8.4. Para obtener más información, consulte [Actualizaciones de versiones principales de RDS para MySQL](USER_UpgradeDBInstance.MySQL.Major.md).

## Compresión de página de InnoDB
<a name="MySQL.Concepts.KnownIssuesAndLimitations.innodb-page-compression"></a>

La compresión de páginas de InnoDB no funciona con las instancias de base de datos de Amazon RDS que tienen un tamaño de bloque del sistema de archivos de 16 000 porque el tamaño del bloque del sistema de archivos debe ser menor que el tamaño de la página de InnoDB. A partir de febrero de 2024, todas las instancias de bases de datos recién creadas tendrán un tamaño de bloque del sistema de archivos de 16 000, lo que aumenta el rendimiento y reduce el consumo de IOPS durante las descargas de páginas.