Řešení potíží s poškozením databáze na flexibilním serveru Azure Database for MySQL

PLATÍ PRO: Flexibilní server Azure Database for MySQL – Jednoúčelový server Azure Database for MySQL

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?

Poškození databáze může způsobit výpadek vaší aplikace. Je také důležité vyřešit problémy s poškozením včas, aby nedošlo ke ztrátě dat. Pokud dojde k poškození databáze, zobrazí se tato chyba v protokolech serveru: InnoDB: Database page corruption on disk or a failed.

V tomto článku se dozvíte, jak vyřešit problémy s poškozením databáze nebo tabulky. Flexibilní server Azure Database for MySQL používá modul InnoDB. Obsahuje automatizované operace kontroly poškození a oprav. InnoDB kontroluje poškozené stránky spuštěním kontrolních součtů na každé stránce, kterou přečte. Pokud zjistí nesrovnalosti kontrolního součtu, automaticky zastaví instanci flexibilního serveru Azure Database for MySQL.

Pokud chcete rychle zmírnit problémy s poškozením databáze, vyzkoušejte následující možnosti.

Restartujte server MySQL.

Když vaše aplikace přistupuje k tabulce nebo tabulce, obvykle si všimnete poškození databáze nebo tabulky. InnoDB nabízí mechanismus zotavení po havárii, který dokáže vyřešit většinu problémů při restartování serveru. Restartování serveru tak může pomoct serveru zotavit se z chybového ukončení, které způsobilo, že databáze byla ve špatném stavu.

Použití metody výpisu a obnovení

Doporučujeme vyřešit problémy s poškozením pomocí metody výpisu a obnovení . Tato metoda zahrnuje:

  1. Přístup k poškozené tabulce
  2. Pomocí nástroje mysqldump vytvořte logickou zálohu tabulky. Záloha zachová strukturu tabulky a data v ní.
  3. Opětovné načtení tabulky do databáze

Zálohování databáze nebo tabulek

Důležité

Pomocí nástroje mysqldump vytvořte záložní soubor z příkazového řádku. Použijte tento příkaz:

$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]

Popisy parametrů:

  • [ssl-cert=/path/to/pem]: Cesta k certifikátu SSL. Stáhněte si certifikát SSL na klientský počítač a nastavte cestu v něm v příkazu. Tento parametr nepoužívejte, pokud je zakázaný protokol SSL.
  • [host]: Vaše instance flexibilního serveru Azure Database for MySQL.
  • [uname]: Uživatelské jméno správce serveru.
  • [pass]: Heslo pro uživatele správce.
  • [dbname]: Název databáze.
  • [backupfile.sql]: Název souboru zálohy databáze.

Důležité

  • Pro jednoúčelový server Azure Database for MySQL použijte formát admin-user@servername k nahrazení myserveradmin v následujících příkazech.
  • Pro flexibilní server Azure Database for MySQL použijte formát admin-user k nahrazení myserveradmin v následujících příkazech.

Pokud je konkrétní tabulka poškozená, vyberte v databázi konkrétní tabulky, které chcete zálohovat:

$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql

Pokud chcete zálohovat jednu nebo více databází, použijte --database přepínač a seznam názvů databází oddělených mezerami:

$ mysqldump --ssl-cert=</path/to/pem>  -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Obnovení databáze nebo tabulek

Následující kroky ukazují, jak obnovit databázi nebo tabulky. Po vytvoření záložního souboru můžete obnovit tabulky nebo databáze pomocí nástroje mysql. Spusťte tento příkaz:

mysql  --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

Tady je příklad, který obnoví testdb ze záložního souboru vytvořeného pomocí mysqldump:

Důležité

  • Pro jednoúčelový server Azure Database for MySQL použijte formát admin-user@servername k nahrazení myserveradmin v následujícím příkazu.
  • Pro flexibilní server Azure Database for MySQL použijte formát admin-user k nahrazení myserveradmin v následujícím příkazu.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql

Další kroky

Pokud předchozí kroky problém nevyřeší, můžete vždy obnovit celý server: