¿Por qué ocurrió este problema a pesar de que el volumen de almacenamiento de Amazon Aurora crecerá automáticamente hasta 64 TB?
Primero, entenderemos el almacenamiento en RDS Aurora. Hay 2 tipos de almacenamiento en Aurora. Almacén de instancias es el almacenamiento local donde se almacenan los objetos temporales y el almacenamiento principal para datos Por lo tanto, cuando ejecuta ALTER en una tabla, generará una tabla temporal y RDS aurora usará el almacenamiento de instancias para almacenar la tabla temporal. Para su instancia, que es la instancia db.r3.large, tiene 1 × 32 GB de almacenamiento local, por lo que si sus objetos temporales en la instancia llegan a ser más grandes que este tamaño, obtendrá el error "tabla llena". Además, el límite de almacenamiento local es diferente del volumen de almacenamiento total. disponible para su instancia de Aurora y, según el uso de su base de datos, su volumen de almacenamiento de Amazon Aurora crecerá automáticamente, hasta 64 TB, en incrementos de 10 GB.Alter en la mesa grande en RDS solución al error completo de la tabla
- Para solucionar el problema, puede ampliar la instancia para obtener más almacenamiento local para ejecutar su ALTER, modificar la tabla y luego reducir el tipo de instancia. Esto da como resultado un tiempo de inactividad mientras se actualiza/reduce el tipo de instancia.
- También puede usar:comando "pt-online-schema-change", si usa este comando, la tabla original aún está disponible para usar sin tiempo de inactividad o sin bloqueo de mesa.
Resultados:
Si modifica la tabla con pt -cambio-de-esquema-en-línea comando en una mesa que tiene un tamaño de 35-40 GB, entonces puede tomar cerca de 30 horas.pt-online-schema-change no bloquea la mesa. Este comando crea disparadores en la tabla original. Pero para esto, necesita privilegios de superusuario. cuando usa el procedimiento de almacenamiento, obtendrá el error:Por qué usar el comando pt-online-schema-change y por qué habilitarlo “log_bin_trust_function_creators” en el grupo de parámetros de base de datos? ?
# 1419:no tiene el privilegio SUPER y el registro binario está habilitado (*podría* usar la variable menos segura log_bin_trust_function_creatorsMotivo: Este error ocurre en las instancias de RDS cuando intenta utilizar "Procedimientos almacenados". Pronto descubrirá que otorgar el superprivilegio a un usuario no funcionará. Entonces, la única forma de hacer que las cosas funcionen es establecer log_bin_trust_function_creators en 1. Según los documentos de Percona: La conclusión es que la creación de disparadores en un servidor con registros binarios habilitados requiere un usuario con privilegios SUPER (lo cual es imposible en Amazon RDS). El mensaje de error especifica la solución. Necesitamos habilitar la variable en el grupo de parámetros de base de datos "log_bin_trust_function_creators". Habilitarlo es como decirle al servidor: “Confío en los disparadores y las funciones de los usuarios habituales, y en que no causarán problemas, así que permita que mis usuarios los creen”. Dado que la funcionalidad de la base de datos no cambiará, se trata de confiar en sus usuarios. log_bin_trust_function_creators es una variable global que se puede cambiar dinámicamente. Tratando de encontrar más detalles sobre "Super_priv", cuando verifique los permisos de los usuarios en la tabla de usuarios de la base de datos MySQL. podría ver que Super_priv no está configurado para nadie excepto para el usuario rdsadmin.
MySQL> select User,Super_priv from user; +-----------+------------+ | User | Super_priv | +-----------+------------+ | rdsadmin | Y | | root | N | | dbuser | N | +-----------+------------+ 3 rows in set (0.00 sec)
Aquí, "root" es el usuario maestro y "dbuser" es el usuario de la base de datos. Estos usuarios los creamos nosotros y el usuario "rdsadmin" lo crea automáticamente AWS, al que no tenemos acceso. Amazon utiliza rdsadmin MySQL para trabajos de mantenimiento y administración.
Este es el final del tutorial, cómo modificar en la tabla grande en la solución RDS para mostrar el error completo.