Risolvere il danneggiamento del database in Database di Azure per MySQL - Server flessibile
SI APPLICA A: Database di Azure per MySQL - Server singolo Database di Azure per MySQL - Server flessibile
Importante
Database di Azure per MySQL server singolo si trova nel percorso di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per MySQL server flessibile. Per altre informazioni sulla migrazione a Database di Azure per MySQL server flessibile, vedere Che cosa accade a Database di Azure per MySQL server singolo?
Il danneggiamento del database può causare tempi di inattività per l'applicazione. È anche fondamentale risolvere i problemi di danneggiamento nel tempo per evitare la perdita di dati. Quando si verifica un danneggiamento del database, viene visualizzato questo errore nei log del server: InnoDB: Database page corruption on disk or a failed.
Questo articolo illustra come risolvere i problemi di danneggiamento del database o della tabella. Database di Azure per MySQL server flessibile usa il motore InnoDB. Offre operazioni automatizzate di controllo e ripristino del danneggiamento. InnoDB verifica la presenza di pagine danneggiate eseguendo checksum in ogni pagina che legge. Se rileva una discrepanza di checksum, arresterà automaticamente l'istanza del server flessibile Database di Azure per MySQL.
Provare le opzioni seguenti per attenuare rapidamente i problemi di danneggiamento del database.
Riavviare il server MySQL
Si nota in genere che un database o una tabella è danneggiato quando l'applicazione accede alla tabella o al database. InnoDB offre un meccanismo di ripristino di arresto anomalo che consente di risolvere la maggior parte dei problemi quando il server viene riavviato. Il riavvio del server può quindi aiutare il server a eseguire il ripristino da un arresto anomalo del database che ha causato uno stato non valido.
Usare il metodo dump e restore
È consigliabile risolvere i problemi di danneggiamento usando un metodo dump e restore . Questo metodo prevede:
- Accesso alla tabella danneggiata.
- Uso dell'utilità mysqldump per creare un backup logico della tabella. Il backup manterrà la struttura della tabella e i dati al suo interno.
- Ricaricamento della tabella nel database.
Eseguire il backup del database o delle tabelle
Importante
- Assicurarsi di aver configurato una regola del firewall per accedere al server dal computer client. Per altre informazioni, vedere Configurare una regola del firewall in Database di Azure per MySQL server singolo e configurare una regola del firewall in Database di Azure per MySQL server flessibile.
- Usare l'opzione
--ssl-cert
SSL per mysqldump se è abilitato SSL.
Creare un file di backup dalla riga di comando usando mysqldump. Usare questo comando:
$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]
Descrizioni dei parametri:
[ssl-cert=/path/to/pem]
: percorso del certificato SSL. Scaricare il certificato SSL nel computer client e impostarne il percorso nel comando . Non usare questo parametro se SSL è disabilitato.[host]
: l'istanza del server flessibile Database di Azure per MySQL.[uname]
: nome utente amministratore del server.[pass]
: password per l'utente amministratore.[dbname]
: nome del database.[backupfile.sql]
: nome del file del backup del database.
Importante
- Per Database di Azure per MySQL server singolo, usare il formato
admin-user@servername
da sostituiremyserveradmin
nei comandi seguenti. - Per Database di Azure per MySQL server flessibile, usare il formato
admin-user
da sostituiremyserveradmin
nei comandi seguenti.
Se una tabella specifica è danneggiata, selezionare tabelle specifiche nel database di cui eseguire il backup:
$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql
Per eseguire il backup di uno o più database, usare l'opzione --database
ed elencare i nomi dei database, separati da spazi:
$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql
Ripristinare il database o le tabelle
La procedura seguente illustra come ripristinare il database o le tabelle. Dopo aver creato il file di backup, è possibile ripristinare le tabelle o i database usando l'utilità mysql. Esegui questo comando:
mysql --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
Ecco un esempio che esegue il testdb
ripristino da un file di backup creato con mysqldump:
Importante
- Per Database di Azure per MySQL server singolo, usare il formato
admin-user@servername
da sostituiremyserveradmin
nel comando seguente. - Per Database di Azure per MySQL server flessibile, usare il formato
admin-user
da sostituiremyserveradmin
nel comando seguente.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql
Passaggi successivi
Se i passaggi precedenti non risolvono il problema, è sempre possibile ripristinare l'intero server: