Skip to content

Migratie & Scalability

1. Database Migratie

Data migratie = data verhuizen van het ene naar het andere systeem. "Systeem" is ruimer dan het lijkt: applicatie + DBMS + OS + storage — elk van die vier kan de aanleiding zijn.

Note

Data leeft meestal veel langer dan het systeem waarin het opgeslagen is.


2. Upgrade Applicatie

Upgrades vereisen vaak wijzigingen in het database schema.

Versiebeheer aanpak Beschrijving
State based Applicatie bevat schema, tool vergelijkt en voert ALTER uit
Migration based Applicatie bevat migration scripts

Schema migration voorbeeld

v1.0  →  ALTER TABLE employee ADD birth_date DATE;  →  v2.0
v2.0  →  ALTER TABLE employee MODIFY email VARCHAR(80);  →  v2.1

3. Upgrade DBMS of andere DBMS

Scenario Aanpak
Upgrade DBMS (zelfde vendor) Meestal automatisch — desnoods logical backup/restore
Naar andere DBMS Speciale tools of manueel via export/import CSV — komt niet vaak voor
Andere server, zelfde DBMS Physical of logical backup/restore — bv. hardware upgrade, cloud
Andere hardware/VM OS image

4. Migratie Scenario's

Methode Beschrijving
Backup & restore Backup op bron, restore op doel
Detach & attach Database loskoppelen en opnieuw koppelen op andere instance
Copy database Wizard om database naar andere instance te kopiëren
Generate scripts wizard Script om database over te zetten (logical backup)

5. Detach Database

Koppelt de database los van zijn SQL instance — bewaart data en log files in de huidige toestand.

Enkel mogelijk indien: - Database niet gerepliceerd, published of mirrored is - Er geen snapshots zijn - Het niet om een system database gaat - Database niet in 'suspect' staat staat

Object Explorer → rechtermuisklik op database → TasksDetach...

USE master;
GO

EXEC sp_detach_db @dbname = [AdventureWorks2019];
GO

6. Attach Database

Koppelt de database opnieuw aan een SQL Server instance.

  • Enkel indien alle bestanden aanwezig zijn
  • Maakt het mogelijk een alternatieve locatie voor files mee te geven
  • Kan niet indien het een oudere SQL instance versie is

Object Explorer → rechtermuisklik op DatabasesAttach...

USE master;
GO

CREATE DATABASE MyAdventureWorks
    ON (FILENAME = 'D:\MySQLServer\AdventureWorks_Data.mdf'),
       (FILENAME = 'D:\MySQLServer\AdventureWorks_Log.ldf')
    FOR ATTACH;
GO

7. Copy Database

Kopieert de originele database naar een andere SQL instance (eventueel op andere fysieke server).

  • Originele database blijft beschikbaar voor gebruikers
  • Ideaal scenario om de impact te testen op nieuwe hardware/software

Via SSMS: rechtermuisklik op database → TasksCopy Database...

Transfer methoden: - Detach and attach method — sneller, vereist database offline - SQL Management Object method — trager, database blijft online


8. Generate and Publish Scripts Wizard

Maakt een SQL-script aan om de database over te zetten (logical backup).

Via SSMS: rechtermuisklik op database → TasksGenerate Scripts...


9. Scalability — Scale UP vs Scale OUT

Twee fundamenteel andere keuzes als een systeem onder druk komt:

Strategie Betekenis
Scale UP Meer resources geven aan de bestaande server (meer RAM, CPU, ...)
Scale OUT Meer servers gebruiken

Scale-OUT opties in SQL Server

  • Database mirroring
  • Database replication
  • SQL Server Always On
    • Always On Availability Groups
    • Always On Failover Cluster Instances

10. Database Mirroring

Hoge beschikbaarheid voor een enkele database via een gesynchroniseerde kopie.

  • Bron (principal) stuurt transacties door naar de mirror
  • Mirror is 'warm/hot standby'
  • Bijkomende witness server nodig voor automatische failover
  • Elke DML-opdracht wordt ook op de mirror uitgevoerd

Bedrijfsmodi

Modus Data overdracht
High-safety Synchroon
High-performance Asynchroon

Transport security

  • Windows Authentication
  • Certificate-based Authentication

Vereisten

  • Enkel mogelijk voor databases met full-recovery model
  • Naam van de mirror database moet identiek zijn aan de primaire
  • Database eerst restoren op de mirror instance met NORECOVERY
    • Eventuele differential backup ook restoren
    • Alle log backups na de differential/full backup ook restoren

Via SSMS: rechtermuisklik op database → TasksMirror...


11. Database Replication

Technologie om data te kopiëren naar een andere SQL instance met synchronisatie.

  • Asynchroon proces met vertraging (delay) vooraleer data overal beschikbaar is
  • Gebaseerd op het principe publisher–distributor–subscriber

Rollen

Rol Beschrijving
Publisher Bevat de brondatabase — maakt data toegankelijk voor replicatie
Article Database-objecten in de replicatie (tabellen, views, indexes, ...)
Publication Verzameling van articles — noodzakelijk voor de verspreiding
Distributor Tussenpersoon — ontvangt transacties en verdeelt naar subscribers
Subscriber Ontvangt de gewijzigde data — kan data terugsturen of verdelen
Subscription Verzoek van subscriber om publicatie te ontvangen

Subscription types

Type Aangemaakt op Wie initieert
Push Publisher server Publisher stuurt data door
Pull Subscriber server Subscriber start het replicatieproces

Replicatie types

Type Beschrijving Ideaal voor
Transactional Transaction log gebruikt om te repliceren — éénrichtingsverkeer Snelle updates bij subscriber
Snapshot Kopieert alle gepubliceerde data via snapshot Data wijzigt onregelmatig, kleine volumes
Merge Replicatie in alle richtingen — ook subscriber-wijzigingen worden doorgegeven Off-line updates die gesynchroniseerd worden
Peer-to-peer Elke server is tegelijk publisher, distributor en subscriber Data verdeeld over publishers, lage kans op conflicten

Configuratie (via SSMS)

  1. Configure Distribution — distributor instellen, snapshot folder, distribution database
  2. New Publication — publicatie type, articles selecteren, filters, snapshot agent
  3. New Subscription — publisher + publicatie kiezen, subscription database, synchronisatieschema

Replication Monitor

Via SSMS: rechtermuisklik op ReplicationLaunch Replication Monitor

  • Enkel toegankelijk als lid van sysadmin (Distributor) of replmonitor (distribution database)
  • Toont status van agents, synchronisatiehistorie, latency

12. SQL Server Always On

De oplossing voor hoge beschikbaarheid en disaster recovery.

Technologie Beschrijving
AlwaysOn AG (Availability Groups) Database-level HA — geen shared storage
AlwaysOn FCI (Failover Cluster Instances) Instance-level HA — vereist shared storage

AlwaysOn Availability Groups (AG)

  • Databases kunnen 1 of meerdere replica's hebben op verschillende SQL Servers
  • Elke server slaat de data lokaal op — geen shared storage
  • Replicatie kan synchroon of asynchroon
  • Enterprise feature (vanaf SQL Server 2016 Standard Edition beperkt beschikbaar)
  • Geschikt voor disaster recovery over datacenters heen

AlwaysOn Failover Cluster Instances (FCI)

  • Vereist gedeelde opslag: iSCSI of Fibre Channel SAN
  • Ondersteunt multisite clustering over subnetten
  • Failover van SQL Server instances over datacenters mogelijk

Vergelijking FCI vs AG

Failover Cluster Instances Availability Groups
Shared storage oplossing Geen shared storage
Instance-level HA Database-level HA
Logins, jobs, certs intact na failover Handmatig toevoegen aan secondary's
Active/Passive nodes DR-replica kan Active Secondary zijn (backup, read-only)
Verbinding via virtuele servernaam Verbinding via AG listener naam
Geen bescherming tegen I/O uitval Bescherming tegen I/O uitval
Geen vereisten voor recovery model Databases moeten in FULL recovery model staan