Adatbázis sérülésének elhárítása az Azure Database for MySQL-ben – rugalmas kiszolgáló

A következőkre vonatkozik: Azure Database for MySQL – Egykiszolgálós Azure Database for MySQL – Rugalmas kiszolgáló

Fontos

Az önálló Azure Database for MySQL-kiszolgáló a kivonási útvonalon van. Határozottan javasoljuk, hogy frissítsen rugalmas Azure Database for MySQL-kiszolgálóra. További információ a rugalmas Azure Database for MySQL-kiszolgálóra való migrálásról: Mi történik az önálló Azure Database for MySQL-kiszolgálóval?

Az adatbázis sérülése állásidőt okozhat az alkalmazás számára. Az adatvesztés elkerülése érdekében a sérülési problémák időben történő megoldása is kritikus fontosságú. Adatbázis-sérülés esetén ez a hiba jelenik meg a kiszolgálónaplókban: InnoDB: Database page corruption on disk or a failed.

Ebből a cikkből megtudhatja, hogyan oldhatja meg az adatbázis- vagy táblasérülési problémákat. A rugalmas Azure Database for MySQL-kiszolgáló az InnoDB motort használja. Automatizált sérülésellenőrzési és javítási műveleteket tartalmaz. Az InnoDB úgy ellenőrzi a sérült oldalakat, hogy minden beolvasott oldalon ellenőrzőösszegeket futtat. Ha ellenőrzőösszeg-eltérést talál, automatikusan leállítja a rugalmas Azure Database for MySQL-kiszolgálópéldányt.

Az adatbázis sérülésével kapcsolatos problémák gyors megoldásához próbálja ki az alábbi lehetőségeket.

Indítsa újra a MySQL-kiszolgálót

Általában azt tapasztalja, hogy egy adatbázis vagy tábla sérült, amikor az alkalmazás hozzáfér a táblához vagy az adatbázishoz. Az InnoDB egy összeomlási helyreállítási mechanizmussal rendelkezik, amely a kiszolgáló újraindítása során a legtöbb problémát meg tudja oldani. Így a kiszolgáló újraindítása segíthet a kiszolgálónak helyreállítani az adatbázis rossz állapotát okozó összeomlást.

A memóriakép és a visszaállítási módszer használata

Javasoljuk, hogy memóriakép- és visszaállítási módszerrel oldja meg a sérülési problémákat. Ez a módszer a következőket foglalja magában:

  1. Hozzáférés a sérült táblához.
  2. A mysqldump segédprogrammal logikai biztonsági másolatot készíthet a tábláról. A biztonsági mentés megőrzi a táblastruktúrát és a benne lévő adatokat.
  3. A tábla újratöltése az adatbázisba.

Adatbázis vagy táblák biztonsági mentése

Fontos

Hozzon létre egy biztonsági mentési fájlt a parancssorból a mysqldump használatával. Használja a következő parancsot:

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

Paraméterleírások:

  • [ssl-cert=/path/to/pem]: Az SSL-tanúsítvány elérési útja. Töltse le az SSL-tanúsítványt az ügyfélszámítógépen, és állítsa be az elérési utat a parancsban. Ne használja ezt a paramétert, ha az SSL le van tiltva.
  • [host]: Az Azure Database for MySQL rugalmas kiszolgálópéldánya.
  • [uname]: A kiszolgáló rendszergazdai felhasználóneve.
  • [pass]: A rendszergazdai felhasználó jelszava.
  • [dbname]: Az adatbázis neve.
  • [backupfile.sql]: Az adatbázis biztonsági mentésének fájlneve.

Fontos

  • Az önálló Azure Database for MySQL-kiszolgáló esetében a formátumot admin-user@servername használva cserélje le myserveradmin a következő parancsokat.
  • Rugalmas Azure Database for MySQL-kiszolgáló esetén a formátumot admin-user használva cserélje le myserveradmin a következő parancsokat.

Ha egy adott tábla sérült, válassza ki az adatbázis adott tábláinak biztonsági mentését:

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

Egy vagy több adatbázis biztonsági mentéséhez használja a kapcsolót --database , és sorolja fel az adatbázisneveket szóközök szerint elválasztva:

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

Adatbázis vagy táblák visszaállítása

Az alábbi lépések bemutatják, hogyan állíthatja vissza az adatbázist vagy a táblákat. A biztonsági mentési fájl létrehozása után a mysql segédprogrammal visszaállíthatja a táblákat vagy adatbázisokat. Futtassa ezt a parancsot:

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

Íme egy példa, amely a mysqldump használatával létrehozott biztonsági mentési fájlból áll vissza testdb :

Fontos

  • Önálló Azure Database for MySQL-kiszolgáló esetén a következő parancsban a formátumot admin-user@servername kell használni myserveradmin .
  • Rugalmas Azure Database for MySQL-kiszolgáló esetén a formátumot admin-user használva cserélje le myserveradmin a következő parancsot.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql

További lépések

Ha az előző lépések nem oldják meg a problémát, bármikor visszaállíthatja a teljes kiszolgálót: