Dela via


Migrera befintliga databaser för att skala ut

gäller för:Azure SQL Database

Hantera enkelt dina befintliga utskalade shardade databaser med hjälp av verktyg (till exempel Skapa skalbara molndatabaser). Konvertera först en befintlig uppsättning databaser till att använda shard map manager.

Översikt

Så här migrerar du en befintlig fragmenterad databas:

  1. Förbered shard map manager-databasen.
  2. Skapa fragmentkartan.
  3. Förbered de enskilda fragmenten.
  4. Lägg till mappningar i fragmentkartan.

Dessa tekniker kan implementeras med hjälp av .NET Framework-klientbiblioteket eller PowerShell-skripten som finns i Azure SQL Database – Elastic Database-verktygsskript. Exemplen här använder PowerShell-skripten.

Mer information om ShardMapManager finns i Shard Map Management. En översikt över elastic database-verktygen finns i Översikt över elastic database-funktioner.

Förbered databasen för shard map manager

Shard Map Manager är en särskild databas som innehåller data för att hantera utskalade databaser. Du kan använda en befintlig databas eller skapa en ny databas. En databas som fungerar som shard map manager bör inte vara samma databas som en shard. PowerShell-skriptet skapar inte databasen åt dig.

Steg 1: Skapa en shard map manager

# 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.

Hämta karthanteraren för shard

När du har skapat den kan du hämta karthanteraren för shard med den här cmdleten. Det här steget behövs varje gång du behöver använda ShardMapManager-objektet.

# 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>'

Steg 2: Skapa fragmentkartan

Välj den typ av fragmentkarta som ska skapas. Valet beror på databasarkitekturen:

  1. Enskild klientorganisation per databas (Termerna finns i ordlistan.)
  2. Flera hyresgäster per databas (två typer):
    1. Listkartläggning
    2. Områdeskartläggning

Skapa en shardkarta för listmappning för en enskild klientorganisationsmodell. Modellen för en hyresgäst tilldelar en databas per hyresgäst. Detta är en effektiv modell för SaaS-utvecklare eftersom det förenklar hanteringen.

Diagram över listmappning.

Multitenantmodellen tilldelar flera klienter till en enskild databas (och du kan distribuera grupper av klienter över flera databaser). Använd den här modellen när du förväntar dig att varje klientorganisation har små databehov. I den här modellen tilldelar du en rad klienter till en databas genom intervallmappning med .

Diagram över intervallmappning.

Eller så kan du implementera en databasmodell med flera klienter med hjälp av en listmappning för att tilldela flera klienter till en enskild databas. Db1 används till exempel för att lagra information om klientorganisations-ID 1 och 5, och DB2 lagrar data för klientorganisation 7 och klient 10.

Diagram över flera hyresgäster i en enda databas.

Välj något av följande alternativ baserat på ditt val:

Alternativ 1: Skapa en fragmentkarta för en listmappning

Skapa en fragmentkarta med hjälp av ShardMapManager-objektet.

# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager

Alternativ 2: Skapa en fragmentkarta för en intervallmappning

Om du vill använda det här mappningsmönstret måste klientorganisations-ID-värden vara kontinuerliga intervall, och det är acceptabelt att ha en lucka i intervallen genom att hoppa över intervallet när du skapar databaserna.

# $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

Alternativ 3: Lista mappningar i en enskild databas

Om du konfigurerar det här mönstret måste du också skapa en listkarta som du ser i steg 2, alternativ 1.

Steg 3: Förbered enskilda delar

Lägg till varje shard (databas) i shard map manager. Detta förbereder de enskilda databaserna för lagring av mappningsinformation. Kör den här metoden på varje shard. $ShardMap är fragmentkartan som skapades i steg 2.

Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.

Steg 4: Lägga till mappningar

Tillägget av mappningar beror på vilken typ av fragmentkarta du skapade. Om du har skapat en listkarta lägger du till listmappningar. Om du har skapat en intervallkarta lägger du till intervallmappningar.

Alternativ 1: Mappa data för en listmappning

Mappa data genom att lägga till en listmappning för varje klientorganisation. Använd följande PowerShell-exempelskript för att skapa mappningarna och associera dem med de nya shardsna.

# Create the mapping and associate it with the new shards
Add-ListMapping -KeyType $([int]) -ListPoint '<tenant_id>' -ListShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'

Alternativ 2: Mappa data för en intervallmappning

Lägg till intervallmappningarna för alla klientorganisations-ID-intervall – databasassociationer. Använd följande PowerShell-exempelskript för att skapa mappningarna och associera dem med de nya shardsna.

# Create the mapping 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>'

Steg 4 alternativ 3: Mappa data för flera klienter i en enskild databas

Kör cmdleten Add-ListMapping (alternativ 1) för varje hyresgäst.

Kontrollera mappningarna

Information om befintliga shards och de mappningar som är associerade med dem kan efterfrågas med hjälp av följande PowerShell-exempelskript:

# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap

Sammanfattning

När du har slutfört installationen kan du börja använda Elastic Database-klientbiblioteket. Du kan också använda databeroende routning och multi-shard-fråga.