sql >> Database >  >> RDS >> MariaDB

MariaDB Cluster 10.5 implementeren voor hoge beschikbaarheid

 

MariaDB Cluster 10.5-implementatie wordt ondersteund in ClusterControl sinds versie 1.8.1.

MariaDB 10.5 is uitgerust met:

  • Meer gedetailleerde rechten

  • InnoDB prestatieverbeteringen

  • Volledige GTID-ondersteuning voor Galera Cluster

  • Meer metadata voor replicatie en binaire logboeken

  • Meer SQL-syntaxisinstructies (RETURNING-instructie naar INSERT, EXCEPT ALL en INTERSECT ALL, …)

  • Prestatieschema-updates om overeen te komen met MySQL 5.7

  • De S3-opslagengine

Je kunt verder kijken op onze vorige blog 

Voor meer details over deze specifieke versie-release, bekijk wat er nieuw is in MariaDB 10.5? Enkele van de belangrijkste wijzigingen van versie 10.4 tot 10.5 zijn:

  • GTID-consistentie 

  • Clusterinconsistentie/foutstemming 

  • niet-blokkerende DDL-bewerkingen (alleen beschikbaar op enterprise-versie)

  • Black box (alleen beschikbaar op enterprise-versie) 

  • De Galera wsrep-bibliotheek geüpgraded, waarvoor 26.4.6 de nieuwste versie is

Aanvankelijk werd XA-transactieondersteuning verwacht voor deze release (verwar dit niet, want XA-transacties worden ondersteund door MariaDB Server maar niet op Galera Cluster). Vanwege enkele prestatie-implicaties ondersteunt MariaDB Galera Cluster echter geen XA-transacties.

In deze blog bespreken we hoe MariaDB Cluster 10.5 kan worden ingezet voor hoge beschikbaarheid.

MariaDB-cluster voor hoge beschikbaarheid

De MariaDB-cluster is in wezen een Galera-cluster die de MariaDB-implementatie gebruikt als de databaselaag om te communiceren met de InnoDB- of XtraDB-engine. MariaDB Galera Cluster is een vrijwel synchroon multi-mastercluster voor MariaDB. Het is alleen beschikbaar onder Linux en ondersteunt de XtraDB/InnoDB-opslagengines (hoewel er experimentele ondersteuning is voor MyISAM — zie de systeemvariabele wsrep_replicate_myisam). Wanneer Galera Cluster wordt gebruikt, kunnen database-lees- en schrijfbewerkingen naar elk knooppunt worden geleid. Elk individueel knooppunt kan verloren gaan zonder onderbreking van de operaties en zonder gebruik te maken van complexe failover-procedures.

Met de aard van Galera aangepast binnen MariaDB Cluster, is het een oplossing met hoge beschikbaarheid met synchrone replicatie, failover en hersynchronisatie. Het biedt de voordelen van geen gegevensverlies, geen slaafvertraging, lees- en schrijfschaalbaarheid en hoge beschikbaarheid in verschillende datacenters.

MariaDB Cluster 10.5 implementeren

MariaDB biedt een duidelijke en gemakkelijke installatie voor het installeren van je MariaDB Cluster 10.5. Het handmatige proces kan vervelend zijn, maar met geautomatiseerde scripts die door MariaDB worden geleverd, kunnen repositories worden ingesteld in overeenstemming met uw doeldatabaseversie, OS-type en OS-versie.

Voor deze oefening heb ik de volgende 3-node Galera Cluster-configuratie met de volgende IP-adressen:192.168.40.210, 192.168.40.220, 192.168.40.230.

Uw opslagplaats instellen

Zoals eerder vermeld, heeft MariaDB een script met de naam mariadb_repo_setup, en het is gemakkelijk te gebruiken. U kunt de doelversie van uw database, het besturingssysteemtype en uw besturingssysteemversie opgeven.

Ik installeer bijvoorbeeld met EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

of installeren in Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Houd er rekening mee dat bij het gebruik van het mariadb_repo_setup-script het pakket apt-transport-https als afhankelijkheid vereist is. Installeer dit pakket dus eerst voordat u kunt profiteren van het script mariadb_repo_setup.

apt update

apt install apt-transport-https

Voer nu de opdracht uit naar uw drie knooppunten volgens hun besturingssysteem. Natuurlijk moet de MariaDB-versie 10.5 zijn.

MySQL-configuratie instellen

Het configuratiebestand is afhankelijk van uw serverbronnen, het type serveromgeving en het toegewezen IP-adres. Voor deze blog kunt u deze productieklare MariaDB Cluster/PXC-configuratie gebruiken die we gebruikten om in onze Percona XtraDB Cluster/MariaDB Cluster-databases te implementeren met ClusterControl. Opmerkelijke variabelen die u nodig heeft of die aan verandering onderhevig zijn, zijn de volgende:

  • innodb_buffer_pool_size — Stel de bufferpool in van 70% - 80% beschikbaar RAM-geheugen van uw server

  • wsrep_provider — Pad van de door Galera gecompileerde bibliotheek. Voor Enterprise Linux is het pad /usr/lib64/galera-4/libgalera_smm.so. Terwijl Debian/Ubuntu in /usr/lib/galera/libgalera_smm.so staat.

  • wsrep_node_address — Dit is het IP-adres van het knooppunt

  • wsrep_sst_method — U kunt het ofwel wijzigen, maar we raden u aan mariabackup te gebruiken. Mogelijke waarden die u kunt kiezen zijn rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — De naam van uw MariaDB-cluster. Het moet identiek zijn aan al je knooppunten in een enkele MariaDB-cluster.

  • wsrep_cluster_address — Dit bevat de adressen van uw knooppunten binnen het cluster. Het moet een geldig IP-adres, hostnaam of FQDN zijn.

  • wsrep_node_name — De naam van uw node. De naam kan in wsrep_sst_donor worden gebruikt als voorkeursdonor. Merk op dat meerdere nodes in een cluster dezelfde naam kunnen hebben.

Voor het uitvoeren van SST kunnen de gebruiker en het wachtwoord voor de volgende secties [mysqldump], [xtrabackup] en [mysqld] desgewenst veranderen. Laten we het voor deze oefening simpel houden, en je kunt de waarden gewoon laten zoals ze zijn.

Kopieer nu het configuratiebestand en plaats het in /etc/my.cnf. Doe dit voor al je drie Galera-knooppunten.

Vereiste pakketten installeren

Installeer de pakketten voor alle drie de Galera-knooppunten. Volg de onderstaande opdracht op basis van uw doel-besturingssysteemomgeving.

Voor RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Voor Debian/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Zodra de installatie is voltooid, stopt u het MariaDB-proces en initialiseert u het cluster als een enkel knooppunt. Dit zal uw Galera-cluster opstarten. In dit stadium voer ik het uit op knooppunt 192.168.40.210.

$ /usr/bin/galera_new_cluster

SST/IST-gebruiker maken

Maak de back-upgebruiker aan, die voor SST of IST zal worden gebruikt. Voer de volgende SQL-instructies hieronder alleen uit op het eerste knooppunt waarmee u het cluster hebt gestart. In dit stadium heb ik het uitgevoerd in node 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

Op dit moment zijn we al ingesteld en klaar om de resterende knooppunten te verbinden.

Start de MariaDB-server

Nu hebben we het eerste knooppunt al ingesteld. We zijn klaar om de resterende knooppunten te verbinden. Start gewoon de MariaDB-service. Voer gewoon de onderstaande opdracht uit:

systemctl start mariadb

Voer de opdracht één voor één uit voor de resterende knooppunten. Op dit moment zijn alle knooppunten gesynchroniseerd.

Steroïden toevoegen voor uw MariaDB-cluster 10.5 voor hoge beschikbaarheid

Waarschijnlijk voldoet het implementeren van MariaDB Cluster 10.5 voor hoge beschikbaarheid niet aan uw behoeften in een productieconfiguratie. Het toevoegen van meer steroïden, zoals het installeren van HAProxy samen met Keepalive voor uw redundantie, zorgt voor meer hoge beschikbaarheid voor uw database-omgeving.

Het instellen van HAProxy en Keepalived om de gewenste topologie en omgeving te verkrijgen, kan meer gedoe opleveren. U kunt dit echter automatiseren met ClusterControl. Met ClusterControl kunt u uw MariaDB Cluster 10.5 implementeren en meer oplossingen voor taakverdeling toevoegen, zoals ProxySQL, MaxScale of garbd. U kunt Keepalive aan uw cluster toevoegen om redundantie en auto-failover-oplossingen toe te voegen in geval van calamiteiten.

Je kunt een gratis proefversie van ClusterControl downloaden waarmee je deze HA-oplossingen kunt implementeren en je volledige databaseactiviteiten kunt beheren vanuit één enkel venster. We laten u zien hoe u uw MariaDB 10.5-cluster kunt implementeren met ClusterControl.

MariaDB 10.5 Cluster implementeren met ClusterControl

Als u ClusterControl eenmaal heeft geïnstalleerd, klikt u op het pictogram in de rechterbovenhoek en ziet u de implementatiewizard zoals hieronder.

Je kunt het eenvoudig instellen. Volg gewoon de reeks stappen op basis van de stroom van de gebruikersinterface.

HAProxy implementeren voor beheer van taakverdeling

Op dit moment neem ik aan dat je je MariaDB Cluster 10.5 helemaal hebt ingesteld. Laten we nu de HAProxy implementeren:

U kunt ook naar Beheren → Load Balancer → HAProxy gaan.

Selecteer of typ vervolgens het adres waar de HAProxy moet worden geïnstalleerd en selecteer uw Galera-knooppunten die door de HAProxy worden gecontroleerd. Zie onderstaand voorbeeld:

Voeg ten minste twee implementaties van HAProxy toe om meer beschikbaarheid toe te voegen. Telkens wanneer een van uw HAProxy uitvalt, wordt uw toepassing doorgestuurd naar het andere knooppunt dat nog steeds beschikbaar of online is. Dit is erg belangrijk, vooral bij het verwerken van database- of systeemupgrades, afgezien van catastrofale gebeurtenissen of rampen.

Keepalived implementeren

U gebruikt hetzelfde proces als hierboven om Keepalive te implementeren, zoals hieronder weergegeven:

Als je het hebt gemerkt, ik heb twee HAProxy-instanties waarvoor ik Keepalive zal installeren , die aanwezig zal zijn in elk knooppunt waar de HAProxy draait.

Uw MariaDB-cluster 10.5 voltooien met hoge beschikbaarheid

Nu we alles hebben ingesteld, zou je een omgeving moeten hebben die er als volgt uitziet:

Afronden

Deze configuratie voor uw MariaDB 10.5-cluster biedt u de voordelen van een hoge beschikbaarheid met meerdere negens. HAProxy biedt u meer mogelijkheden voor taakverdeling met zijn lees- en schrijfscheiding, en Keepalived zorgt ervoor dat in het geval dat een van uw HAProxy sterft, deze zal overgaan naar het volgende beschikbare knooppunt. Uw applicatie maakt alleen verbinding met het virtuele IP-adres (dat volgt op de VRRP) en vereist geen extra configuratie of configuratie.

Om nog meer flexibiliteit en lees-/schrijfscheiding toe te voegen door slechts in één poort te spelen, zou je HAProxy kunnen vervangen door ProxySQL. Het kan moeilijk zijn om een ​​perfecte setup voor hoge beschikbaarheid te bereiken, en elk heeft zijn nadelen. Het belangrijkste is echter dat er weinig tot geen uitvaltijd wordt bereikt.

Voor meer tips over het bouwen van een MariaDB-configuratie met hoge beschikbaarheid, bekijk dit stuk over het implementeren van MariaDB-replicatie.

Als u op de hoogte wilt blijven van databasetrends en best practices, schrijf u dan in voor onze nieuwsbrief en volg ons op Twitter en LinkedIn.


  1. PHP PDOException:SQLSTATE [HY093]:ongeldig parameternummer

  2. Op pglogische prestaties

  3. Teruggegeven record beperken van SQL-query in Oracle

  4. Installeer MySQL Workbench voor databasebeheer