Meglévő adatbázisok migrálása a vertikális felskálázáshoz

A következőre vonatkozik: Azure SQL Database

A meglévő horizontálisan horizontálisan felskálázott adatbázisok egyszerűen kezelhetők eszközökkel (például az Elastic Database ügyfélkódtárával). Először alakítson át egy meglévő adatbáziskészletet a szegmenstérkép-kezelő használatára.

Áttekintés

Meglévő szegmenses adatbázis migrálása:

  1. A szegmenstérkép-kezelő adatbázisának előkészítése.
  2. Hozza létre a szegmenstérképet.
  3. Készítse elő az egyes szegmenseket.
  4. Leképezések hozzáadása a szegmenstérképhez.

Ezek a technikák az .NET-keretrendszer ügyfélkódtár vagy az Azure SQL Database – Elastic Database-eszközök szkriptjeiben található PowerShell-szkriptek használatával implementálhatók. Az alábbi példák a PowerShell-szkripteket használják.

A ShardMapManagerről további információt a Szegmenstérkép-kezelés című témakörben talál. Az Elastic Database-eszközök áttekintését az Elastic Database funkcióinak áttekintésében tekintheti meg.

A szegmenstérkép-kezelő adatbázisának előkészítése

A szegmenstérkép-kezelő egy speciális adatbázis, amely a horizontálisan felskálázott adatbázisok kezeléséhez szükséges adatokat tartalmazza. Használhat meglévő adatbázist, vagy létrehozhat egy új adatbázist. A szegmenstérkép-kezelőként működő adatbázisok nem lehetnek azonosak a szegmensek adatbázisával. A PowerShell-szkript nem hozza létre önnek az adatbázist.

1. lépés: Szegmenstérkép-kezelő létrehozása

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

A szegmenstérkép-kezelő lekérése

A létrehozás után ezzel a parancsmaggal lekérheti a szegmenstérkép-kezelőt. Erre a lépésre minden alkalommal szükség van, amikor a ShardMapManager objektumot kell használnia.

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

2. lépés: A szegmenstérkép létrehozása

Válassza ki a létrehozni kívánt szegmenstérkép típusát. A választás az adatbázis architektúrájától függ:

  1. Önálló bérlő adatbázisonként (a kifejezésekért lásd a szószedetet.)
  2. Adatbázisonként több bérlő (két típus):
    1. Listaleképezés
    2. Tartományleképezés

Egybérlős modell esetén hozzon létre egy listaleképezési szegmenstérképet. Az egybérlős modell bérlőnként egy adatbázist rendel hozzá. Ez egy hatékony modell az SaaS-fejlesztők számára, mivel leegyszerűsíti a felügyeletet.

List mapping

A több-bérlős modell több bérlőt rendel egy adott adatbázishoz (és több adatbázis között is eloszthat bérlőcsoportokat). Ezt a modellt akkor használja, ha arra számít, hogy minden bérlőnek kis adatigénye van. Ebben a modellben bérlők tartományát rendelje hozzá egy adatbázishoz tartományleképezéssel.

Range mapping

Vagy több-bérlős adatbázismodellt is implementálhat egy listaleképezéssel , hogy több bérlőt rendeljen hozzá egy adott adatbázishoz. A DB1 például az 1. és az 5. bérlőazonosítóval kapcsolatos információk tárolására szolgál, a DB2 pedig a 7. és a 10. bérlő adatait tárolja.

Multiple tenants on single DB

A választott beállítás alapján válasszon az alábbi lehetőségek közül:

1. lehetőség: Szegmenstérkép létrehozása listaleképezéshez

Hozzon létre egy szegmenstérképet a ShardMapManager objektummal.

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

2. lehetőség: Szegmenstérkép létrehozása tartományleképezéshez

A leképezési minta használatához a bérlőazonosító értékeknek folyamatos tartományoknak kell lenniük, és elfogadható, ha az adatbázisok létrehozásakor kihagyja a tartományt.

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

3. lehetőség: Az egyes adatbázisok leképezéseinek listázása

A minta beállításához listatérképet is létre kell készíteni a 2. lépés 1. lehetőségének megfelelően.

3. lépés: Egyéni szegmensek előkészítése

Adja hozzá az egyes szegmenseket (adatbázist) a szegmenstérkép-kezelőhöz. Ezzel előkészíti az egyes adatbázisokat a leképezési adatok tárolására. Hajtsa végre ezt a metódust az egyes szegmenseken.

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

4. lépés: Leképezések hozzáadása

A leképezések hozzáadása a létrehozott szegmenstérkép típusától függ. Ha létrehozott egy listatérképet, listaleképezéseket adhat hozzá. Ha tartományleképezést hozott létre, tartományleképezéseket adhat hozzá.

1. lehetőség: Listaleképezés adatainak leképezése

Az adatok leképezéséhez adjon hozzá egy listaleképezést minden bérlőhöz.

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

2. lehetőség: Tartományleképezés adatainak leképezése

Adja hozzá a tartományleképezéseket az összes bérlőazonosító-tartományhoz – adatbázis-társításokhoz:

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

4. lépés 3. lehetőség: Több bérlő adatainak leképezése egy adott adatbázisban

Minden bérlő esetében futtassa a ListMapping bővítményt (1. lehetőség).

A leképezések ellenőrzése

A meglévő szegmensekről és a hozzájuk társított leképezésekről az alábbi parancsok segítségével kérdezhetők le:

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

Összesítés

A beállítás befejezése után megkezdheti az Elastic Database ügyfélkódtár használatát. Adatfüggő útválasztást és több szegmenses lekérdezést is használhat.

További lépések

Szerezze be a PowerShell-szkripteket az Azure Elastic Database-eszközök szkriptjeiből.

A Rugalmas adatbázis-eszközök ügyfélkódtár a GitHubon érhető el: Azure/elastic-db-tools.

A felosztási egyesítési eszközzel adatokat helyezhet át egy több-bérlős modellbe vagy onnan egyetlen bérlői modellbe. Lásd: Egyesítés felosztása eszköz.

További információforrások

A több bérlős szoftverszolgáltatás (SaaS) típusú adatbázis-alkalmazások általános adatarchitektúra-mintázataival kapcsolatos információk: Tervminták több-bérlős SaaS-alkalmazásokhoz Azure SQL Database esetén.

Kérdések és funkciókérések

Ha kérdése van, használja a Microsoft Q&A kérdésoldalát az SQL Database-hez és a funkciókérésekhez, adja hozzá őket az SQL Database visszajelzési fórumához.