Gyorsított adatbázis-helyreállítás az Azure SQL-ben

A következőre vonatkozik: Azure SQL DatabaseFelügyelt Azure SQL-példány

A gyorsított adatbázis-helyreállítás (ADR) egy SQL Server adatbázismotor-funkció, amely jelentősen javítja az adatbázisok rendelkezésre állását, különösen hosszú ideig futó tranzakciók esetén az SQL Server adatbázismotor helyreállítási folyamatának újratervezésével.

Az ADR jelenleg elérhető az Azure SQL Database, az Azure SQL Managed Instance, az Azure Synapse Analytics adatbázisai és az SQL Server azure-beli virtuális gépeken az SQL Server 2019-től kezdődően. Az SQL Server ADR-ével kapcsolatos információkért lásd: Gyorsított adatbázis-helyreállítás kezelése.

Megjegyzés:

Az ADR alapértelmezés szerint engedélyezve van az Azure SQL Database-ben és a felügyelt Azure SQL-példányban. Az ADR letiltása az Azure SQL Database-ben és a felügyelt Azure SQL-példányban nem támogatott.

Áttekintés

Az ADR elsődleges előnyei a következők:

  • Gyors és konzisztens adatbázis-helyreállítás

    Az ADR esetén a hosszú ideig futó tranzakciók nem befolyásolják a teljes helyreállítási időt, így a rendszer aktív tranzakcióinak számától vagy méretétől függetlenül gyors és konzisztens adatbázis-helyreállítást tesz lehetővé.

  • Azonnali tranzakció-visszaállítás

    Az ADR használatával a tranzakciók visszaállítása azonnal megtörténik, függetlenül attól, hogy a tranzakció aktív volt-e, vagy hány frissítést hajtottak végre.

  • Agresszív napló csonkolás

    Az ADR használatával a tranzakciónapló agresszíven csonkolt, még aktív, hosszú ideig futó tranzakciók jelenlétében is, ami megakadályozza, hogy az ellenőrzés kinőjön.

Standard adatbázis-helyreállítási folyamat

Az adatbázis-helyreállítás az ARIES helyreállítási modellt követi, és három fázisból áll, amelyeket az alábbi diagram szemléltet, és a diagramot követően részletesebben ismertet.

current recovery process

  • Elemzési fázis

    A tranzakciónaplót az utolsó sikeres ellenőrzőpont (vagy a legrégebbi piszkos oldal LSN) kezdetétől a végéig továbbhaladva állapítsa meg az egyes tranzakciók állapotát az adatbázis leállásának időpontjában.

  • Fázis ismételt elvégzése

    A tranzakciónaplót a legrégebbi, nem véglegesített tranzakciótól a végéig továbbolvasva az adatbázist az összeomlás időpontjában érvényes állapotba hozhatja az összes lekötött művelet ismételt végrehajtásával.

  • Visszavonási fázis

    Minden olyan tranzakció esetében, amely az összeomlás időpontjában aktív volt, visszafelé halad be a naplóba, visszavonva a tranzakció által végrehajtott műveleteket.

E kialakítás alapján az SQL Server adatbázismotor váratlan újraindításból való helyreállításához szükséges idő (nagyjából) arányos az összeomlás időpontjában a rendszer leghosszabb aktív tranzakciójának méretével. A helyreállításhoz vissza kell állítani az összes hiányos tranzakciót. A szükséges időtartam arányos a tranzakció által elvégzett munkával és az aktív idővel. Ezért a helyreállítási folyamat hosszú ideig tarthat hosszú ideig tartó tranzakciók (például nagy méretű tömeges beszúrási műveletek vagy indexépítési műveletek egy nagy táblán) jelenlétében.

Emellett a nagy méretű tranzakciók ezen a kialakításon alapuló lemondása/visszagördülése is hosszú időt vehet igénybe, mivel a fent ismertetett visszavonási helyreállítási fázist használja.

Emellett az SQL Server adatbázismotorja nem tudja csonkítani a tranzakciónaplót, ha hosszú ideig futó tranzakciók vannak, mert a helyreállítási és visszaállítási folyamatokhoz a megfelelő naplórekordokra van szükség. Az SQL Server adatbázismotorjának ezen kialakítása miatt egyes ügyfelek szembesülnek azzal a problémával, hogy a tranzakciónapló mérete nagyon nagy, és nagy mennyiségű meghajtóterületet használ fel.

A gyorsított adatbázis-helyreállítási folyamat

Az ADR úgy oldja meg a fenti problémákat, hogy teljesen újratervezi az SQL Server adatbázismotor helyreállítási folyamatát a következőre:

  • A naplót a legrégebbi aktív tranzakció kezdetétől/elejéig történő vizsgálatának elkerülésével állandó idő/pillanatnyi idő/pillanat alatt teheti meg. Az ADR használatával a tranzakciónapló csak az utolsó sikeres ellenőrzőpontból (vagy a legrégebbi piszkos oldal naplósorozat-számából (LSN) lesz feldolgozva. Ennek eredményeképpen a helyreállítási időt nem befolyásolják a hosszú ideig futó tranzakciók.
  • Minimalizálja a szükséges tranzakciónapló-területet, mivel már nincs szükség a teljes tranzakció naplójának feldolgozására. Ennek eredményeképpen a tranzakciónapló agresszívan csonkítható az ellenőrzőpontok és biztonsági mentések során.

Magas szinten az ADR gyors adatbázis-helyreállítást biztosít az összes fizikai adatbázis-módosítás verziószámozásával, és csak a logikai műveletek visszavonásával, amelyek korlátozottak, és szinte azonnal visszavonhatók. Az összeomlás időpontjában aktív tranzakciók megszakítottként vannak megjelölve, ezért a tranzakciók által generált összes verziót figyelmen kívül hagyhatják az egyidejű felhasználói lekérdezések.

Az ADR helyreállítási folyamat három fázisból áll, mint a jelenlegi helyreállítási folyamat. A fázisok ADR-vel való működését az alábbi diagram szemlélteti, és részletesebben ismerteti a diagramot.

ADR recovery process

  • Elemzési fázis

    A folyamat ugyanaz marad, mint korábban, a nem verziószámozott műveletekhez tartozó SLOG rekonstruálásával és a naplórekordok másolásával.

  • Fázis ismételt elvégzése

    Két fázisra bontva (P)

    • 1. fázis

      Ismétlés az SLOG-ból (a legrégebbi nem véglegesített tranzakció egészen az utolsó ellenőrzőpontig). Az ismétlés gyors művelet, mivel csak néhány rekordot kell feldolgoznia az SLOG-ból.

    • 2. fázis

      A tranzakciónaplóból való újrakezdés az utolsó ellenőrzőponttól indul (a legrégebbi nem véglegesített tranzakció helyett)

  • Visszavonási fázis

    Az ADR visszavonási fázisa szinte azonnal befejeződik, mivel az SLOG használatával visszavonja a nem verziószámozott műveleteket és a tartósított verziótárat (PVS) logikai visszaállítással a sorszintű verzióalapú visszavonás végrehajtásához.

ADR helyreállítási összetevők

Az ADR négy fő összetevője a következő:

  • Megőrzött verziótár (PVS)

    A megőrzött verziótár egy új SQL Server-adatbázismotor-mechanizmus, a hagyományos verziótár helyett az adatbázisban létrehozott sorverziók megőrzésére tempdb . A PVS lehetővé teszi az erőforrások elkülönítését, valamint javítja az olvasható másodtárak rendelkezésre állását.

  • Logikai visszaállítás

    A logikai visszaállítás a sorszintű verzióalapú visszavonás végrehajtásáért felelős aszinkron folyamat, amely azonnali tranzakció-visszaállítást és visszavonást biztosít az összes verziójú művelethez. A logikai visszaállítást a következő hajtja végre:

    • Nyomon követi az összes megszakított tranzakciót, és megjelöli azokat más tranzakciók számára láthatatlanként.
    • Visszaállítás végrehajtása a PVS használatával az összes felhasználói tranzakcióhoz ahelyett, hogy fizikailag beolvasta a tranzakciónaplót, és egyenként visszavonta a módosításokat.
    • Az összes zárolás feloldása közvetlenül a tranzakció megszakítása után. Mivel a megszakítás magában foglalja a memória változásainak megjelölését, a folyamat nagyon hatékony, ezért a zárolásokat nem kell hosszú ideig tartani.
  • ÜT

    Az SLOG egy másodlagos memóriabeli naplóstream, amely naplórekordokat tárol a nem verziószámozott műveletekhez (például metaadat-gyorsítótár érvénytelenítése, zárolási beszerzések stb.). Az SLOG a következő:

    • Kevés kötet és memória
    • A lemezen az ellenőrzőpont-folyamat során szerializálva marad
    • Rendszeresen csonkolja a tranzakciók véglegesítéseként
    • Felgyorsítja az ismétlést és a visszavonást csak a nem verziószámozott műveletek feldolgozásával
    • Engedélyezi az agresszív tranzakciónapló-csonkolást, ha csak a szükséges naplórekordokat őrzi meg
  • Tisztító

    A tisztító az aszinkron folyamat, amely rendszeresen felébred, és megtisztítja a nem szükséges lapverziókat.

Gyorsított adatbázis-helyreállítási (ADR) minták

Az ADR-ből a következő számítási feladatok élveznek a legtöbbet:

  • Az ADR a hosszú ideig futó tranzakciókkal rendelkező számítási feladatokhoz ajánlott.
  • Az ADR olyan számítási feladatokhoz ajánlott, amelyeknél az aktív tranzakciók jelentős növekedést okoznak a tranzakciónaplóban.
  • Az ADR olyan számítási feladatokhoz ajánlott, amelyek hosszú ideig tartó helyreállítás (például a szolgáltatás váratlan újraindítása vagy manuális tranzakció-visszaállítás) miatt hosszú ideig elérhetetlenné ták az adatbázist.

Ajánlott eljárások a gyorsított adatbázis-helyreállításhoz

  • Kerülje a hosszú ideig futó tranzakciókat az adatbázisban. Bár az ADR egyik célja az adatbázis-helyreállítás felgyorsítása a hosszú aktív tranzakciók miatt, a hosszan futó tranzakciók késleltethetik a verziókarbantartást, és növelhetik a PVS méretét.

  • Kerülje a nagy méretű tranzakciókat adatdefiníciós módosításokkal vagy DDL-műveletekkel. Az ADR egy SLOG (rendszernapló-stream) mechanizmussal követi nyomon a helyreállítás során használt DDL-műveleteket. Az SLOG csak akkor használatos, ha a tranzakció aktív. Az SLOG ellenőrzőponttal van el el van véve, így az SLOG-t használó nagy tranzakciók elkerülése segíthet az általános teljesítményben. Ezek a forgatókönyvek több helyet foglalnak el az SLOG-nak:

    • A rendszer sok DLL-t hajt végre egy tranzakcióban. Például egy tranzakcióban gyorsan létrehozhat és elvethet ideiglenes táblákat.

    • Egy tábla nagyon sok módosított partíciót/indexet tartalmaz. Az ilyen táblák DROP TABLE műveletéhez például nagy mennyiségű SLOG-memória szükséges, ami késleltetné a tranzakciónapló csonkolását, és késleltetné a visszavonási/újraműveleteket. A megkerülő megoldás lehet az indexek egyenként és fokozatosan történő elvetése, majd a tábla elvetése. Az SLOG-ról további információt az ADR helyreállítási összetevőiben talál.

  • A szükségtelen megszakított helyzetek megelőzése vagy csökkentése. A magas megszakítási sebesség nyomást gyakorol a PVS-tisztítóra, és csökkenti az ADR teljesítményét. A megszakítások a holtpontok nagy arányából, duplikált kulcsokból vagy más korlátozási szabálysértésekből származhatnak.

    • A sys.dm_tran_aborted_transactions DMV az SQL Server-példányon megszakított összes tranzakciót megjeleníti. Az nested_abort oszlop azt jelzi, hogy a tranzakció véglegesítve van, de vannak olyan részek, amelyek megszakadtak (mentési pontok vagy beágyazott tranzakciók), amelyek blokkolhatják a PVS-törlési folyamatot. További információ: sys.dm_tran_aborted_transactions (Transact-SQL).

    • Ha manuálisan szeretné aktiválni a PVS-tisztítási folyamatot a számítási feladatok között vagy a karbantartási időszakokban, használja a következőt sys.sp_persistent_version_cleanup: . További információ: sys.sp_persistent_version_cleanup.

  • Ha a tárterület-használattal, a magas megszakítási tranzakcióval és más tényezőkkel kapcsolatos problémákat észlel, tekintse meg az SQL Server gyorsított adatbázis-helyreállítás (ADR) hibaelhárítását.

További lépések