Migrace existujících databází pro horizontální navýšení kapacity
Platí pro: Azure SQL Database
Snadno spravovat existující horizontálně horizontálně dělené databáze pomocí nástrojů (jako je klientská knihovna elastické databáze). Nejprve převeďte existující sadu databází tak, aby používala správce mapování horizontálních oddílů.
Přehled
Migrace existující horizontálně dělené databáze:
- Připravte databázi správce mapování horizontálních oddílů.
- Vytvořte mapu horizontálních oddílů.
- Připravte jednotlivé horizontální oddíly.
- Přidejte mapování do mapy horizontálních oddílů.
Tyto techniky je možné implementovat pomocí klientské knihovny rozhraní .NET Framework nebo skriptů PowerShellu nalezených ve skriptech nástrojů služby Azure SQL Database – Elastic Database. Zde uvedené příklady používají skripty PowerShellu.
Další informace o ShardMapManager naleznete v tématu Správa mapování horizontálních oddílů. Přehled nástrojů elastické databáze najdete v přehledu funkcí elastické databáze.
Příprava databáze správce mapování horizontálních oddílů
Správce mapování horizontálních oddílů je speciální databáze, která obsahuje data pro správu databází se škálováním na více systémů. Můžete použít existující databázi nebo vytvořit novou databázi. Databáze, která funguje jako správce mapování horizontálních oddílů, by neměla být stejná jako databáze horizontálních oddílů. Skript PowerShellu pro vás nevytvoří databázi.
Krok 1: Vytvoření správce mapování horizontálních oddílů
# Create a shard map manager
New-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
#<server_name> and <smm_db_name> are the server name and database name
# for the new or existing database that should be used for storing
# tenant-database mapping information.
Načtení správce mapování horizontálních oddílů
Po vytvoření můžete pomocí této rutiny načíst správce mapování horizontálních oddílů. Tento krok je potřeba pokaždé, když potřebujete použít objekt ShardMapManager.
# Try to get a reference to the Shard Map Manager
$ShardMapManager = Get-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
Krok 2: Vytvoření mapy horizontálních oddílů
Vyberte typ mapy horizontálních oddílů, který chcete vytvořit. Volba závisí na architektuře databáze:
- Jeden tenant na databázi (termíny najdete v glosáři.)
- Více tenantů na databázi (dva typy):
- Mapování seznamu
- Mapování rozsahu
Pro model s jedním tenantem vytvořte mapování seznamu mapování horizontálních oddílů. Model s jedním tenantem přiřazuje jednu databázi na tenanta. Jedná se o efektivní model pro vývojáře SaaS, protože zjednodušuje správu.
Model s více tenanty přiřazuje jednotlivým databázím několik tenantů (a můžete distribuovat skupiny tenantů napříč několika databázemi). Tento model použijte, pokud očekáváte, že každý tenant bude potřebovat malá data. V tomto modelu přiřaďte k databázi rozsah tenantů pomocí mapování rozsahu.
Nebo můžete implementovat model databáze s více tenanty pomocí mapování seznamu pro přiřazení více tenantů k jednotlivým databázím. Db1 se například používá k ukládání informací o ID tenanta 1 a 5 a DB2 ukládá data pro tenanta 7 a tenanta 10.
Na základě vaší volby zvolte jednu z těchto možností:
Možnost 1: Vytvoření mapy horizontálních oddílů pro mapování seznamu
Vytvořte mapu horizontálních oddílů pomocí objektu ShardMapManager.
# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager
Možnost 2: Vytvoření mapy horizontálních oddílů pro mapování rozsahu
Aby bylo možné tento model mapování využít, hodnoty ID tenanta musí být souvislé a je přijatelné mít mezery v oblastech vynecháním rozsahu při vytváření databází.
# $ShardMapManager is the shard map manager object
# 'RangeShardMap' is the unique identifier for the range shard map.
$ShardMap = New-RangeShardMap -KeyType $([int]) -RangeShardMapName 'RangeShardMap' -ShardMapManager $ShardMapManager
Možnost 3: Zobrazení seznamu mapování jednotlivých databází
Nastavení tohoto vzoru také vyžaduje vytvoření mapy seznamu, jak je znázorněno v kroku 2, možnost 1.
Krok 3: Příprava jednotlivých horizontálních oddílů
Přidejte jednotlivé horizontální oddíly (databázi) do správce mapování horizontálních oddílů. Tím se připraví jednotlivé databáze pro ukládání informací o mapování. Tuto metodu spusťte u každého horizontálního oddílu.
Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.
Krok 4: Přidání mapování
Přidání mapování závisí na typu mapy horizontálních oddílů, kterou jste vytvořili. Pokud jste vytvořili mapu seznamu, přidáte mapování seznamů. Pokud jste vytvořili mapu rozsahu, přidáte mapování oblastí.
Možnost 1: Mapování dat pro mapování seznamu
Namapujte data přidáním mapování seznamu pro každého tenanta.
# Create the mappings and associate it with the new shards
Add-ListMapping -KeyType $([int]) -ListPoint '<tenant_id>' -ListShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Možnost 2: Mapování dat pro mapování rozsahu
Přidejte mapování rozsahu pro všechny rozsahy ID tenanta – přidružení databáze:
# Create the mappings and associate it with the new shards
Add-RangeMapping -KeyType $([int]) -RangeHigh '5' -RangeLow '1' -RangeShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Krok 4– možnost 3: Mapování dat pro více tenantů v jednotlivých databázích
Pro každého tenanta spusťte add-ListMapping (možnost 1).
Kontrola mapování
Informace o existujících horizontálních oddílech a mapováních přidružených k nim je možné dotazovat pomocí následujících příkazů:
# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap
Shrnutí
Po dokončení instalace můžete začít používat klientskou knihovnu Elastic Database. Můžete také použít směrování závislé na datech a dotaz na více horizontálních oddílů.
Další kroky
Získejte skripty PowerShellu ze skriptů nástrojů Azure Elastic Database.
Klientská knihovna nástrojů elastické databáze je dostupná na GitHubu: Azure/elastic-db-tools.
Pomocí nástroje pro rozdělení a sloučení můžete přesunout data do nebo z modelu s více tenanty do jednoho modelu tenanta. Viz Nástroj rozdělení sloučení.
Další materiály
Informace o běžných vzorech architektury dat databázových aplikací softwaru s více tenanty jako služby (SaaS) naleznete v části Vzory návrhu pro aplikace SaaS s více tenanty s databází Azure SQL Database.
Dotazy a žádosti o funkce
Pokud máte dotazy, použijte stránku otázek Microsoft Q&A pro SLUŽBU SQL Database a pro žádosti o funkce, přidejte je do fóra pro zpětnou vazbu ke službě SQL Database.