Come posso risolvere un errore di mysqldump in Amazon RDS MySQL o MariaDB?
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:
-
Imposta un valore per il mantenimento del log binario.
-
Interrompi la replica eseguendo questo comando sulla replica in lettura:
CALL mysql.rds_stop_replication; -
Prendi mysqldump senza**—master-data=2** dalla replica in lettura.
-
Esegui il comando SHOW SLAVE STATUS sulla replica e acquisisci Master_Log_File e Exec_Master_Log_Pos.
-
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:
- L'istanza database RDS di destinazione ha il log binario attivato con periodo di mantenimento del backup > 0 e il file mysqldump contiene un oggetto, ad esempio un trigger, una vista, una funzione o un evento. Per ulteriori informazioni, consulta Come posso risolvere gli errori 1227 e definer quando utilizzo mysqldump per importare dati nella mia istanza database Amazon RDS per MySQL?
- Il file mysqldump che hai importato ha cercato di creare un oggetto con un utente per l'attributo DEFINER che non esiste nell'istanza database RDS. Oppure hai provato a creare un utente per l'attributo che non ha i privilegi utente SUPER richiesti.
- Il comando per la riga indicata nel messaggio di errore richiede privilegi SUPER non forniti nelle istanze database RDS.
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?
- Argomenti
- Database
- Lingua
- Italiano
