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
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
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 → Tasks → Copy 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 → Tasks → Generate 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 → Tasks → Mirror...
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)
- Configure Distribution — distributor instellen, snapshot folder, distribution database
- New Publication — publicatie type, articles selecteren, filters, snapshot agent
- New Subscription — publisher + publicatie kiezen, subscription database, synchronisatieschema
Replication Monitor
Via SSMS: rechtermuisklik op Replication → Launch 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 |