MariaDB Server biedt asynchrone en synchrone replicatie. Het kan worden ingesteld om een multi-source replicatie te hebben of met een multi-master setup.
Voor een lees- en schrijfintensieve toepassing is een master-slave-configuratie gebruikelijk, maar deze kan verschillen op basis van de onderliggende stapel die nodig is om een databaseomgeving met hoge beschikbaarheid te bouwen.
Het hebben van een master-slave-replicatie-configuratie voldoet mogelijk niet aan uw behoeften, vooral in een productieomgeving. Een MariaDB-server alleen (master-slave-installatie) is niet voldoende om hoge beschikbaarheid te bieden, omdat deze nog steeds een single point of failure (SPOF) heeft.
MariaDB heeft een enterprise-product (MariaDB Platform) geïntroduceerd om dit probleem met hoge beschikbaarheid aan te pakken. Het bevat verschillende componenten:een enterprise-versie van MariaDB, MariaDB ColumnStore, MaxScale en lichtgewicht MariaDB Connectors. Vergeleken met andere leveranciers met hetzelfde aanbod van bedrijfsoplossingen, kan het een kosteneffectieve optie zijn, maar niet iedereen heeft dit niveau van complexiteit nodig.
In deze blog laten we u zien hoe u MariaDB Server gebruikt met behulp van replicatie in een omgeving met hoge beschikbaarheid, met de optie om te kiezen uit alle gratis tools of onze kostenefficiënte beheersoftware om te draaien en bewaak uw MariaDB Server-infrastructuur.
MariaDB High-Availability Topology Setup
Een gebruikelijke setup voor een master-slave-topologie met MariaDB Server maakt gebruik van een asynchrone of synchrone benadering waarbij slechts één master schrijfbewerkingen ontvangt, en repliceert vervolgens de wijzigingen naar de slaves, zoals in het onderstaande diagram:
Maar nogmaals, dit biedt geen hoge beschikbaarheid en heeft een single-point-of-failure. Als de master sterft, functioneert uw applicatieclient niet meer. Nu moeten we de stapel toevoegen om een auto-failover-mechanisme te hebben om SPOF te vermijden en ook om taakverdeling te bieden voor het splitsen van lees-schrijfbewerkingen en op een round-robin-manier. Dus voor nu zullen we het type topologie hebben,
Deze topologie biedt nu meer veiligheid in termen van SPOF. MaxScale zal de lees- en schrijfsplitsing doen over de databaseknooppunten van uw master tegen de slaven. MaxScale doet een perfecte aanpak bij het omgaan met dit soort instellingen. MaxScale heeft ook ingebouwde automatische detectie. Dus welke veranderingen er ook optreden in de status van uw databaseknooppunten, het zal het detecteren en ernaar handelen. MaxScale heeft de mogelijkheid om een failover of zelfs een omschakeling uit te voeren. Om meer te weten over het failover-mechanisme, lees onze vorige blog die het mechanisme van MariaDB MaxScale-failover aanpakt.
Houd er rekening mee dat het MaxScale-failovermechanisme met MariaDB Monitor ook zijn beperkingen heeft. Het kan het beste alleen worden toegepast voor een master-slave-opstelling zonder al te ingewikkelde opstelling. Dit betekent dat een master-master-configuratie niet wordt ondersteund. MaxScale heeft echter meer te bieden. Het zorgt niet alleen voor wat taakverdeling omdat het lees-schrijfsplitsingen uitvoert, het heeft ook een ingebouwde SmartRouter die de query naar het meest performante knooppunt stuurt. Hoewel dit niet de functie van hoge beschikbaarheid toevoegt, maar het helpt de knooppunten vast te lopen in het verkeer en te voorkomen dat bepaalde databaseknooppunten ondermaats presteren, wat kan leiden tot time-outs of voor een totaal niet-beschikbare server die wordt veroorzaakt door een hoge resource-intensieve activiteit aan de gang .
Eén ding als waarschuwing bij het gebruik van MaxScale is dat ze BSL (Business Source LIcense) gebruiken. Mogelijk moet u de veelgestelde vragen lezen voordat u deze software gebruikt.
Een andere optie om uit te kiezen is een handiger aanpak. Het kan voor u kostenefficiënt zijn om ClusterControl te gebruiken en proxy's in het midden te hebben met HaProxy, MaxScale of ProxySQL, waarvoor de laatste kan worden geconfigureerd van lichtgewicht tot een configuratie op productieniveau die routering opvraagt, queryfiltering, firewall of beveiliging. Zie de afbeelding hieronder:
Daar bovenop zit de ClusterControl. ClusterControl is opgezet met een hoge beschikbaarheid, d.w.z. CMON HA. Als alternatief kan de proxylaag worden gekozen uit HaProxy - een zeer lichtgewicht optie om uit te kiezen, MaxScale, zoals eerder vermeld, of ProxySQL met een meer verfijnde set parameters als u meer flexibiliteit en configuratie wilt, ideaal voor een grootschalige productie opstelling. ClusterControl zal de automatische detectie afhandelen in termen van de gezondheidsstatus van de knooppunten, met name de master die het hoofdknooppunt is om te bepalen of een failover vereist is of niet. Dit kan nu meer zelfvoorzienend zijn, maar het brengt meer kosten met zich mee vanwege een aantal knooppunten die nodig zijn om deze setup te implementeren en ook door het gebruik van ClusterControl auto-failover die van toepassing is op onze geavanceerde en enterprise-licentie. Maar aan de andere kant biedt het u alle veiligheid, beveiliging en observeerbaarheid voor uw database-infrastructuur. Het is eigenlijk meer een goedkope bedrijfsimplementatie in vergelijking met de beschikbare oplossingen op de wereldmarkt.
Uw MariaDB Master-Slave-replicatie inzetten voor hoge beschikbaarheid
Laten we aannemen dat je een bestaande master-slave-configuratie van MariaDB hebt. Voor dit voorbeeld gebruiken we ClusterControl met behulp van de gratis community-editie die u gratis kunt installeren en gebruiken. Het maakt uw werk eenvoudig en snel op te zetten. Om dit te doen, hoeft u alleen uw bestaande MariaDB-replicatiecluster te importeren. Bekijk onze vorige blog over het beheren van MariaDB met ClusterControl. Voor deze blog heb ik aanvankelijk de volgende instellingen als mijn MariaDB-replicatiecluster, zoals hieronder te zien is:
Laten we nu MaxScale hier gebruiken als een alternatieve oplossing van MariaDB Platform, dat ook biedt een hoge beschikbaarheid. Om dat te doen, is het heel gemakkelijk te gebruiken met ClusterControl met slechts een paar klikken, u kunt vervolgens uw MaxScale instellen die bovenop uw bestaande MariaDB-replicatiecluster draait. Om dat te doen, gaat u gewoon naar Beheren → Load Balancer → MaxScale, en u kunt de juiste waarden instellen en opgeven, zoals hieronder te zien is,
Activeer of klik vervolgens op het selectievakje om te selecteren welke servers moeten worden toegevoegd als onderdeel van uw MaxScale-bewaking. Zie hieronder,
Ervan uitgaande dat u meer dan één MaxScale-knooppunt moet toevoegen, herhaalt u gewoon de dezelfde stappen.
Ten slotte zullen we Keepalive instellen om onze MaxScale-knooppunten altijd beschikbaar te houden wanneer dat nodig is. Dit gaat gewoon heel snel met slechts eenvoudige stappen met ClusterControl. Nogmaals, je moet naar Beheren → Load Balancer gaan, maar selecteer in plaats daarvan Keepalive,
Zoals je hebt gemerkt, heb ik mijn Keepalive samen met MaxScale geplaatst op hetzelfde knooppunt van mijn slaaf (192.168.10.30). Terwijl aan de andere kant de tweede (2e) Keepalive draait op 192.168.10.40 samen met Maxscale op dezelfde host.
Het resultaat van de topologie is klaar voor productie, wat u queryrouting, hoge beschikbaarheid en automatische failover kan bieden die is uitgerust met uitgebreide monitoring en observatiemogelijkheden met behulp van ClusterControl. Zie hieronder,
Conclusie
Het gebruik van MariaDB Server-replicatie alleen biedt u geen hoge beschikbaarheid. Door tools van derden uit te breiden en te gebruiken, beschikt u over een zeer hoge beschikbaarheid van uw databasestack door niet alleen te vertrouwen op MariaDB-producten of zelfs MariaDB Platform te gebruiken.
Er zijn manieren om dit te bereiken en kosteneffectiever te beheren. Toch is er een enorm verschil om gebruik te maken van deze oplossingen die op de markt beschikbaar zijn, zoals ClusterControl, omdat het u snelheid, minder gedoe en natuurlijk de ultieme observatie biedt met realtime en up-to-date gebeurtenissen, niet alleen de gezondheid maar ook de gebeurtenissen die plaatsvinden in uw databasecluster.