Írásvédett replikák használata írásvédett lekérdezési számítási feladatok kiszervezéséhez
A következőre vonatkozik: Azure SQL Database
Felügyelt Azure SQL-példány
A magas rendelkezésre állású architektúra részeként a prémium és üzletileg kritikus szolgáltatási szinten lévő összes önálló adatbázis vagy rugalmas készletadatbázis automatikusan ki van építve elsődleges írásvédett replikával és egy vagy több másodlagos írásvédett replikával. A másodlagos replikák az elsődleges replikával megegyező számítási mérettel vannak kiépítve. Az olvasási felskálázási funkció lehetővé teszi az írásvédett számítási feladatok kiszervezését az írásvédett replikák egyikének számítási kapacitásával, ahelyett, hogy az írásvédett replikán futtatja őket. Így egyes írásvédett számítási feladatok elkülöníthetők az írási-olvasási számítási feladatoktól, és nem befolyásolják a teljesítményüket. A funkció olyan alkalmazásokhoz készült, amelyek logikailag elválasztott írásvédett számítási feladatokat, például elemzéseket tartalmaznak. A Prémium és üzletileg kritikus szolgáltatási szinteken az alkalmazások további költségek nélkül nyerhetnek teljesítménybeli előnyöket ezzel a további kapacitással.
Az olvasási felskálázási funkció a Rugalmas skálázás szolgáltatásszinten is elérhető, ha legalább egy másodlagos replikát hozzáad. A rugalmas skálázású másodlagos elnevezett replikák független skálázást, hozzáférés-elkülönítést, számítási feladatok elkülönítését, különböző olvasási horizontális felskálázási forgatókönyvek támogatását és egyéb előnyöket biztosítanak. Több másodlagos HA-replika is használható olyan írásvédett terheléselosztáshoz, amelyek több erőforrást igényelnek, mint egy másodlagos HA-replikán.
Az alapszintű, standard és általános célú szolgáltatási szintek magas rendelkezésre állású architektúrája nem tartalmaz replikákat. Az olvasási felskálázási funkció ezekben a szolgáltatási szintekben nem érhető el. Az Azure SQL Database használatakor azonban a georeplikák hasonló funkciókat biztosíthatnak ezekben a szolgáltatási szintekben. A felügyelt Azure SQL-példányok és feladatátvételi csoportok használatakor a feladatátvételi csoport írásvédett figyelője hasonló funkciókat biztosíthat.
Az alábbi ábra a Prémium szintű és üzletileg kritikus adatbázisok és felügyelt példányok funkcióját mutatja be.
Az olvasási felskálázási funkció alapértelmezés szerint engedélyezve van az új Prémium, üzletileg kritikus és Rugalmas skálázású adatbázisokban.
Megjegyzés:
Az olvasási felskálázás mindig engedélyezve van a felügyelt SQL-példány üzletileg kritikus szolgáltatási szintjén, valamint a legalább egy másodlagos replikával rendelkező rugalmas skálázású adatbázisok esetében.
Ha az SQL kapcsolati sztring konfigurálva van, a rendszer átirányítja az alkalmazást az adatbázis vagy felügyelt példány írásvédett ApplicationIntent=ReadOnly
replikájára. A tulajdonság használatáról további információt az ApplicationIntent
Alkalmazás szándékának megadása című témakörben talál.
Csak Azure SQL Database esetén, ha biztosítani szeretné, hogy az alkalmazás az SQL kapcsolati sztring beállításától ApplicationIntent
függetlenül csatlakozzon az elsődleges replikához, az adatbázis létrehozásakor vagy konfigurációjának módosításakor explicit módon le kell tiltania az olvasási felskálázást. Ha például a Standard vagy az Általános célú szintről prémium szintre vagy üzletileg kritikus szeretné frissíteni az adatbázist, és meg szeretné győződni arról, hogy az összes kapcsolat továbbra is az elsődleges replikára kerül, tiltsa le az olvasási felskálázást. A letiltás módjáról további információt az olvasási felskálázás engedélyezése és letiltása című témakörben talál.
Megjegyzés:
A lekérdezéstár és az SQL Profiler funkciói nem támogatottak írásvédett replikákon.
Adatkonzisztencia
Az elsődleges replikán végrehajtott adatmódosítások szinkron vagy aszinkron módon maradnak meg az írásvédett replikákon a replika típusától függően. Az összes replikatípus esetében azonban az írásvédett replikából származó olvasások mindig aszinkronok az elsődleges replika tekintetében. Egy írásvédett replikához csatlakoztatott munkameneten belül az olvasások mindig tranzakciós konzisztensek. Mivel az adatpropagálás késése változó, a különböző replikák az elsődlegeshez és egymáshoz képest kissé eltérő időpontban adhatják vissza az adatokat. Ha egy írásvédett replika elérhetetlenné válik, és egy munkamenet újracsatlakozik, akkor csatlakozhat egy olyan replikához, amely más időpontban van, mint az eredeti replika. Hasonlóképpen, ha egy alkalmazás írásvédett munkamenet használatával módosítja az adatokat az elsődlegesen, és azonnal beolvassa azokat írásvédett replikán, lehetséges, hogy a legújabb módosítások nem jelennek meg azonnal.
Az elsődleges replika és az írásvédett replikák közötti tipikus adatpropagálási késés az ezredmásodperctől az egyjegyű másodpercig terjedő tartományban változik. Az adatok propagálási késése azonban nincs rögzített felső határban. A replika magas erőforrás-kihasználtsága jelentősen növelheti a késést. Azokat az alkalmazásokat, amelyek garantált adatkonzisztenciát követelnek meg a munkamenetek között, vagy a véglegesített adatok azonnali olvashatóságát követelik meg, az elsődleges replikát kell használniuk.
Megjegyzés:
Az adatpropagálás késése magában foglalja a naplórekordok másodlagos replikákba való küldéséhez és megőrzéséhez szükséges időt. A naplórekordok adatlapokon való ismételt végrehajtásához (alkalmazásához) szükséges időt is tartalmazza. Az adatkonzisztencia biztosítása érdekében a módosítások csak a tranzakció véglegesítési naplórekordjának alkalmazásával láthatók. Ha a számítási feladat nagyobb tranzakciókat használ, az adatok hatékony propagálási késése nő.
Az adatpropagálás késésének monitorozásáról a Csak olvasási replika figyelése és hibaelhárítása című témakörben olvashat.
Csatlakozás írásvédett replikára
Ha engedélyezi az olvasási felskálázást egy adatbázishoz, az ApplicationIntent
ügyfél által biztosított kapcsolati sztring az határozza meg, hogy a kapcsolat az írási replikához vagy egy írásvédett replikához van-e irányítva. Pontosabban, ha az ApplicationIntent
ReadWrite
érték (az alapértelmezett érték), a kapcsolat az olvasási-írási replikához lesz irányítva. Ez megegyezik a viselkedésével, ha ApplicationIntent
nem szerepel a kapcsolati sztring. Ha az ApplicationIntent
érték az ReadOnly
, a kapcsolat egy írásvédett replikához lesz irányítva.
Az alábbi kapcsolati sztring például egy írásvédett replikához csatlakoztatja az ügyfelet (a szögletes zárójelek elemeit lecseréli a környezet megfelelő értékeire, és elveti a szögletes zárójeleket):
Server=tcp:<server>.database.windows.net;Database=<mydatabase>;ApplicationIntent=ReadOnly;User ID=<myLogin>;Password=<myPassword>;Trusted_Connection=False; Encrypt=True;
Ha írásvédett replikához szeretne csatlakozni az SQL Server Management Studio (SSMS) használatával, válassza a Beállítások lehetőséget
Válassza a További Csatlakozás ion paraméterek lehetőséget, majd adja megApplicationIntent=ReadOnly
, majd válassza a Csatlakozás
Az alábbi kapcsolati sztring bármelyike egy olvasási-írási replikához köti az ügyfelet (a szögletes zárójelek elemeit lecseréli a környezet megfelelő értékeire, és elveti a szögletes zárójeleket):
Server=tcp:<server>.database.windows.net;Database=<mydatabase>;ApplicationIntent=ReadWrite;User ID=<myLogin>;Password=<myPassword>;Trusted_Connection=False; Encrypt=True;
Server=tcp:<server>.database.windows.net;Database=<mydatabase>;User ID=<myLogin>;Password=<myPassword>;Trusted_Connection=False; Encrypt=True;
Ellenőrizze, hogy a kapcsolat írásvédett replikával van-e
Az adatbázis környezetében az alábbi lekérdezés futtatásával ellenőrizheti, hogy csak olvasható replikához csatlakozik-e. READ_ONLY ad vissza, ha írásvédett replikához csatlakozik.
SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability');
Megjegyzés:
Prémium és üzletileg kritikus szolgáltatási szinteken a csak olvasható replikák közül csak az egyik érhető el bármikor. A rugalmas skálázás több írásvédett replikát támogat.
Csak olvasható replikák monitorozása és hibaelhárítása
Ha írásvédett replikához csatlakozik, a dinamikus felügyeleti nézetek (DMV-k) tükrözik a replika állapotát, és nyomon követés és hibaelhárítás céljából lekérdezhetők. Az adatbázismotor több nézetet is biztosít a figyelési adatok széles körének közzétételéhez.
A replika monitorozásához és hibaelhárításához gyakran az alábbi nézeteket használják:
Név | Cél |
---|---|
sys.dm_db_resource_stats | Erőforrás-kihasználtsági metrikákat biztosít az elmúlt órához, beleértve a cpu-t, az adat-IO-t és a naplóírási kihasználtságot a szolgáltatás objektív korlátaihoz képest. |
sys.dm_os_wait_stats | Összesített várakozási statisztikákat biztosít az adatbázismotor-példányhoz. |
sys.dm_database_replica_states | Replikaállapot- és szinkronizálási statisztikákat biztosít. Az üzenetsor méretének és ismétlési sebességének újbóli elvégzése a csak olvasható replika adatterjesztési késésének mutatója. |
sys.dm_os_performance_counters | Adatbázismotor teljesítményszámlálóit biztosítja. |
sys.dm_exec_query_stats | Lekérdezésenkénti végrehajtási statisztikákat biztosít, például a végrehajtások számát, a felhasznált processzoridőt stb. |
sys.dm_exec_query_plan() | Gyorsítótárazott lekérdezési csomagokat biztosít. |
sys.dm_exec_sql_text() | Lekérdezésszöveget biztosít a gyorsítótárazott lekérdezési tervhez. |
sys.dm_exec_query_profiles | Valós idejű lekérdezési folyamatot biztosít a lekérdezések végrehajtása közben. |
sys.dm_exec_query_plan_stats() | Az utolsó ismert tényleges végrehajtási tervet tartalmazza, beleértve a lekérdezés futtatókörnyezeti statisztikáit. |
sys.dm_io_virtual_file_stats() | Az összes adatbázisfájl tárolási IOPS-, átviteli sebesség- és késési statisztikáit biztosítja. |
Megjegyzés:
A sys.resource_stats
logikai master
adatbázisban lévő DMV-k az sys.elastic_pool_resource_stats
elsődleges replika erőforrás-kihasználtsági adatait adják vissza.
Csak olvasható replikák monitorozása kiterjesztett eseményekkel
Nem hozható létre kiterjesztett esemény munkamenet, ha írásvédett replikához csatlakozik. Az Azure SQL Database-ben azonban az elsődleges replikán létrehozott és módosított adatbázis-hatókörű kiterjesztett esemény-munkamenetek definíciói írásvédett replikákra replikálódnak, beleértve a georeplikákat is, és eseményeket rögzítenek írásvédett replikákon.
Az elsődleges replika munkamenetdefinícióján alapuló, írásvédett replikán lévő kiterjesztett esemény munkamenete az elsődleges replikán lévő munkamenettől függetlenül indítható el és állítható le.
Ha csak olvasható replikán szeretne esemény-munkamenetet elvetni, kövesse az alábbi lépéseket:
- Csatlakozás SSMS Object Explorert vagy egy lekérdezésablakot az írásvédett replikához.
- Állítsa le a munkamenetet az írásvédett replikán az Object Explorer munkamenet helyi menüjének Munkamenet leállítása parancsával vagy egy lekérdezésablakban való
ALTER EVENT SESSION [session-name-here] ON DATABASE STATE = STOP;
végrehajtással. - Csatlakozás Objektumkezelőt vagy egy lekérdezési ablakot az elsődleges replikához.
- A munkamenet elvetése az elsődleges replikán a munkamenet helyi menüjének Törlés parancsával vagy a végrehajtással
DROP EVENT SESSION [session-name-here] ON DATABASE;
Tranzakcióelkülönítési szint írásvédett replikákon
Az írásvédett replikák tranzakciói mindig a pillanatkép-alapú tranzakcióizolálási szintet használják, a tranzakció elkülönítési szintjétől és a lekérdezés-végrehajtási módosítóktól függetlenül. A pillanatkép-elkülönítés sorverzióval kerüli el azokat a forgatókönyveket, ahol az olvasók letiltják az írókat.
Ritka esetekben, ha egy pillanatkép-elkülönítési tranzakció egy másik egyidejű tranzakcióban módosított objektum metaadataihoz fér hozzá, a következő 3961-as hibaüzenet jelenhet meg: "A pillanatkép-elkülönítési tranzakció nem sikerült a(z) %.*ls adatbázisban, mert az utasítás által elért objektumot egy DDL-utasítás módosította egy másik egyidejű tranzakcióban a tranzakció kezdete óta. Ez nem engedélyezett, mert a metaadatok nincsenek verzióval ellátva. A metaadatok egyidejű frissítése inkonzisztencia kialakulásához vezethet, ha a pillanatkép-elkülönítéssel keveredik."
Hosszú ideig futó lekérdezések írásvédett replikákon
Az írásvédett replikákon futó lekérdezéseknek hozzá kell férni a lekérdezésben hivatkozott objektumok metaadataihoz (táblák, indexek, statisztikák stb.) Ritkán, ha az elsődleges replikán módosítja az objektum metaadatait, miközben egy lekérdezés zárolva van ugyanazon az objektumon az írásvédett replikán, a lekérdezés blokkolhatja azt a folyamatot, amely az elsődleges replikától az írásvédett replikára alkalmazza a módosításokat. Ha egy ilyen lekérdezés hosszú ideig futna, az azt eredményezné, hogy az írásvédett replika jelentősen nincs szinkronizálva az elsődleges replikával. A potenciális feladatátvételi célokat tartalmazó replikák (prémium szintű másodlagos replikák és üzletileg kritikus szolgáltatási szintek, rugalmas skálázású HA-replikák és minden georeplika) esetében ez az adatbázis helyreállítását is késleltetné, ha feladatátvétel történne, ami a vártnál hosszabb állásidőt okoz.
Ha egy írásvédett replikán futó hosszú ideig futó lekérdezés közvetlenül vagy közvetve okozza ezt a fajta blokkolást, előfordulhat, hogy a lekérdezés automatikusan leáll, hogy elkerülje a túlzott adatkésést és az adatbázisok lehetséges rendelkezésre állási hatását. A munkamenet 1219-es hibaüzenetet kap, "A munkamenet megszakadt egy magas prioritású DDL-művelet miatt", vagy a 3947-es hiba: "A tranzakció megszakadt, mert a másodlagos számítás nem tudta felzárkózni az ismétlést. Próbálkozzon újra a tranzakcióval."
Megjegyzés:
Ha 3961-et, 1219-et vagy 3947-et kap, amikor lekérdezéseket futtat egy írásvédett replikán, próbálkozzon újra a lekérdezéssel. Alternatív megoldásként kerülje az objektum metaadatait módosító műveleteket (sémamódosítások, indexkarbantartás, statisztikák frissítése stb.) az elsődleges replikán, miközben a hosszú ideig futó lekérdezések másodlagos replikákon futnak.
Tipp.
Prémium és üzletileg kritikus szolgáltatási szinteken, ha írásvédett replikához csatlakozik, a redo_queue_size
sys.dm_database_replica_states DMV oszlopai és redo_rate
oszlopai használhatók az adatszinkronizálási folyamat figyelésére, amely az adatpropagálás késését jelzi az írásvédett replikán.
Olvasási felskálázás engedélyezése és letiltása az SQL Database-ben
Felügyelt SQL-példány esetén az olvasási felskálázás automatikusan engedélyezve van a üzletileg kritikus szolgáltatási szinten, és nem érhető el az Általános célú szolgáltatási szinten. Az olvasási felskálázás letiltása és ismételt letiltása nem lehetséges.
Az SQL Database esetében az olvasási felskálázás alapértelmezés szerint engedélyezve van a prémium, üzletileg kritikus és rugalmas skálázású szolgáltatási szinteken. Az olvasási felskálázás nem engedélyezhető alapszintű, standard vagy általános célú szolgáltatási szinteken. Az olvasási vertikális felskálázás automatikusan le van tiltva a nulla másodlagos replikával konfigurált, rugalmas skálázású adatbázisokon.
Az Azure SQL Database önálló és készletezett adatbázisai esetében az Azure Portal és az Azure PowerShell használatával letilthatja és újra engedélyezheti az olvasási felskálázást a Prémium vagy üzletileg kritikus szolgáltatási szinteken. Ezek a beállítások nem érhetők el a felügyelt SQL-példány esetében, mivel az olvasási felskálázás nem tiltható le.
Megjegyzés:
Az önálló adatbázisok és a rugalmas készletadatbázisok esetében az olvasási felskálázás letiltása a visszamenőleges kompatibilitás érdekében biztosított. Az olvasási felskálázás nem tiltható le üzletileg kritikus felügyelt példányokon.
Azure Portal
Az Azure SQL Database esetében az olvasási felskálázási beállítást a Compute + Storage adatbázis panelen kezelheti, amely a Gépház alatt érhető el. Az Olvasási felskálázás engedélyezése vagy letiltása az Azure Portalon nem érhető el a felügyelt Azure SQL-példány esetében.
PowerShell
Fontos
A PowerShell Azure Resource Manager modul továbbra is támogatott, de minden jövőbeli fejlesztés az Az.Sql modulhoz tartozik. Az Azure Resource Manager modul legalább 2020 decemberéig továbbra is megkapja a hibajavításokat. Az Az modulban és az Azure Resource Manager-modulokban található parancsok argumentumai lényegében azonosak. A kompatibilitásukról további információt az új Azure PowerShell Az modul bemutatása című témakörben talál.
Az Azure PowerShell olvasási felskálázásának kezeléséhez a 2016. decemberi Azure PowerShell-kiadásra vagy újabbra van szükség. A legújabb PowerShell-kiadásért tekintse meg az Azure PowerShellt.
Az Azure SQL Database-ben letilthatja vagy újra engedélyezheti az olvasási felskálázást az Azure PowerShellben a Set-AzSqlDatabase parancsmag meghívásával, és a paraméter kívánt értékének (Enabled
vagy Disabled
) átadásával -ReadScale
. A felügyelt SQL-példány olvasási felskálázásának letiltása nem érhető el.
Ha le szeretné tiltani az olvasási felskálázást egy meglévő adatbázisban (a szögletes zárójelek elemeinek lecserélése a környezet megfelelő értékeire, és a szögletes zárójelek elvetése):
Set-AzSqlDatabase -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> -ReadScale Disabled
Az olvasási felskálázás letiltása egy új adatbázisban (a szögletes zárójelek elemeinek lecserélése a környezet megfelelő értékeire, és a szögletes zárójelek elvetése):
New-AzSqlDatabase -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> -ReadScale Disabled -Edition Premium
Az olvasási felskálázás újbóli engedélyezése egy meglévő adatbázisban (a szögletes zárójelek elemeinek lecserélése a környezet megfelelő értékeire, és a szögletes zárójelek elvetése):
Set-AzSqlDatabase -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> -ReadScale Enabled
REST API
Ha le szeretné tiltani az olvasási felskálázást, vagy módosítani szeretné egy meglévő adatbázis beállítását, használja az alábbi metódust a readScale
következő tulajdonság beállításával Enabled
, vagy Disabled
az alábbi mintakéréshez hasonlóan.
Method: PUT
URL: https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{GroupName}/providers/Microsoft.Sql/servers/{ServerName}/databases/{DatabaseName}?api-version= 2014-04-01-preview
Body: {
"properties": {
"readScale":"Disabled"
}
}
További információ: Adatbázisok – Létrehozás vagy frissítés.
Az tempdb
adatbázis használata írásvédett replikán
Az tempdb
elsődleges replikán lévő adatbázis nem lesz replikálva az írásvédett replikákra. Minden replika saját tempdb
adatbázissal rendelkezik, amely a replika létrehozásakor jön létre. Ez biztosítja, hogy tempdb
frissíthető és módosítható legyen a lekérdezés végrehajtása során. Ha az írásvédett számítási feladat az objektumok használatától tempdb
függ, ezeket az objektumokat ugyanannak a számítási feladatnak a részeként kell létrehoznia, miközben egy írásvédett replikához csatlakozik.
Olvasási felskálázás használata georeplikált adatbázisokkal
A georeplikált másodlagos adatbázisok magas rendelkezésre állású architektúrával rendelkeznek, mint az elsődleges adatbázisok. Ha a georeplikált másodlagos adatbázishoz csatlakozik, és engedélyezve van az olvasási felskálázás, a munkamenetek ApplicationIntent=ReadOnly
a magas rendelkezésre állású replikák egyikére lesznek irányítva, ugyanúgy, ahogyan az elsődleges írható adatbázisban vannak irányítva. A nem ApplicationIntent=ReadOnly
felügyelt munkamenetek a georeplikált másodlagos elsődleges replikához lesznek irányítva, amely szintén írásvédett.
Ilyen módon a georeplika létrehozása több további írásvédett replikát is biztosít egy írásvédett elsődleges adatbázishoz. Minden további georeplika további írásvédett replikákat biztosít. A georeplikák bármely Azure-régióban létrehozhatók, beleértve az elsődleges adatbázis régióját is.
Megjegyzés:
A georeplikált másodlagos adatbázis replikái között nincs automatikus ciklikus időszeletelés vagy egyéb terheléselosztásos útválasztás, kivéve egy rugalmas skálázású georeplikát, amely több HA-replikával rendelkezik. Ebben az esetben az írásvédett szándékú munkamenetek egy georeplika összes HA-replikája között el vannak osztva.
Funkciótámogatás írásvédett replikákon
Az írásvédett replikák egyes funkcióinak viselkedési listája a következő:
- A naplózás automatikusan engedélyezve van az írásvédett replikákon. A tárolási mappák hierarchiájáról, az elnevezési konvenciókról és a naplóformátumról további információt az SQL Database naplózási naplóformátumában talál.
- A Lekérdezési teljesítményelemzés a Lekérdezéstárból származó adatokra támaszkodik, amelyek jelenleg nem követik nyomon a csak olvasható replika tevékenységeit. A Lekérdezési teljesítményelemzés nem jeleníti meg az írásvédett replikán végrehajtott lekérdezéseket.
- Az automatikus hangolás a Lekérdezéstárra támaszkodik, az automatikus hangolási papírban leírtak szerint. Az automatikus hangolás csak az elsődleges replikán futó számítási feladatok esetében működik.
További lépések
- Az SQL Database rugalmas skálázási ajánlatával kapcsolatos információkért lásd a rugalmas skálázási szolgáltatási szintet.