Řešení potíží s poškozením databáze na flexibilním serveru 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:
- Přístup k poškozené tabulce
- Pomocí nástroje mysqldump vytvořte logickou zálohu tabulky. Záloha zachová strukturu tabulky a data v ní.
- Opětovné načtení tabulky do databáze
Zálohování databáze nebo tabulek
Důležité
- Ujistěte se, že jste nakonfigurovali pravidlo brány firewall pro přístup k serveru z klientského počítače. Další informace najdete v tématu Konfigurace pravidla brány firewall na jednoúčelovém serveru Azure Database for MySQL a konfigurace pravidla brány firewall na flexibilním serveru Azure Database for MySQL.
- Pokud máte povolený protokol SSL, použijte pro mysqldump možnost
--ssl-cert
SSL.
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
, který chcete nahraditmyserveradmin
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