Direct naar content

Migratie naar Azure SQL-database, elk voordeel heb z’n nadeel

Er zijn veel verschillende manieren om een SQL Server-database te migreren naar een Azure SQL-database. Omdat in Azure een aantal zaken niet zullen werken, moet je wel eerst duidelijk hebben wat er uit jouw database de Cloud in kan. Met de Data migration assistant (DMA) van Microsoft kan eerst een pre-migratie-assessment gedaan worden, zodat je weet wat je te wachten staat. In deze blog zet Mark van der Haar, Senior Database Reliability Engineer bij OptimaData, een aantal van migraties-opties op een rij.

Mark van der Haar

DBA Consultant en Senior Database Reliability Engineer
Mark van der Haar - DBA Consultant en Senior Database Reliability Engineer

Vooraf inzicht

Als je een database migreert van SQL Server naar Azure SQL, zullen een aantal dingen niet werken. Voorbeelden daarvan kunnen zijn: extended-stored-procedures, Windows-authenticatie (Azure heeft Entra, voorheen Azure Active Directory, maar de werking is anders), table-partitioning met meerdere filegroups, gebruik van trace-flags, referenced object uit een andere database en CLR-support. Met de Data migration assistant (DMA) van Microsoft kun je eerst een pre-migratie-assessment doen op compatibility-, performance- en reliability-issues. Zo krijg je vooraf inzicht tegen welke issues je kunt aanlopen na de migratie. Is het duidelijk wat er gemigreerd gaat worden, dan zijn er verschillende opties.

Data migration assistant (DMA)

DMA is een tool dat je on-premise installeert en waarmee je een SQL Server-database (vanaf SQL 2005) kunt migreren naar SQL Server on-prem (upgrade) of naar een Azure SQL-database. Je kunt ook een assessment voorafgaand aan de migratie doen met Microsoft DMA. Deze tool is eenvoudig in het gebruik. Met een paar handelingen ontdek je of je de database die je voor ogen hebt, daadwerkelijk kunt migreren.

DMA is gratis te downloaden en installeer je het op de databaseserver zijn er geen extra kosten. Nadeel is dat tijdens de migratie de database niet gewijzigd kan worden. Dat betekent dat je met een lange downtime te maken hebt.

SQL Server Migration assistant (SSMA)

SSMA is een tool waarmee je andere DBMS’sen (Oracle, MySQL, SAP ASE, DB2 en Access) kunt migreren naar SQL Server on-prem en in de cloud. Oracle kun je ook migreren naar Azure Synapse. Net als met DMA zijn er geen extra kosten als je het op de databaseserver installeert. Deze tool werkt echter (nog?) niet wanneer de source SQL Server is.

Azure Database Migration Services (Azure DMS)

Azure DMS is een service binnen Azure waarmee je een database van on-prem naar Azure brengt. De source kan SQL Server of Oracle zijn en de target Azure SQL-database of Azure SQL Managed Instance. Het is goed om te weten dat Microsoft steeds meer van DMA en SSMA in deze service bouwt.

Deze oplossing werkt online, dus een database in Azure kan bijgewerkt worden tot het moment dat hij daadwerkelijk in gebruik wordt genomen, met minimale downtime. Het voordeel van deze oplossing is dat er geen installatie nodig is. Het nadeel is dat je betaalt naar gebruik, maar de service draait alleen tijdens de migratie. De kosten hangen dus vooral af van de grootte van de database en de updates die na het opzetten van de services nog plaatsvinden.

Transactional Replication

Je kunt ook naar Azure SQL-database migreren door transactional replication op te zetten. Azure SQL Managed Instance kan ook andere vormen van replicatie aan. Hierbij moet je een distributor plaatsen en de replicatie configureren. Dit vraagt natuurlijk wel even werk om het op te zetten. Voordeel is dat je ook hier op het laatste moment de knop kunt omzetten, dus er is sprake van weinig downtime. Als je de distributor nog op de bestaande databaseserver kan zetten, dan heb je hier ook weinig extra kosten.

SQL Server BACPAC

SQL Server heeft naast het maken van een DACPAC (Data-tier Application Component Package) ook de mogelijkheid om een BACPAC (Backup Package) te maken. Hierbij wordt niet alleen de structuur, maar ook de data geëxporteerd. Deze BACPAC-file kun je uploaden naar een Azure Blob-opslag (alleen standard).

Vervolgens kies je op de overviewtab van een Azure SQL Server voor ‘import database’. Bij deze manier van migreren zijn er alleen kosten voor de Blob-storage. De werkwijze is vrij recht toe recht aan en eenvoudig uit te voeren. Nadeel is de lange downtime, doordat tijdens de migratie de database offline is. Natuurlijk hangt dit af van de grootte van de database.

Bulk copy program (bcp)

Bcp is een command-line-tool die al heel lang met SQL Server meegeleverd wordt. Je kunt de database exporteren naar een csv-bestand en dat kun je weer importeren in Azure SQL-database. Voor je dat doet, kun je het csv-bestand nog bewerken. Op zich is Bcp de snelste tool om data te importeren en exporteren.

Doordat je twee slagen maakt (en eventueel een bewerking), is er in totaal toch veel downtime. Omdat je per table een commando moet geven voor elke ex- en import, moet er een script zijn voor de gehele database. Bcp is een gratis tool en brengt dus geen extra kosten met zich mee.

SQL Server Integration Services (SSIS)

SSIS is – als je het gebruikt voor migratie naar Azure – eigenlijk een schil om Bcp heen. SSIS gebruikt op de achtergrond dezelfde technieken als Bcp. Het script dat je moet schrijven bij puur Bcp lost SSIS binnen het tool op. SSIS is het extract-transform-load (ETL)-tool van Microsoft en heeft een grafische interface.

Het is eenvoudiger te leren dan het bouwen van een script in Bcp. Omdat het deze methode voor de rest lijkt op Bcp heeft het ook dezelfde voor- en nadelen. Ook SSIS is een gratis tool. Er zijn nog een groot aantal ETL-tools waarmee je een migratie kunt uitvoeren, zoals Informatica PowerCenter, Apache Airflow, Oracle Data Integrator en Talend Open Studio. Ze hebben allemaal hun eigen voor- en nadelen. Ik heb ze verder buiten de scope van deze blog gehouden.

Azure Data Factory (ADF)

ADF is ook een ETL-tool, maar ik wil hem hier toch separaat noemen omdat het een Azure-dienst is. Het voordeel hiervan is dat je de tool niet hoeft te installeren, alleen configureren. Het is de Azure-tegenhanger van SSIS en heeft veel van de voor- en nadelen van SSIS. Het is wel een dienst en je betaalt dan ook naar gebruik. Verder moet je op een on-premises-server een integration-runtime installeren. Hierdoor heb je waarschijnlijk de hulp van een systeembeheerder nodig.

SQL Data Sync

Met Azure SQL Data Sync kan een bi-directionele verbinding worden opgezet. Dit geeft de mogelijkheid om de applicatie die de on-premises-database gebruikt én de applicatie die de Azure SQL-database gebruikt, tegelijk te draaien. Zo kun je dus de nieuwe applicatie eerst testen met een kleine groep, zodat je geleidelijk de overstap kunt maken.

Om de synchronisatie op te zetten, moet je in de Azure SQL-database een sync-group aanmaken. Hierdoor komt er ook een hub-database bij die extra kosten met zich meebrengt. Verder moet je ook on-premises een SQL Azure Data Sync Agent installeren, waardoor ook hier medewerking van systeembeheer of netwerkbeheer nodig is. Heel erg bekend is de methode nog niet, maar over het algemeen ervaart men wel een redelijk lange latency.

Elke voordeel heb z’n nadeel

Zoals je ziet, geldt ook bij de migratie naar Azure SQL-database dat elk voordeel z’n nadeel heeft. Of andersom, het is maar net hoe je naar de wereld kijkt. Maar met de juiste tools en aanpak kunnen we elke uitdaging aan.

Meer weten?

Benieuwd hoe wij jou kunnen helpen bij jouw databasemigratie of clouddatabaseconfiguratie? Neem gerust eens vrijblijvend contact op, we helpen je graag.