Sdílet prostřednictvím


Osvědčené postupy pro Synchronizaci dat SQL Azure

Platí pro:Azure SQL Database

Tento článek popisuje osvědčené postupy pro Synchronizaci dat SQL Azure.

Přehled Synchronizace dat SQL najdete v tématu Synchronizace dat mezi několika cloudovými a místními databázemi pomocí Synchronizace dat SQL Azure.

Důležité

Synchronizace dat AZURE SQL v tuto chvíli nepodporuje službu Azure SQL Managed Instance ani Azure Synapse Analytics.

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 najdete v tématu Přiřazování rolí Azure s využitím 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í Synchronizace dat Azure 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
  • 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 a TaskHosting schémata se používají pro objekty vytvořené systémem v databázi metadat synchronizace.
  • 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, dssa TaskHosting 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. Přestože synchronizace dat SQL nenabízí automatický růst, můžete spustit ALTER DATABASE příkaz, který po vytvoření databáze zvětší velikost databáze. Ujistěte se, že jste zůstali v mezích velikosti databáze.

Důležité

Synchronizace dat SQL ukládá do každé databáze další metadata. 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řizování 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 Synchronizaci 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é nebo neskupené. Jiné vlastnosti indexu, jako je IGNORE_DUP_KEY, Where filtr predikát atd., nejsou podporovány 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žijte 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.

Synchronizace

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ář

  1. 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.
  2. Stejná místní databáze je zaregistrovaná u místního agenta 2 (tento agent není přidružený k žádné skupině synchronizace).
  3. 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.
  4. 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:

  1. Odeberte databázi z každé skupiny synchronizace, do které patří.
  2. Přidejte databázi zpět do každé skupiny synchronizace, ze které jste ji odebrali.
  3. 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.

Další kroky

Další informace o synchronizaci dat SQL najdete v tématech:

Další informace o službě SQL Database najdete tady: