Bestaande databases migreren om uit te schalen

Van toepassing op: Azure SQL Database

Beheer eenvoudig uw bestaande uitgeschaalde shard-databases met behulp van hulpprogramma's (zoals de elastic database-clientbibliotheek). Converteer eerst een bestaande set databases om het shard-toewijzingsbeheer te gebruiken.

Overzicht

Een bestaande shard-database migreren:

  1. Bereid de shard-toewijzingsbeheerdatabase voor.
  2. Maak de shard-toewijzing.
  3. Bereid de afzonderlijke shards voor.
  4. Voeg toewijzingen toe aan de shard-toewijzing.

Deze technieken kunnen worden geïmplementeerd met behulp van de .NET Framework-clientbibliotheek of de PowerShell-scripts in Azure SQL Database - Elastic Database-hulpprogrammascripts. In de voorbeelden worden de PowerShell-scripts gebruikt.

Zie Shard-toewijzingsbeheer voor meer informatie over ShardMapManager. Zie overzicht van de functies van Elastic Database voor een overzicht van de hulpprogramma's voor Elastic Database.

De shard-toewijzingsbeheerdatabase voorbereiden

Het shard-toewijzingsbeheer is een speciale database die de gegevens bevat voor het beheren van uitgeschaalde databases. U kunt een bestaande database gebruiken of een nieuwe database maken. Een database die als shard-toewijzingsbeheer fungeert, mag niet dezelfde database zijn als een shard. Het PowerShell-script maakt de database niet voor u.

Stap 1: Een shard-toewijzingsbeheer maken

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

Shard-toewijzingsbeheer ophalen

Na het maken kunt u het shard-toewijzingsbeheer ophalen met deze cmdlet. Deze stap is nodig telkens wanneer u het ShardMapManager-object moet gebruiken.

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

Stap 2: De shard-toewijzing maken

Selecteer het type shardtoewijzing dat u wilt maken. De keuze is afhankelijk van de databasearchitectuur:

  1. Eén tenant per database (zie de woordenlijst voor termen.)
  2. Meerdere tenants per database (twee typen):
    1. Lijsttoewijzing
    2. Bereiktoewijzing

Voor een model met één tenant maakt u een shard-toewijzing met een lijsttoewijzing . Met het model met één tenant wordt één database per tenant toegewezen. Dit is een effectief model voor SaaS-ontwikkelaars omdat het beheer vereenvoudigt.

List mapping

Het model met meerdere tenants wijst verschillende tenants toe aan een afzonderlijke database (en u kunt groepen tenants verdelen over meerdere databases). Gebruik dit model wanneer u verwacht dat elke tenant kleine gegevensbehoeften heeft. Wijs in dit model een reeks tenants toe aan een database met behulp van bereiktoewijzing.

Range mapping

U kunt ook een databasemodel met meerdere tenants implementeren met behulp van een lijsttoewijzing om meerdere tenants toe te wijzen aan een afzonderlijke database. DB1 wordt bijvoorbeeld gebruikt voor het opslaan van informatie over tenant-id 1 en 5, en DB2 slaat gegevens op voor tenant 7 en tenant 10.

Multiple tenants on single DB

Kies een van de volgende opties op basis van uw keuze:

Optie 1: Een shard-toewijzing maken voor een lijsttoewijzing

Maak een shard-toewijzing met behulp van het ShardMapManager-object.

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

Optie 2: Een shard-toewijzing maken voor een bereiktoewijzing

Als u dit toewijzingspatroon wilt gebruiken, moeten tenant-id-waarden doorlopende bereiken zijn en is het acceptabel om tussenruimtes in de bereiken te hebben door het bereik over te slaan bij het maken van de databases.

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

Optie 3: Lijsttoewijzingen voor een afzonderlijke database

Voor het instellen van dit patroon moet ook een lijstkaart worden gemaakt, zoals wordt weergegeven in stap 2, optie 1.

Stap 3: Afzonderlijke shards voorbereiden

Voeg elke shard (database) toe aan het shard-toewijzingsbeheer. Hiermee worden de afzonderlijke databases voorbereid voor het opslaan van toewijzingsgegevens. Voer deze methode uit op elke shard.

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

Stap 4: Toewijzingen toevoegen

De toevoeging van toewijzingen is afhankelijk van het type shard-toewijzing dat u hebt gemaakt. Als u een lijsttoewijzing hebt gemaakt, voegt u lijsttoewijzingen toe. Als u een bereiktoewijzing hebt gemaakt, voegt u bereiktoewijzingen toe.

Optie 1: De gegevens toewijzen voor een lijsttoewijzing

Wijs de gegevens toe door een lijsttoewijzing toe te voegen voor elke tenant.

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

Optie 2: De gegevens toewijzen voor een bereiktoewijzing

Voeg de bereiktoewijzingen toe voor alle tenant-id's - databasekoppelingen:

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

Stap 4 optie 3: De gegevens voor meerdere tenants toewijzen aan een afzonderlijke database

Voer voor elke tenant de optie Add-ListMapping (optie 1) uit.

De toewijzingen controleren

Informatie over de bestaande shards en de toewijzingen die eraan zijn gekoppeld, kunnen worden opgevraagd met behulp van de volgende opdrachten:

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

Samenvatting

Zodra u de installatie hebt voltooid, kunt u beginnen met het gebruik van de elastic database-clientbibliotheek. U kunt ook gegevensafhankelijke routering en multi-shardquery gebruiken.

Volgende stappen

Haal de PowerShell-scripts op uit azure Elastic Database-hulpprogramma's.

De clientbibliotheek voor hulpprogramma's voor elastische databases is beschikbaar op GitHub: Azure/elastic-db-tools.

Gebruik het hulpprogramma splitsen en samenvoegen om gegevens te verplaatsen naar of van een model met meerdere tenants naar één tenantmodel. Zie het hulpmiddel Splitsen samenvoegen.

Aanvullende bronnen

Zie voor informatie over algemene gegevensarchitectuurpatronen van multitenant software as a service (SaaS)-databasetoepassingen, Ontwerppatronen voor multitenant SaaS-toepassingen met Azure SQL Database.

Vragen en functieaanvragen

Voor vragen gebruikt u de microsoft Q&A-vragenpagina voor SQL Database en voor functieaanvragen en voegt u deze toe aan het feedbackforum van SQL Database.