NLEN
Direct technisch advies?
Home > Blog

Zo kun je MySQL centraliseren

Eric Gipon 3-11-2021 8:39
Categorieën: BLOG, MySQL, Ontwerp, Oplossen, Review

Als je net begint met je IT-omgeving is alles nog heel beheersbaar. Maar zodra je een paar jaar verder bent, zit je misschien met een spaghetti aan databases. Centraliseren kan dé oplossing zijn, vertelt Eric Gipon in deze blog.

Van overzicht naar spaghettibrij 

Je hebt een goed idee en start een bedrijf. Je regelt het papierwerk en andere zaken die nodig zijn om aan de slag te gaan. Daar hoort een moderne IT-omgeving natuurlijk ook bij, dus je huurt een knappe kop in die dat voor jou bouwt. Voor je het weet ben je een paar jaar verder. Je bedrijf draait goed en het is tijd om eens wat interne aspecten onder de loep te nemen. Dan kom je automatisch ook weer bij je IT-omgeving terecht. Als je daar eens goed induikt, merk je dat het één grote spaghettibrij is geworden en je hebt geen idee wat waar begint en waar eindigt. En was je ooit begonnen met twee overzichtelijke databases, inmiddels heb je er 24, verspreid over zeven servers. Wat waar staat? Je hebt werkelijk geen idee. Je omgeving is een zogenaamde microservice-databaseomgeving geworden, en het is tijd voor overzicht. Centraliseren zou zo maar de oplossing kunnen bieden.

Centraliseren MySQL databasesDe voordelen van het centraliseren van je databases

Centraliseren is niet voor elk bedrijf de sleutel tot succes. Het hebben van diverse databaseservers en verschillende database-omgevingen met verschillende databasesmaakjes kan een weloverwogen keuze zijn. Maar vaak levert centraliseren je een hoop voordelen op.

1. Serverbeheer

Als je zeven databaseservers hebt, moet je die ook alle zeven patchen. Ik moet er niet aan denken, wat een werk! Met één server maak je het leven van je databasebeheerder een stuk makkelijker.

2. Databasebeheer

Wat fijn, een nieuwe medewerker! Oh ja, detail: ze moet wel bij alle databases kunnen. Nou, dan voeg je haar toch gewoon in alle 24 databases, op alle zeven servers toe? Het leven wordt een stuk makkelijker als dat maar in één omgeving hoeft te gebeuren. De kans dat je ergens iets overslaat, wordt daarmee een stuk kleiner.

3. Kostenbesparing

Het besturingssysteem vraagt al de nodige CPU en RAM. Als je één centrale server hebt, heb je hier maar één keer mee te maken in plaats van zeven keer. Centralisatie maakt het een stuk makkelijker om voor de gewenste overhead in CPU, RAM en opslagruimte te zorgen. Bovendien heb je met zeven servers te maken met zeven keer de licentiekosten. Die betaal je vaak per jaar of per maand, net als in de cloud. Ik hoef niemand uit te leggen dat één keer licentiekosten betalen een stuk goedkoper is dan zeven keer.

Waar moeten je op letten voor je gaat centraliseren?

1. DBMS

Ten eerste bepaal je welk database-managementsysteem (DBMS) je nodig hebt. Daarbij moet je niet alleen beslissen of je bijvoorbeeld MySQL of MariaDB wil gebruiken, maar ook welke versie. MySQL 5.5 is toch echt een ander smaakje dan MySQL 8.0. Hou er hierbij ook rekening mee of je wel compatible bent. Als je omgeving nu goed draait op MySQL 5.7, betekent dat nog niet dat het ook probleemloos draait op MySQL 8.0. Test je applicatie op compatibiliteit met het gekozen DBMS. Vergeet ook vooral niet te checken tot wanneer de support van je DBMS loopt.

2. Server-setup

Er gaat niets boven een vers geïnstalleerde server. Daarbij maakt het niet uit of je het over een Linux- of een Windows-omgeving hebt. Heb je de mogelijkheid, richt dan een nieuwe server in voor je gaat centraliseren. Dit zal je meer brengen dan wanneer je met je oude server aan de slag gaat. Bepaal eerst hoeveel CPU, RAM en opslagruimte je nodig hebt. Let wel: het kan per besturingssysteem verschillen hoeveel van deze resources gebruikt. Om in de toekomst je besturingssysteem en DBMS makkelijk te kunnen upgraden, is het handig om de datadirectory onafhankelijk te maken van de overige filesystems.

3. Besturingssysteem

Kies een passend besturingssysteem, veel open-source-software is ontwikkeld op een specifiek besturingssysteem en vervolgens compatible gemaakt voor andere besturingssystemen, bijvoorbeeld geschreven op RedHat en geschikt gemaakt voor Fedora of Windows. Zowel bij het besturingssysteem als het DBMS is het belangrijk om rekening te houden met de end-of-life-support. Linux heeft veel voordelen en is vaak ook voordeliger dan Windows. Maar misschien ben je wel afhankelijk van Windows?

4. Encryptie 

Maak je gebruik van encryptie binnen je database-omgeving? Dan is het zeker van belang om te bepalen of dit wel nodig is. Is dat het geval, check dan of je applicaties ermee om kunnen gaan als je databases encryptie gebruiken.

5. Characterset

Denk na of je kiest voor UFT8 of Latin1 en hoofdlettergevoelig of -ongevoelig en controleer of je applicaties wel met de door jou gekozen optie om kunnen gaan.

6. Datum- en tijdvermelding

In Nederland is de ‘datetime’ vaak YYYY-MM-DD HH:MM:SS, maar in de Verenigde Staten wordt meestal YYYY-DD-MM gebruikt voor data. Als je gaat centraliseren, zou je erachter kunnen komen dat je jaartallen kloppen, maar dat je records wel heel vaak in december – de twaalfde maand van het jaar – voorkomen. Oeps! Als je probeert Amerikaanse data in een Nederlands formaat te zetten, dan worden de dagen in het veld voor de maand gezet. Alle dagen boven de 12e van de maand worden dan teruggezet naar 12. Dit wil je natuurlijk voorkomen. Check welke datetime wordt gebruikt en als het nodig is, moet er eerst een conversie plaatsvinden voor je de data naar de nieuwe server overzet.

Let’s go!

Goed, je hebt je keuzes gemaakt. Je gaat voor een Percona Server for MySQL8.0. De server is ingericht met CentOS7 en voorzien van genoeg recources. Let’s go! Maak een back-up van je databases en restore deze op de nieuwe server. Is het mogelijk om een los schemadump te maken zoals bij MySQL, doe dat dan vooral. 

Alternatief

Ho, maar wacht eens even! Dit betekent dat je te maken krijgt met downtime! Dat kost veel te veel geld. Je business draait 24/7, is er geen alternatief? Jawel, die is er, namelijk data-forwarding zoals met een databasecluster. Bij het opzetten van een cluster, met daarbij de huidige omgeving als primair en de nieuwe server als secondair, kan je op die manier je data overzetten. Zodra de nieuwe server gesynchroniseerd is, routeer je de applicatie naar de nieuwe server en voer je een fail-over uit op databaselevel zodat de nieuwe server primair is en ernaar geschreven kan worden.

Budget over

MySQL cluster met ProxySQL voor load-balancingCentralisatie is een feit. Wat zou je nog kunnen doen om je omgeving stabieler te maken? Je hebt op kosten bespaard door van zeven servers naar één te gaan, dus er is wat budget over. Meer CPU? Meer RAM? Ondanks dat CPU en RAM zeker essentieel zijn, is er nog iets dat belangrijker kan zijn. Heb je al eens gedacht aan een databasecluster? Hiermee zet je twee identieke servers op, waarbij er één primair is en de ander secundair. Als je primaire server uitvalt kan de secundaire server de nieuwe primaire server worden en blijft jouw omgeving actief en zullen je klanten geen outage ervaren. Een bijkomend voordeel met een cluster is dat je alle leesacties kunt routeren naar de secundaire server.

In het kort

Centraliseren helpt je dus met het beheersbaar maken van zowel je serveromgeving als je database-instances. Je bespaart op resource- en licentiekosten. Welke keus je ook maakt voor je nieuwe omgeving, zorg ervoor dat je applicatie compatible is. Centraliseer door middel van back-up en recovery of door middel van een dataforward naar de nieuwe server, zoals met het opzetten van een databasecluster.

Ben je er klaar voor?

Nu rest er nog maar één vraag: ben jij klaar om te gaan centraliseren?! Neem gerust contact met ons  op, we leren je graag kennen.

Andere blogs over MySQL

Help! MySQL groeit uit mijn jasje - deel 1

Gas geven met MySQL - deel 2

Winst boeken met database performance tuning

Terug naar Blogoverzicht

 

Reageer