Innanzitutto, capiremo lo spazio di archiviazione in RDS Aurora. Ci sono 2 tipi di archiviazione in Aurora. Negozio di istanze è la memoria locale in cui sono archiviati gli oggetti temporanei e la memoria principale per i dati. Pertanto, quando esegui ALTER su una tabella, verrà generata una tabella temporanea e RDS aurora utilizzerà l'archiviazione dell'istanza per archiviare la tabella temporanea. Per la tua istanza, che è db.r3.large, ha 1 × 32 GB di archiviazione locale, quindi se i tuoi oggetti temporanei sull'istanza diventano più grandi di questa dimensione, viene visualizzato l'errore "tabella piena". Inoltre, il limite di archiviazione locale è diverso dal volume di archiviazione totale disponibile per la tua istanza Aurora e, in base all'utilizzo del database, il volume di storage di Amazon Aurora aumenterà automaticamente, fino a 64 TB, con incrementi di 10 GB.Perché si è verificato questo problema anche se il volume di storage di Amazon Aurora aumenterà automaticamente fino a 64 TB.?
Alter on big table in RDS soluzione all'errore completo della tabella
- Per superare il problema, puoi aumentare l'istanza per ottenere più spazio di archiviazione locale per eseguire ALTER, modificare la tabella e quindi ridimensionare il tipo di istanza. Ciò si traduce in alcuni tempi di inattività durante l'aggiornamento/downgrade del tipo di istanza.
- Puoi anche usare:il comando "pt-online-schema-change", se usi questo comando rende la tabella originale ancora disponibile per l'uso senza tempi di inattività o nessun blocco del tavolo.
Risultati:
Se stai modificando la tabella con pt -cambio-schema-online comando su un tavolo di dimensioni 35-40 GB potrebbe richiedere circa 30 ore.pt-online-schema-change non blocca il tavolo. Questo comando crea trigger sulla tabella originale. Ma per questo, ha bisogno dei privilegi di superutente. quando stai usando la procedura del negozio, riceverai l'errore:Perché utilizzare il comando pt-online-schema-change e perché abilitarlo "log_bin_trust_function_creators " nel gruppo di parametri DB? ?
#1419 – Non hai il privilegio SUPER e la registrazione binaria è abilitata (potresti* voler usare la variabile log_bin_trust_function_creators meno sicuraMotivo: Questo errore si verifica nelle istanze RDS quando si tenta di utilizzare le "procedure memorizzate". Scoprirai presto che concedere il super privilegio per un utente non funzionerà. Quindi l'unico modo per far funzionare le cose è impostare log_bin_trust_function_creators su 1. Come per i documenti Percona: La conclusione è che la creazione di trigger su un server con log binari abilitati richiede un utente con privilegi SUPER (cosa impossibile in Amazon RDS). Il messaggio di errore specifica la soluzione. Dobbiamo abilitare la variabile nel gruppo di parametri DB "log_bin_trust_function_creators". Abilitarlo è come dire al server: "Mi fido dei trigger e delle funzioni degli utenti regolari e del fatto che non causeranno problemi, quindi consenti ai miei utenti di crearli." Dato che la funzionalità del database non cambierà, diventa una questione di fiducia nei tuoi utenti. log_bin_trust_function_creators è una variabile globale che può essere modificata in modo dinamico. Cercando di trovare maggiori dettagli su "Super_priv", quando controlli i permessi degli utenti nella tabella utente del database MySQL. potresti vedere che Super_priv non è impostato per nessuno tranne l'utente rdsadmin.
MySQL> select User,Super_priv from user; +-----------+------------+ | User | Super_priv | +-----------+------------+ | rdsadmin | Y | | root | N | | dbuser | N | +-----------+------------+ 3 rows in set (0.00 sec)
Qui "root" è l'utente principale e "dbuser" è l'utente DB, questi utenti sono creati da noi e l'utente "rdsadmin" viene creato automaticamente da AWS a cui non abbiamo accesso per questo utente. L'utente rdsadmin MySQL viene utilizzato da Amazon per lavori di manutenzione e gestione.
Questa è la fine del tutorial, come modificare su Big Table nella soluzione RDS per visualizzare l'errore completo.