Osvědčené postupy pro Synchronizaci dat SQL Azure
Platí pro: Azure SQL Database
Důležité
Synchronizace dat SQL budou vyřazeny 30. září 2027. Zvažte migraci na alternativní řešení replikace nebo synchronizace dat.
Tento článek popisuje osvědčené postupy pro Synchronizace dat SQL Azure.
Přehled Synchronizace dat SQL najdete v tématu Co je Synchronizace dat SQL pro Azure?
Zabezpečení a spolehlivost
Klientský agent
- Nainstalujte klientského agenta pomocí nejméně privilegovaného uživatelského účtu, který má přístup k síťové službě.
- Nainstalujte klientského agenta na server, který se liší od místa, kde je nainstalovaný SQL Server.
- Nezaregistrujte místní databázi s více než jedním agentem.
- Vyhněte se tomu, i když synchronizujete různé tabulky pro různé skupiny synchronizace.
- Registrace místní databáze s několika klientskými agenty představuje problémy, když odstraníte některou ze skupin synchronizace.
Databázové účty s nejnižšími požadovanými oprávněními
Nastavení synchronizace:
- Oprávnění SQL Serveru: CREATE/ALTER TABLE, ALTER DATABASE, CREATE PROCEDURE, SELECT/ALTER SCHEMA, CREATE TYPE. Tato oprávnění jsou zahrnuta (spolu s dalšími oprávněními) v předdefinované databázové roli
ddl_admin
. - Na úrovni skupiny prostředků je potřeba členství v roli Přispěvatel databáze SQL. Další informace viz Přiřazení rolí Azure pomocí webu Azure Portal. Členství v širších rolích, jako je přispěvatel nebo vlastník, funguje také, pokud už je přiřazeno.
- Oprávnění na úrovni předplatného by neměla být potřebná, ale mohla by poskytnout zjednodušený (i když nejméně povinný) způsob, jak poskytnout potřebná oprávnění pro více implementací Azure Synchronizace dat v předplatném. Původní zastaralé rozhraní API vyžadovalo tato oprávnění Azure RBAC, ale už by se neměla používat.
- Microsoft.Sql/locations/syncMemberOperationResults/read
- Microsoft.Sql/locations/syncAgentOperationResults/read
- Microsoft.Sql/locations/syncGroupOperationResults/read
- Oprávnění SQL Serveru: CREATE/ALTER TABLE, ALTER DATABASE, CREATE PROCEDURE, SELECT/ALTER SCHEMA, CREATE TYPE. Tato oprávnění jsou zahrnuta (spolu s dalšími oprávněními) v předdefinované databázové roli
Pro průběžnou synchronizaci.
- Oprávnění SQL Serveru: OPRÁVNĚNÍ SELECT, INSERT, UPDATE a DELETE u uživatelských tabulek, které jsou vybrány pro synchronizaci. Oprávnění EXECUTE u uživatelem definovaných typů tabulek
- Oprávnění SQL Serveru: OPRÁVNĚNÍ SELECT, INSERT, UPDATE a DELETE u synchronizačních metadat a systémově vytvořených sledovacích tabulek. Oprávnění EXECUTE pro uložené procedury vytvořené službou
- Schéma
DataSync
se používá pro objekty vytvořené systémem v databázích centra a členů. - Schémata
dss
aTaskHosting
schémata se používají pro objekty vytvořené systémem v databázi metadat synchronizace.
- Schéma
Pro zrušení zřízení.
- Oprávnění SQL Serveru: ALTER u všech tabulek, které jsou součástí synchronizace; SELECT a DELETE u synchronizačních tabulek metadat; ŘÍZENÍ u synchronizačních sledovacích tabulek, uložených procedur a uživatelsky definovaných typů
- Pro vyčištění odeberte objekty vytvořené systémem v objektu
DataSync
,dss
aTaskHosting
schémata.
Azure SQL Database podporuje pouze jednu sadu přihlašovacích údajů. Pokud chcete tyto úlohy provést v rámci tohoto omezení, zvažte následující možnosti:
- Změňte přihlašovací údaje pro různé fáze (například přihlašovací údaje1 pro nastavení a přihlašovací údaje2 pro probíhající).
- Změňte oprávnění přihlašovacích údajů (to znamená změnit oprávnění po nastavení synchronizace).
Auditování
Doporučujeme povolit auditování na úrovni databází ve skupinách synchronizace. Zjistěte, jak povolit auditování databáze Azure SQL nebo povolit auditování v databázi SQL Serveru.
Nastavení
Aspekty a omezení databáze
Velikost databáze
Při vytváření nové databáze nastavte maximální velikost tak, aby byla vždy větší než databáze, kterou nasadíte. Pokud nenastavíte maximální velikost na větší než nasazená databáze, synchronizace selže. I když Synchronizace dat SQL nenabízí automatický růst, můžete příkaz spustit ALTER DATABASE
a po vytvoření databáze zvětšit jeho velikost. Ujistěte se, že jste zůstali v mezích velikosti databáze.
Důležité
Synchronizace dat SQL ukládá další metadata s každou databází. Při výpočtu potřebného místa se ujistěte, že pro tato metadata započítáte. Množství přidané režie souvisí s šířkou tabulek (například úzké tabulky vyžadují větší režii) a objemem provozu.
Aspekty tabulek a omezení
Výběr tabulek
Nemusíte zahrnout všechny tabulky, které jsou v databázi ve skupině synchronizace. Tabulky, které zahrnete do skupiny synchronizace, ovlivňují efektivitu a náklady. Zahrnout tabulky a tabulky, na které jsou závislé, ve skupině synchronizace pouze v případě, že to firma vyžaduje.
Primární klíče
Každá tabulka ve skupině synchronizace musí mít primární klíč. Synchronizace dat SQL nemůže synchronizovat tabulku, která nemá primární klíč.
Před použitím Synchronizace dat SQL v produkčním prostředí otestujte počáteční a průběžný výkon synchronizace.
Prázdné tabulky poskytují nejlepší výkon.
Prázdné tabulky poskytují nejlepší výkon při inicializaci. Pokud je cílová tabulka prázdná, Synchronizace dat k načtení dat použije hromadné vložení. V opačném případě Synchronizace dat provede porovnání řádků po řádcích a vložení, aby se zkontrolovaly konflikty. Pokud ale výkon není problém, můžete nastavit synchronizaci mezi tabulkami, které už obsahují data.
Zřízení cílových databází
Synchronizace dat SQL poskytuje základní automatické zřizování databáze.
Tato část popisuje omezení zřizování v Synchronizace dat SQL.
Omezení automatického zřizování
Synchronizace dat SQL má pro automatické zřizování následující omezení:
- Vyberte pouze sloupce vytvořené v cílové tabulce. Všechny sloupce, které nejsou součástí skupiny synchronizace, nejsou v cílových tabulkách zřízené.
- Indexy se vytvářejí jenom pro vybrané sloupce. Pokud zdrojový index tabulky obsahuje sloupce, které nejsou součástí skupiny synchronizace, tyto indexy se v cílových tabulkách nezřídí.
- Indexy sloupců typu XML nejsou zřízeny.
- Synchronizace dat podporuje pouze následující dvě vlastnosti indexu: Jedinečné, Clusterované/Ne clusterované. Jiné vlastnosti indexu, jako jsou IGNORE_DUP_KEY, Kde se predikát filtru atd., nepodporuje a cílový index je zřízený bez těchto vlastností, i když zdrojový index má tyto vlastnosti nastavené.
- Omezení CHECK nejsou zřízena.
- Existující triggery ve zdrojových tabulkách nejsou zřízené.
- Zobrazení a uložené procedury se v cílové databázi nevytvořily.
- Akce ON UPDATE CASCADE a ON DELETE CASCADE u omezení cizích klíčů se v cílových tabulkách znovu nevytvoří.
- Pokud máte desetinné nebo číselné sloupce s přesností větší než 28, může Synchronizace dat SQL během synchronizace narazit na problém s přetečením převodu. Doporučujeme omezit přesnost desetinných nebo číselných sloupců na 28 nebo méně.
Doporučení
- Funkci automatického zřizování Synchronizace dat SQL používejte jenom v případech, kdy službu zkoušíte.
- V produkčním prostředí zřiďte schéma databáze.
Kde najít databázi centra
Scénář typu Enterprise-to-cloud
Pokud chcete minimalizovat latenci, udržujte databázi centra blízko největší koncentraci databázového provozu skupiny synchronizace.
Scénář cloud-cloud
- Pokud jsou všechny databáze ve skupině synchronizace v jednom datacentru, centrum by mělo být umístěné ve stejném datacentru. Tato konfigurace snižuje latenci a náklady na přenos dat mezi datovými centry.
- Pokud jsou databáze ve skupině synchronizace ve více datacentrech, centrum by se mělo nacházet ve stejném datacentru jako většina databází a přenosů databáze.
Smíšené scénáře
Použijte předchozí pokyny pro komplexní konfigurace skupin synchronizace, jako jsou například kombinace scénářů enterprise-to-cloud a cloud-to-cloud.
Sync
Vyhněte se pomalé a nákladné počáteční synchronizaci
V této části probereme počáteční synchronizaci skupiny synchronizace. Zjistěte, jak pomoct zabránit tomu, aby počáteční synchronizace trvala déle a byla nákladnější, než je potřeba.
Jak funguje počáteční synchronizace
Když vytvoříte skupinu synchronizace, začněte s daty jenom v jedné databázi. Pokud máte data ve více databázích, Synchronizace dat SQL považuje každý řádek za konflikt, který je potřeba vyřešit. Toto řešení konfliktů způsobí, že počáteční synchronizace bude pomalá. Pokud máte data ve více databázích, může v závislosti na velikosti databáze trvat počáteční synchronizace několik dní až několik měsíců.
Pokud jsou databáze v různých datacentrech, musí každý řádek cestovat mezi různými datovými centry. Tím se zvýší náklady na počáteční synchronizaci.
Doporučení
Pokud je to možné, začněte s daty pouze v jedné z databází skupiny synchronizace.
Návrh, aby se zabránilo synchronizaci smyček
Ke smyčce synchronizace dochází v případě, že skupina synchronizace obsahuje cyklický odkaz. V tomto scénáři je každá změna v jedné databázi nekonečně a cyklicky replikována prostřednictvím databází ve skupině synchronizace.
Ujistěte se, že se vyhnete smyčkám synchronizace, protože způsobují snížení výkonu a můžou výrazně zvýšit náklady.
Změny, které se nepodařilo rozšířit
Důvody, proč se změny nešířit
Změny se nemusí rozšířit z jednoho z následujících důvodů:
- Nekompatibilitu schématu nebo datového typu
- Vložení hodnoty null do sloupců, které nemají hodnotu null.
- Porušení omezení cizího klíče.
Co se stane, když se změny nepodaří rozšířit?
- Skupina synchronizace ukazuje, že je ve stavu upozornění .
- Podrobnosti jsou uvedeny v prohlížeči protokolů uživatelského rozhraní portálu.
- Pokud se problém nevyřeší po dobu 45 dnů, databáze přestane být aktuální.
Poznámka:
Tyto změny se nikdy nešírují. Jediným způsobem obnovení v tomto scénáři je opětovné vytvoření skupiny synchronizace.
Doporučení
Pravidelně monitorujte stav skupiny synchronizace a databáze prostřednictvím portálu a rozhraní protokolu.
Údržba
Vyhněte se zastaralým databázím a skupinám synchronizace
Skupina synchronizace nebo databáze ve skupině synchronizace může být zastaralá. Pokud je stav skupiny synchronizace zastaralý, přestane fungovat. Pokud je stav databáze zastaralý, může dojít ke ztrátě dat. Tento scénář je nejlepší předejít tomu, abyste se z něj nepokoušli obnovit.
Vyhněte se zastaralým databázím
Stav databáze je nastavený na Zastaralý , pokud je offline po dobu 45 dnů nebo déle. Abyste se vyhnuli zastaralému stavu databáze, ujistěte se, že žádná z databází není offline po dobu 45 dnů nebo déle.
Vyhněte se zastaralým skupinám synchronizace
Stav skupiny synchronizace je nastavený na Zastaralý , pokud se jakákoli změna ve skupině synchronizace nepodaří rozšířit do zbytku skupiny synchronizace po dobu 45 dnů nebo déle. Abyste se vyhnuli zastaralému stavu skupiny synchronizace, pravidelně zkontrolujte protokol historie skupiny synchronizace. Ujistěte se, že jsou vyřešeny všechny konflikty a že se změny úspěšně rozšíří do databází skupin synchronizace.
Skupině synchronizace se nemusí podařit použít změnu z některého z těchto důvodů:
- Nekompatibilitu schématu mezi tabulkami
- Nekompatibilitu dat mezi tabulkami.
- Vložení řádku s hodnotou null ve sloupci, který nepovoluje hodnoty null
- Aktualizace řádku hodnotou, která porušuje omezení cizího klíče
Jak zabránit zastaralým skupinám synchronizace:
- Aktualizujte schéma tak, aby povolovala hodnoty obsažené v neúspěšných řádcích.
- Aktualizujte hodnoty cizího klíče tak, aby zahrnovaly hodnoty obsažené v neúspěšných řádcích.
- Aktualizujte hodnoty dat v řádku, který selhal, aby byly kompatibilní se schématem nebo cizími klíči v cílové databázi.
Vyhněte se problémům s zrušením zřízení
V některých případech může zrušení registrace databáze s klientským agentem způsobit selhání synchronizace.
Scénář
- Skupina synchronizace A byla vytvořena pomocí instance služby SQL Database a databáze SQL Serveru, která je přidružena k místnímu agentu 1.
- Stejná místní databáze je zaregistrovaná u místního agenta 2 (tento agent není přidružený k žádné skupině synchronizace).
- Zrušení registrace místní databáze z místního agenta 2 odebere sledování a meta tabulky pro skupinu synchronizace A pro místní databázi.
- Operace skupiny synchronizace A selžou s touto chybou: Aktuální operaci nelze dokončit, protože databáze není zřízena pro synchronizaci nebo nemáte oprávnění k tabulkám konfigurace synchronizace.
Řešení
Abyste se tomuto scénáři vyhnuli, nezaregistrujte databázi s více než jedním agentem.
Postup zotavení z tohoto scénáře:
- Odeberte databázi z každé skupiny synchronizace, do které patří.
- Přidejte databázi zpět do každé skupiny synchronizace, ze které jste ji odebrali.
- Nasaďte každou ovlivněnou skupinu synchronizace (tato akce zřídí databázi).
Úprava skupiny synchronizace
Nepokoušejte se odebrat databázi ze skupiny synchronizace a potom upravit skupinu synchronizace bez prvního nasazení jedné ze změn.
Místo toho nejprve odeberte databázi ze skupiny synchronizace. Pak nasaďte změnu a počkejte na dokončení zrušení zřízení. Po zrušení zřízení můžete upravit skupinu synchronizace a nasadit změny.
Pokud se pokusíte odebrat databázi a pak upravit skupinu synchronizace bez prvního nasazení jedné ze změn, jedna nebo druhá operace selže. Rozhraní portálu může být nekonzistentní. Pokud k tomu dojde, aktualizujte stránku, aby se obnovil správný stav.
Vyhněte se vypršení časového limitu aktualizace schématu
Pokud máte složité schéma pro synchronizaci, může během aktualizace schématu dojít k vypršení časového limitu operace, pokud má databáze metadat synchronizace nižší skladovou položku (příklad: základní).
Řešení
Pokud chcete tento problém zmírnit, zvažte vertikální navýšení kapacity prostředků databáze metadat synchronizace.
Související obsah
Další informace o Synchronizace dat SQL najdete tady:
- Přehled – Synchronizace dat napříč několika cloudovými a místními databázemi pomocí Synchronizace dat SQL Azure
- Nastavení Synchronizace dat SQL
- Na portálu – kurz: Nastavení Synchronizace dat SQL pro synchronizaci dat mezi Azure SQL Database a SQL Serverem
- Pomocí PowerShellu
- Synchronizace dat Agent – Synchronizace dat Agent pro Synchronizace dat SQL Azure
- Monitorování – Monitorování Synchronizace dat SQL s využitím protokolů služby Azure Monitor
- Řešení potíží s Synchronizace dat SQL Azure
- Aktualizace schématu synchronizace
Další informace o službě SQL Database najdete tady: