Sdílet prostřednictvím


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:

  1. Připravte databázi správce mapování horizontálních oddílů.
  2. Vytvořte mapu horizontálních oddílů.
  3. Připravte jednotlivé horizontální oddíly.
  4. 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:

  1. Jeden tenant na databázi (termíny najdete v glosáři.)
  2. Více tenantů na databázi (dva typy):
    1. Mapování seznamu
    2. 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.

List mapping

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.

Range mapping

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.

Multiple tenants on single DB

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.