Salta al contenuto

Come posso risolvere un errore di mysqldump in Amazon RDS MySQL o MariaDB?

3 minuti di lettura
0

Desidero risolvere un errore che ricevo quando utilizzo mysqldump in Amazon Relational Database Service (Amazon RDS) per importare o esportare dati.

Risoluzione

Utilizza la seguente procedura per risolvere l'errore.

Errore Couldn't start FLUSH TABLES WITH READ LOCK

Quando utilizzi mysqpdump per esportare dati con l'opzione —master-data, l'opzione —master-data acquisisce un FLUSH TABLES WITH READ LOCK. Ciò richiede privilegi SUPER che l'utente primario in Amazon RDS non ha. Amazon RDS non supporta GLOBAL READ LOCK. Quando MySQL esegue un comando CHANGE MASTER TO, il nome di file e la posizione del log binario vengono registrati nel file mysqldump. Per ulteriori informazioni, consulta ER_ACCESS_DENIED_ERROR sul sito web MySQL.

Per risolvere l'errore, rimuovi l'opzione —master-data. Quando rimuovi questa opzione, non viene fornita una posizione esatta del log in mysqldump. Per ovviare al problema, crea mysqldump quando l'applicazione viene arrestata o recuperalo da una replica in lettura di Amazon RDS. Ciò ti consente di ottenere l'esatta posizione del log quando esegui il comando SHOW SLAVE STATUS perché quando interrompi la replica, l'azione verifica che le posizioni dei log binari non cambino. Per creare mysqldump da una replica in lettura di Amazon RDS MySQL dell'istanza database RDS, completa i seguenti passaggi:

  1. Imposta un valore per il mantenimento del log binario.

  2. Interrompi la replica eseguendo questo comando sulla replica in lettura:

    CALL mysql.rds_stop_replication;
  3. Prendi mysqldump senza**—master-data=2** dalla replica in lettura.

  4. Esegui il comando SHOW SLAVE STATUS sulla replica e acquisisci Master_Log_File e Exec_Master_Log_Pos.

  5. Se per l'applicazione utilizzi la replica, esegui questo comando per avviarla nuovamente:

    CALL mysql.rds_start_replication;

    Se non la utilizzi, puoi eliminarla.

Errori max_allowed_packet

L'errore max\ _allowed\ _packet si verifica quando il comando mysqldump richiede un pacchetto più grande del valore del parametro max_allowed_packet impostato per l'istanza database RDS. Per ulteriori informazioni, consulta Packet too large (Pacchetto troppo grande) sul sito web MySQL.

Per risolvere l'errore, aumenta il valore globale di max_allowed_packet. Oppure configura il valore max_allowed_packet in mysqldump per la sessione (anziché globalmente per l'intero database). Ad esempio, puoi modificare il comando come segue:

$ mysqldump --max_allowed_packet=1G ......

Errori DEFINER e privilegi SUPER

Questo errore indica uno o più dei seguenti problemi:

Errori di connessione

Per ulteriori informazioni sulla causa e sulla risoluzione di questo errore, consulta Come posso risolvere l'errore "MySQL server has gone away" durante la connessione alla mia istanza database Amazon RDS MySQL?

Informazioni correlate

mysqldump sul sito web MySQL

Come posso attivare funzioni, procedure e trigger per la mia istanza database Amazon RDS per MySQL?

AWS UFFICIALEAggiornata 2 anni fa