Tranzakciós replikáció felügyelt Azure SQL-példánysal

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

A tranzakciós replikáció az Azure SQL Managed Instance és az SQL Server egyik funkciója, amely lehetővé teszi az adatok replikálását a felügyelt Azure SQL-példányban vagy SQL Server-példányban lévő táblákból a távoli adatbázisokra helyezett táblákba. Ez a funkció lehetővé teszi különböző adatbázisokban található táblák szinkronizálását.

Áttekintés

Tranzakciós replikációval leküldheti a felügyelt Azure SQL-példányban végrehajtott módosításokat a következőre:

  • SQL Server-adatbázis (helyszíni vagy Azure-beli virtuális gépen)
  • Azure SQL Database-beli adatbázisba
  • A felügyelt Azure SQL-példány egy példányadatbázisába

Megjegyzés:

A felügyelt Azure SQL-példány összes funkciójának használatához az SQL Server Management Studio (SSMS) és az SQL Server Data Tools (SSDT) legújabb verzióit kell használnia.

Összetevők

A tranzakciós replikáció fő összetevői a Közzétevő, a Forgalmazó és az Előfizető, ahogy az alábbi képen látható:

Diagram of replication with Azure SQL.

Szerepkör Azure SQL Database Felügyelt Azure SQL-példány
Közzétevő Nem Igen
Forgalmazó Nem Igen
Lekéréses előfizető Nem Igen
Leküldéses előfizető Igen Igen

A Publisher a frissítéseket a forgalmazónak küldve közzéteszi bizonyos táblákon (cikkeken) végrehajtott módosításokat. A közzétevő lehet felügyelt Azure SQL-példány vagy SQL Server-példány.

A Terjesztő összegyűjti a cikkek módosításait a Közzétevőtől, és osztja el azokat az Előfizetőknek. A terjesztő lehet felügyelt Azure SQL-példány vagy SQL Server-példány (bármilyen verzió, ha az egyenlő vagy magasabb a Publisher verziójánál).

Az Előfizető megkapja a Közzétevőn végrehajtott módosításokat. Az SQL Server-példányok és a felügyelt Azure SQL-példányok leküldéses és lekéréses előfizetők is lehetnek, bár a lekéréses előfizetés nem támogatott, ha a forgalmazó felügyelt Azure SQL-példány, és az előfizető nem. Az Azure SQL Database-ben lévő adatbázisok csak leküldéses előfizetők lehetnek.

A felügyelt Azure SQL-példány az SQL Server alábbi verzióiból támogathatja az előfizetői szerepkört:

Megjegyzés:

Az SQL Server más olyan verziói esetében, amelyek nem támogatják az Objektumokon való közzétételt az Azure-ban, az adatok újbóli közzétételének módszerével áthelyezheti az adatokat az SQL Server újabb verzióiba.

Ha a replikációt egy régebbi verzióval próbálja konfigurálni, az hibát MSSQL_REPL20084 okozhat (a folyamat nem tudott csatlakozni az Előfizetőhöz), és MSSQL_REPL40532 (A bejelentkezés által kért kiszolgálónév <> nem nyitható meg. A bejelentkezés sikertelen volt).

Types of replication

A replikációnak különböző típusai vannak:

Replikáció Azure SQL Database Azure SQL Managed Instance
Standard transactional Igen (csak előfizetőként) Yes
Snapshot Igen (csak előfizetőként) Yes
Merge replication No Nem
Társközi kapcsolat Nem No
Bidirectional No Yes
Updatable subscriptions No Nem

Támogatási mátrix

Az Azure SQL Managed Instance tranzakciós replikációs támogatási mátrixa ugyanaz, mint az SQL Server esetében.

Közzétevő Forgalmazó Előfizető
SQL Server 2022 SQL Server 2022 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2019 SQL Server 2022
SQL Server 2019
SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2017 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2016 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2014 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2012 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2008 R2
SQL Server 2008
SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008

Mikor érdemes használni?

A tranzakciós replikáció a következő esetekben hasznos:

  • Tegye közzé az adatbázis egy vagy több táblájában végrehajtott módosításokat, és terjessze őket egy vagy több adatbázisba egy SQL Server-példányban vagy az Azure SQL Database-ben, amely feliratkozott a módosításokra.
  • Több elosztott adatbázis szinkronizálási állapotban tartása.
  • Az adatbázisok áttelepítése egy SQL Server-példányról vagy felügyelt Azure SQL-példányról egy másik adatbázisba a módosítások folyamatos közzétételével.

Adatszinkronizálás összehasonlítása tranzakciós replikációval

Kategória Adatszinkronizálás Tranzakciós replikáció
Előnyök - Aktív-aktív támogatás
– Kétirányú a helyszíni és az Azure SQL Database között
– Kisebb késés
- Tranzakciós konzisztencia
– Meglévő topológia újrafelhasználása a migrálás után
Hátrányok - Nincs tranzakciós konzisztencia
- Nagyobb teljesítményhatás
– Nem lehet közzétenni az Azure SQL Database-ből
- Magas karbantartási költség

Gyakori konfigurációk

A közzétevőnek és a terjesztőnek általában a felhőben vagy a helyszínen kell lennie. A következő konfigurációk vannak támogatva:

Közzétevő helyi forgalmazóval felügyelt SQL-példányon

Single instance as Publisher and Distributor.

A közzétevő és a terjesztő egyetlen felügyelt SQL-példányon belül van konfigurálva, és a módosításokat egy másik felügyelt SQL-példányra, SQL Database-példányra vagy SQL Server-példányra terjeszti.

Közzétevő távoli terjesztővel felügyelt SQL-példányon

Ebben a konfigurációban egy felügyelt SQL-példány olyan módosításokat tesz közzé egy másik felügyelt SQL-példányon elhelyezett forgalmazón, amely számos felügyelt SQL-példányt képes kiszolgálni, és a módosításokat egy vagy több célhoz osztja el az Azure SQL Database-ben, az Azure SQL Managed Instance-ben vagy az SQL Serveren.

Separate instances for Publisher and Distributor.

A közzétevő és a terjesztő két felügyelt példányon van konfigurálva. Ez a konfiguráció néhány korlátozással jár:

  • Mindkét felügyelt példány ugyanazon a virtuális hálózaton található.
  • Mindkét felügyelt példány ugyanazon a helyen található.

Helyszíni közzétevő/terjesztő távoli előfizetővel

Azure SQL Database as subscriber.

Ebben a konfigurációban az Azure SQL Database-ben vagy az Azure SQL Managed Instance-ben található adatbázis előfizető. Ez a konfiguráció támogatja a helyszíni környezetből az Azure-ba való migrálást. Ha az előfizető adatbázis az Azure SQL Database-ben, leküldéses módban kell lennie.

Requirements

  • Sql-hitelesítés használata a replikáció résztvevői közötti kapcsolathoz.
  • Azure Storage-fiókmegosztás használata a replikáció által használt munkakönyvtárhoz.
  • Nyissa meg a 445-ös TCP-kimenő portot az alhálózat biztonsági szabályaiban az Azure-fájlmegosztás eléréséhez.
  • Nyissa meg az 1433-at kimenő TCP-portot, ha a felügyelt SQL-példány a Közzétevő/forgalmazó, és az előfizető nem. Előfordulhat, hogy a felügyelt SQL-példány NSG kimenő biztonsági szabályát allow_linkedserver_outbound is módosítania kell az 1433-at tartalmazó célszolgáltatás címkéjéhez virtualnetworkinternet.
  • Helyezze a közzétevőt és a terjesztőt a felhőbe vagy mindkét helyszínre.
  • Konfigurálja a VPN-társviszonyt a replikáció résztvevőinek virtuális hálózatai között, ha a virtuális hálózatok eltérőek.

Megjegyzés:

Ha a kimenő hálózati biztonsági csoport (NSG) 445-ös portja le van tiltva, akkor az 53-os hiba jelenhet meg egy Azure Storage-fájlhoz való csatlakozáskor, ha a terjesztő egy Felügyelt Azure SQL-példány adatbázisa, és az előfizető helyszíni. Frissítse a vNet NSG-t a probléma megoldásához.

Korlátozások

A tranzakciós replikáció bizonyos korlátozásokkal rendelkezik, amelyek a felügyelt Azure SQL-példányra vonatkoznak. A jelen szakaszban további információt olvashat ezekről a korlátozásokról.

A pillanatképfájlok nem törlődnek az Azure Storage-fiókból

A felügyelt Azure SQL-példány felhasználó által konfigurált Azure Storage-fiókot használ a tranzakciós replikációhoz használt pillanatképfájlokhoz. A helyszíni környezetben lévő SQL Serverrel ellentétben az Azure SQL Managed Instance nem törli a pillanatképfájlokat az Azure Storage-fiókból. Ha már nincs szükség fájlokra, törölnie kell őket. Ez az Azure Storage-felületen, az Azure Portalon, a Microsoft Azure Storage Explorerben vagy parancssori ügyfeleken (Azure PowerShell vagy CLI) vagy az Azure Storage Management REST API-n keresztül végezhető el.

Íme egy példa arra, hogyan törölhet fájlokat, és hogyan törölheti az üres mappát.

az storage file delete-batch --source <file_path> --account-key <account_key> --account-name <account_name>
az storage directory delete --name <directory_name> --share-name <share_name> --account-key <account_key> --account-name <account_name>

Folyamatosan futó terjesztési ügynökök száma

A folyamatos futtatásra konfigurált terjesztési ügynökök száma legfeljebb 30 lehet felügyelt Azure SQL-példányon. Ahhoz, hogy több terjesztési ügynök legyen, igény szerint vagy meghatározott ütemezéssel kell futniuk. Az ütemezés napi gyakorisággal és előfordulással határozható meg 10 másodpercenként (vagy több alkalommal), így annak ellenére, hogy ez nem folyamatos, továbbra is rendelkezhet olyan terjesztővel, amely csak néhány másodperces késést eredményez. Ha nagy számú terjesztőre van szükség, ajánlott ütemezett és nem folyamatos konfigurációt használni.

Feladatátvételi csoportokkal

A tranzakciós replikáció használata feladatátvételi csoportban lévő példányokkal támogatott. Ha azonban konfigurálja a replikációt, mielőtt hozzáadja a felügyelt SQL-példányt egy feladatátvevő csoporthoz, a replikáció szünetel, amikor elkezdi létrehozni a feladatátvevő csoportot, és a replikációs figyelő állapotot Replicated transactions are waiting for the next log backup or for mirroring partner to catch upjelenít meg. A replikáció a feladatátvételi csoport sikeres létrehozása után folytatódik.

Ha egy közzétevő vagy forgalmazó felügyelt SQL-példány feladatátvételi csoportban van, a felügyelt SQL-példány rendszergazdájának törölnie kell a régi elsődleges példány összes kiadványát, és újra kell konfigurálnia őket az új elsődlegesen a feladatátvétel után. Ebben a forgatókönyvben a következő tevékenységekre van szükség:

  1. Ha vannak ilyenek, állítsa le az adatbázisban futó összes replikációs feladatot.

  2. Az előfizetés metaadatainak elvetése a közzétevőből az alábbi szkript futtatásával a publisher-adatbázisban. Cserélje le az és <name of subscriber> az <name of publication> értékeket:

    EXEC sp_dropsubscription @publication = '<name of publication>',
        @article = 'all',
        @subscriber = '<name of subscriber>'
    
  3. Az előfizetés metaadatainak elvetése az előfizetőtől. Futtassa a következő szkriptet az előfizető felügyelt SQL-példány előfizetési adatbázisán. Cserélje le az <full DNS of publisher> értéket. Például example.ac2d23028af5.database.windows.net:

    EXEC sp_subscription_cleanup
       @publisher = N'<full DNS of publisher>',
       @publisher_db = N'<publisher database>',
       @publication = N'<name of publication>';
    
  4. Az összes replikációs objektum kényszerített elvetése a közzétevőből a következő szkript futtatásával a közzétett adatbázisban:

    EXEC sp_removedbreplication;
    
  5. A régi forgalmazót kényszerítse ki az eredeti elsődleges felügyelt SQL-példányból (ha visszalép egy régi elsődleges példányra, amely korábban egy forgalmazóval rendelkezik). Futtassa a következő szkriptet az master adatbázison a régi, felügyelt SQL-példányban:

    EXEC sp_dropdistributor 1, 1;
    

Ha egy előfizető felügyelt SQL-példány feladatátvételi csoportban van, a kiadványt úgy kell konfigurálni, hogy csatlakozzon az előfizető felügyelt SQL-példány feladatátvételi csoport figyelővégpontához. Feladatátvétel esetén a felügyelt SQL-példány rendszergazdájának ezt követő művelete a feladatátvétel típusától függ:

  • Adatvesztés nélküli feladatátvétel esetén a replikáció a feladatátvétel után is működni fog.
  • Adatvesztéssel járó feladatátvétel esetén a replikáció is működik. Újra replikálja az elveszett módosításokat.
  • Adatvesztéssel járó feladatátvétel esetén, de az adatvesztés a terjesztési adatbázis megőrzési időszakán kívül esik, a felügyelt SQL-példány rendszergazdájának újra kell létrehoznia az előfizetési adatbázist.

Troubleshoot common issues

Tranzakciónapló és tranzakciós replikáció

A szokásos körülmények között az adatváltozások adatbázison belüli rögzítéséhez transzkratációs naplót használunk. A módosítások a tranzakciónaplóban vannak rögzítve, és ez teszi a napló tárterület-fogyasztásának növekedését. Van egy automatikus folyamat is, amely lehetővé teszi a tranzakciónapló biztonságos csonkolását, és ez a folyamat csökkenti a naplóhoz használt tárterületet. A tranzakciós replikáció közzétételének konfigurálásakor a tranzakciónapló csonkolása addig lesz megakadályozva, amíg a napló módosításait a naplóolvasó feladat nem dolgozza fel. Bizonyos körülmények között a tranzakciónapló feldolgozása hatékonyan le van tiltva, és ez az állapot a tranzakciónapló számára fenntartott teljes tárterület feltöltéséhez vezethet. Ha nincs szabad hely a tranzakciónaplóhoz, és nincs több hely a tranzakciónapló növekedéséhez, teljes tranzakciónaplóval rendelkezünk. Ebben az állapotban az adatbázis már nem tudja feldolgozni az írási számítási feladatokat, és gyakorlatilag írásvédett adatbázissá válik.

Letiltott naplóolvasó ügynök

Előfordulhat, hogy a tranzakciós replikációs kiadvány egy adatbázishoz van konfigurálva, de a naplóolvasó ügynök nincs konfigurálva a futtatásra. Ebben az esetben a módosítások a tranzakciónaplóban halmozódnak fel, és nem dolgozzák fel őket. Ez a tranzakciós napló folyamatos növekedéséhez vezet, és végül a teljes átküldő naplóhoz. A felhasználónak meg kell győződnie arról, hogy a naplóolvasói feladat létezik és aktív. Másik lehetőségként letilthatja a tranzakciós replikációt, ha nincs rá szükség.

Naplóolvasó ügynök lekérdezési időtúllépései

Előfordulhat, hogy a naplóolvasói feladat nem tud hatékonyan haladni az ismétlődő lekérdezési időtúllépések miatt. A lekérdezési időtúllépések javításának egyik módja a naplóolvasó ügynökfeladat lekérdezési időtúllépési beállításának növelése.

A naplóolvasói feladat lekérdezési időtúllépésének növelése az SSMS használatával végezhető el. Az objektumkezelőben az SQL Server Agent alatt keresse meg a módosítani kívánt feladatot. Először állítsa le, majd nyissa meg a tulajdonságait. Keresse meg step 2 és szerkessze. Fűzze hozzá a parancs értékét a következővel -QueryTimeout <timeout_in_seconds>: . A lekérdezés időtúllépési értéke próbálkozzon 21600 vagy magasabb. Végül indítsa újra a feladatot.

A naplótároló mérete elérte a 2 TB maximális korlátot

Ha a tranzakciónapló tárterületének mérete eléri a maximális korlátot, amely 2 TB, a napló fizikailag nem nőhet ennél többre. Ebben az esetben az egyetlen elérhető kockázatcsökkentés az összes feldolgozandó tranzakció megjelölése, amely lehetővé teszi a tranzakciónapló csonkítását. Ez gyakorlatilag azt jelenti, hogy a naplóban lévő fennmaradó tranzakciók nem lesznek replikálva, és újra kell inicializálnia a replikációt.

Megjegyzés:

A kockázatcsökkentés elvégzése után újra kell inicializálnia a replikációt, ami a teljes adatkészlet ismételt replikálását jelenti. Ez az adatművelet mérete, és a replikálandó adatok mennyiségétől függően hosszú ideig is futhat.

A kockázatcsökkentés végrehajtásához először le kell állítania a naplóolvasó ügynököt a forgalmazón. Ezután futtassa a tárolt eljárást a sp_repldone közzétevő adatbázisában beállított 1 jelzővel reset a tranzakciónapló csonkolásának engedélyezéséhez. Ennek a parancsnak így kell kinéznie EXEC sp_repldone @xactid = NULL, @xact_seqno = NULL, @numtrans = 0, @time = 0, @reset = 1. Ezt követően újra kell létrehoznia a replikációt.

További lépések

A tranzakciós replikáció konfigurálásával kapcsolatos további információkért tekintse meg az alábbi oktatóanyagokat:

Kapcsolódó információk