Zo migreert u naar Azure SQL Database

Met Azure SQL Database biedt Microsoft meer dan een database-dienst in de cloud. Het is de schaalbare en flexibele infrastructuur die bedrijven nodig hebben als ze waarde willen halen uit misschien wel petabytes aan big data. Maar hoe krijgen ze die data in de Azure-cloud? We zetten een aantal opties naast elkaar.

Azure SQL Database is een volledig beheerde, relationele database in de cloud die door verschillende applicaties op verschillende apparaten kan worden aangesproken. De database wordt opgeslagen in de datacenters van Microsoft, dat ook verantwoordelijk is voor het updaten en patchen van de database en het beheer van de onderliggende infrastructuur. De klant heeft hierbij de keuze tussen een vCore-gebaseerd en een DTU-gebaseerd aankoopmodel.

Het migreren van data naar Azure SQL Database is volgens Microsoft ‘nog nooit zo eenvoudig geweest’. De leverancier kondigde eerder dit jaar nog Azure SQL Data Sync aan voor het synchroniseren van data tussen Azure SQL Database en SQL Server-databases. Die SQL Server-databases kunnen zich on-premise bevinden, of in Azure Virtual Machines. Daarnaast biedt Microsoft een Data Migration Assistant (DMA) voor het uitvoeren van assessments en de Azure Database Migration Service voor een snelle overgang naar de cloud.

Wat bij een migratie van SQL Server naar Azure SQL Database eveneens helpt, is dat beide platformen dezelfde code base delen. Ook in functionaliteit zijn de verschillen inmiddels klein. De huidige versie 12 van Azure SQL Database is volgens de leverancier in functionaliteit nagenoeg gelijkwaardig aan de recentste versie van SQL Server. Microsoft hanteert bovendien een cloud first-strategie: nieuwe functies worden eerst voor de Azure SQL Database geïntroduceerd en komen pas daarna beschikbaar voor SQL Server. De kans dat functionele verschillen bij een migratie van on-premise naar cloud tot compatibiliteitsproblemen leiden, is dus relatief klein.

Assessment databases

Toch zijn er nog wel afwijkingen te ontdekken. Tools als SQL Server Profiler of Database Tuning Advisor om SQL-databases te optimaliseren, worden niet door alle varianten van Azure SQL Database ondersteund. Hetzelfde geldt voor SQL Server Agent of Master Data Services. Ook wordt geen ondersteuning geboden voor FILESTREAM, een functie voor de opslag van ongestructureerde data.

Dergelijke verschillen zijn met de Data Migration Assistant in kaart te brengen. Is er een ‘fix’ nodig om compatibiliteitsproblemen te verhelpen? Dan moet die worden vastgelegd in een Transact-SQL-script dat is toe te passen op de kopie van de data.

Data migreren

Data migreren naar de cloud kan op meerdere manieren, mede afhankelijk van het gekozen implementatiemodel voor Azure SQL Database. We kijken eerst naar twee methodes die geschikt zijn als Azure SQL Database wordt afgenomen als een afzonderlijke database met een eigen set resources, of als een elastische pool van databases met een gedeelde set resources:

  1. Data kopiëren

Dit is de eenvoudigste methode, die echter wel gepaard gaat met enige downtime. Voorafgaand aan de migratie moet u dus de vraag beantwoorden of het acceptabel is als de database gedurende een beperkte periode niet beschikbaar is. Als het nog maar om een testmigratie gaat, zal downtime geen probleem zijn.

Zoals eerder geschetst, is de eerste stap een assessment van de SQL Server-database op eventuele compatibiliteitsproblemen die een migratie in de weg kunnen staan. Zijn er problemen te verwachten, dan moeten de fixes worden voorbereid in de vorm van Transact-SQL-scripts.

Vervolgens wordt een consistente kopie van de brondatabase gemaakt door tijdens de migratie de transacties te ‘pauzeren’. Dat kan door de brondatabase tijdelijk offline te halen. Alternatief is het maken van een snapshot van de database. De transacties die na de snapshot plaatsvinden, zijn eventueel met ‘transactionele replicatie’ alsnog over te brengen. De kopie van de data brengt u met DMA over naar een nieuwe Azure SQL Database (zie afbeelding 1).

Figuur-1-Data-kopiëren-naar-Azure-SQL-Database-615x346 Afbeelding 1. Migratie naar Azure SQL Database door data te kopiëren (bron: Microsoft)

  1. Data repliceren

Transactionele replicatie is de tweede methode om data te migreren naar een individuele Azure SQL Database of een pool databases in de cloud. Dit is een complexere manier, maar wel een die de downtime tot een minimum beperkt. De brondatabase moet echter geschikt zijn voor transactionele replicatie en compatibel zijn met Azure SQL Database.

Ook bij deze methode begint u weer met een assessment om te kijken of er mogelijk compatibiliteitsproblemen spelen en bereidt u eventuele fixes voor. Vervolgens configureert u de Azure SQL Database als een ‘subscriber’ op de SQL Server-database die u wilt migreren (zie afbeelding 2). De ‘distributor’ synchroniseert de gegevens tussen de on-premise database (de ‘publisher’) en de cloud-dienst van Microsoft, terwijl nieuwe transacties blijven binnenkomen. Als de synchronisatie is voltooid, is migreren een kwestie van het wijzigen van de connection strings waardoor applicaties communiceren met de Azure SQL Database.

Figuur-2-Data-repliceren-naar-Azure-SQL-Database-615x605 Afbeelding 2. Migratie naar Azure SQL Database door data te repliceren (bron: Microsoft)

Managed Instance

Met de introductie van ‘Managed Instance’ presenteerde Microsoft eerder dit jaar een compleet nieuw implementatiemodel voor Azure SQL Database. Microsoft biedt met Managed Instance niet alleen een beheerde infrastructuur, maar een compleet beheerde database-dienst. Die is inclusief opties als SQLAgent, DBMail, Change Data Capture en opties voor high-availability. Functies die nog ontbraken in Azure SQL Database – zoals ondersteuning voor cross-database queries en cross-database transacties – zitten wel in de Managed Instance.

Bij zo’n nieuw model hoort ook een andere migratiemethode:

  1. Lift and shift

Managed Instance is ontworpen voor een eenvoudige ‘lift and shift’-migratie van bestaande on-premise SQL Server-databases naar de cloud. Toch is het ook in dit geval raadzaam om met DMA eerst een assessment uit te voeren. Komen er verschillen in functionaliteit aan het licht die een migratie in de weg staan? Dan kan dat een reden zijn niet voor Managed Instance te kiezen.

De volgende stap is het via de Azure-portal inregelen van de voor de migratie benodigde storage en virtuele cores (‘vCores’). De storage en vCores zijn na de migratie weer af te schalen. Voor het ‘overzetten’ van de data kan gebruik worden gemaakt van de native back-up (de .bak-files) die zijn gemaakt van SQL Server, of van de Azure Database Migration Service.

Het terugzetten van een native back-up is de eenvoudige optie voor een snelle offline database-migratie. De back-up wordt opgeslagen in Azure Storage. De data worden vervolgens naar Managed Instance overgebracht door vanaf die plaats een restore uit te voeren (zie afbeelding 3).

Figuur-3-Restore-Native-Backup-615x123 Afbeelding 3. Migratie naar Azure SQL Database Managed Instance door het terugzetten van een native back-up (bron: Microsoft)

Gebruikmaken van de Azure Database Migration Service is wellicht nog eenvoudiger. Deze volledig beheerde service is speciaal ontworpen voor het met minimale downtime migreren van meerdere databasebronnen naar SQL Azure Database. En dan niet alleen naar Managed Instance.

David Oomen is Technical Consultant bij Tech Data Nederland