Quiero solucionar un error cuando uso mysqldump en Amazon Relational Database Service (Amazon RDS) para importar o exportar datos.
Resolución
Sigue los pasos de resolución siguientes para resolver el error.
Error Couldn't start FLUSH TABLES WITH READ LOCK
Cuando usas mysqpdump para exportar datos con la opción —master-data, la opción —master-data adquiere un FLUSH TABLES WITH READ LOCK. Esto requiere privilegios SUPER que el usuario principal de Amazon RDS no tiene. Amazon RDS no admite GLOBAL READ LOCK. Cuando MySQL ejecuta un comando CHANGE MASTER TO, el nombre y la posición del archivo de registro binario se registran en el archivo mysqldump. Para obtener más información, consulta ER_ACCESS_DENIED_ERROR en el sitio web de MySQL.
Para resolver este error, elimina la opción —master-data. Al eliminar esta opción, no se te da una posición de registro exacta en el mysqldump. Para solucionar este problema, toma el mysqldump cuando la aplicación esté detenida o extrae el mysqldump de una réplica de lectura de Amazon RDS. Esto te permite obtener la posición exacta del registro cuando ejecutas el comando SHOW SLAVE STATUS. Porque cuando detienes la réplica, esta acción confirma que las posiciones del binlog no cambian. Para crear un mysqldump a partir de una réplica de lectura de MySQL de Amazon RDS de esta instancia de base de datos de RDS, sigue estos pasos:
-
Establece un valor para la retención del registro binario.
-
Ejecuta el siguiente comando en la réplica de lectura para detener la replicación:
CALL mysql.rds_stop_replication;
-
Toma el mysqldump sin —master-data=2 de la réplica de lectura.
-
Ejecuta SHOW SLAVE STATUS en la réplica y captura Master_Log_File y Exec_Master_Log_Pos.
-
Si usas la réplica para tu aplicación, ejecuta el siguiente comando para volver a iniciar la replicación:
CALL mysql.rds_start_replication;
Si no usas la réplica para la aplicación, puedes eliminarla.
Errores Max_allowed_packet
El error max_allowed_packet se produce cuando el comando mysqldump solicita un paquete mayor que el valor del parámetro max_allowed_packet establecido en la instancia de base de datos de RDS. Para obtener más información, consulta Packet too large (Paquete demasiado grande) en el sitio web de MySQL.
Para resolver este error, aumenta el valor global de max_allowed_packet. O bien, configura max_allowed_packet en mysqldump para esa sesión (en lugar de configurarlo globalmente para toda la base de datos). Por ejemplo, puedes modificar el comando de forma similar a la siguiente:
$ mysqldump --max\_allowed\_packet=1G ......
Errores SUPER privileges y DEFINER
Este error muestra uno o más de los siguientes problemas:
Errores de conexión
Para obtener más información sobre la causa y la resolución de este error, consulta ¿Cómo resuelvo el error "MySQL server has gone away" al conectarme a mi instancia de base de datos de MySQL de Amazon RDS?
Información relacionada
mysqldump en el sitio web de MySQL
¿Cómo puedo activar las funciones, procedimientos y desencadenadores de mi instancia de base de datos de Amazon RDS para MySQL?