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:
- Bereid de shard-toewijzingsbeheerdatabase voor.
- Maak de shard-toewijzing.
- Bereid de afzonderlijke shards voor.
- 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:
- Eén tenant per database (zie de woordenlijst voor termen.)
- Meerdere tenants per database (twee typen):
- Lijsttoewijzing
- 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.
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.
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.
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.