sql >> Databasteknik >  >> RDS >> MariaDB

Hur man distribuerar MariaDB Cluster 10.5 för hög tillgänglighet

 

MariaDB Cluster 10.5-distribution har stöds i ClusterControl sedan version 1.8.1.

MariaDB 10.5 är utrustad med:

  • Fler detaljerade privilegier

  • InnoDB-prestandaförbättringar

  • Fullständigt GTID-stöd för Galera Cluster

  • Mer metadata för replikering och binära loggar

  • Fler SQL-syntaxsatser (RETURNING-sats för INSERT, EXCEPT ALL och INTERSECT ALL, …)

  • Uppdateringar av prestandaschema för att matcha MySQL 5.7

  • S3 Storage Engine

Du kan kolla vidare på vår tidigare blogg 

För mer information om den här versionen, kolla in vad som är nytt i MariaDB 10.5? Några av de viktigaste ändringarna från version 10.4 till 10.5 inkluderar:

  • GTID-konsistens 

  • Klusterinkonsekvens/felomröstning 

  • icke-blockerande DDL-operationer (endast tillgängligt på företagsversionen)

  • Black box (endast tillgängligt på företagsversionen) 

  • Uppgraderat sitt Galera wsrep-bibliotek, för vilket 26.4.6 är den senaste versionen

Initialt förväntades XA Transaction Support för den här utgåvan (förväxlas inte eftersom XA Transactions stöds av MariaDB Server men inte på Galera Cluster). Men på grund av vissa prestandaimplikationer stöder MariaDB Galera Cluster inte XA-transaktioner.

I den här bloggen kommer vi att diskutera hur man distribuerar MariaDB Cluster 10.5 för hög tillgänglighet.

MariaDB-kluster för hög tillgänglighet

MariaDB-klustret är i grunden ett Galera-kluster som använder MariaDB-implementeringen som databaslager för att samverka med InnoDB- eller XtraDB-motorn. MariaDB Galera Cluster är ett praktiskt taget synkront multi-master-kluster för MariaDB. Den är endast tillgänglig på Linux och stöder lagringsmotorerna XtraDB/InnoDB (även om det finns experimentellt stöd för MyISAM — se systemvariabeln wsrep_replicate_myisam). När Galera Cluster används kan databasläsning och skrivning dirigeras till vilken nod som helst. Varje enskild nod kan gå förlorad utan avbrott i driften och utan att använda komplexa failover-procedurer.

Med Galeras natur anpassad inom MariaDB Cluster är det en hög tillgänglighetslösning med synkron replikering, failover och omsynkronisering. Det ger fördelarna med ingen dataförlust, ingen slavfördröjning, läs- och skrivskalbarhet och hög tillgänglighet i olika datacenter.

Distribuera MariaDB Cluster 10.5

MariaDB ger en enkel och enkel installation för att installera ditt MariaDB Cluster 10.5. Den manuella processen kan vara tråkig, men med automatiserade skript som tillhandahålls av MariaDB kan förråd ställas in i enlighet med din måldatabasversion, OS-typ och OS-version.

För den här övningen har jag följande Galera Cluster-inställning med 3 noder med följande IP-adresser:192.168.40.210, 192.168.40.220, 192.168.40.230.

Konfigurera ditt arkiv

Som nämnts tidigare har MariaDB ett skript som heter mariadb_repo_setup, och det är lätt att använda. Du kan ange målversionen av din databas, OS-typen och din OS-version.

Till exempel installerar jag med 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

eller installera det i 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

Observera att när du använder skriptet mariadb_repo_setup, kräver det paketet apt-transport-https som ett beroende. Så installera det här paketet först innan du kan dra nytta av skriptet mariadb_repo_setup.

apt update

apt install apt-transport-https

Kör nu kommandot till dina tre noder enligt deras operativsystem. Naturligtvis måste MariaDB-versionen vara 10.5.

Ställ in MySQL-konfiguration

Konfigurationsfilen beror på dina serverresurser, typ av servermiljö och tilldelad IP-adress. För den här bloggen kan du använda denna produktionsklara MariaDB Cluster/PXC-konfigurationskonfiguration som vi använde för att distribuera i våra Percona XtraDB Cluster/MariaDB Cluster-databaser med ClusterControl. Anmärkningsvärda variabler som du behöver eller kan ändras är följande:

  • innodb_buffer_pool_size — Ställ in buffertpoolen från 70 % - 80 % tillgängligt RAM-minne på din server

  • wsrep_provider — Path of the Galera-kompilerade bibliotek. För Enterprise Linux ska sökvägen vara  /usr/lib64/galera-4/libgalera_smm.so. Medan Debian/Ubuntu finns i /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — Detta är nodens IP-adress

  • wsrep_sst_method — Antingen kan du ändra den, men vi rekommenderar att du använder mariabackup. Möjliga värden du kan välja är rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — Namnet på ditt MariaDB-kluster. Det måste vara identiskt med alla dina noder i ett enda MariaDB-kluster.

  • wsrep_cluster_address — Detta innehåller adresserna till dina noder i klustret. Det måste vara en giltig IP, värdnamn eller FQDN.

  • wsrep_node_name — Namnet på din nod. Namnet kan användas i wsrep_sst_donor som en föredragen donator. Observera att flera noder i ett kluster kan ha samma namn.

För att utföra SST kan användaren och lösenordet för följande avsnitt [mysqldump], [xtrabackup] och [mysqld] ändras om du vill. För den här övningen, låt oss hålla det enkelt, och du kan bara låta värdena vara som de är.

Kopiera nu konfigurationsfilen och placera den i /etc/my.cnf. Gör detta på alla dina tre Galera-noder.

Installera nödvändiga paket

Installera paketen för alla tre Galera-noderna. Följ kommandot nedan baserat på din mål-OS-miljö.

För RHEL/Rocky/AlmaLinux:

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

För Debian/Ubuntu:

sudo apt update

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

När installationen är klar, stoppa MariaDB-processen och initiera klustret som en enda nod. Detta kommer att starta upp ditt Galera-kluster. I det här skedet kör jag det på nod 192.168.40.210.

$ /usr/bin/galera_new_cluster

Skapa SST/IST-användare

Skapa backupanvändaren, som ska användas för SST eller IST. Kör endast följande SQL-satser nedan på den första nod som du har initierat klustret på. I det här skedet har jag kört det i nod 192.168.40.210.

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

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

Vid det här laget är vi redan konfigurerade och redo att ansluta de återstående noderna.

Starta MariaDB-servern

Nu har vi redan ställt in den första noden. Vi är redo att ansluta de återstående noderna. Bara starta MariaDB-tjänsten. Kör bara kommandot nedan:

systemctl start mariadb

Kör kommandot för de återstående noderna en i taget. Vid det här laget är alla noder synkroniserade.

Lägga till steroider för ditt MariaDB-kluster 10.5 för hög tillgänglighet

Antagligen kanske det inte räcker för dina behov i en produktionsinstallation att distribuera MariaDB Cluster 10.5 för hög tillgänglighet. Att lägga till fler steroider, som att installera HAProxy tillsammans med Keepalved för din redundans, kommer att ge högre tillgänglighet för din databasmiljö.

Att ställa in HAProxy och Keepalved för att få önskad topologi och miljö kan skapa mer krångel. Du kan dock automatisera detta med ClusterControl. Med ClusterControl kan du distribuera ditt MariaDB Cluster 10.5 och lägga till fler lösningar för lastbalansering, som ProxySQL, MaxScale eller garbd. Du kan lägga till Keepalved till ditt kluster för att lägga till redundans och automatiska överstyrningslösningar i händelse av en katastrof.

Du kan ladda ner en gratis testversion av ClusterControl som låter dig distribuera dessa HA-lösningar och hantera hela din databasverksamhet från en enda glasruta. Vi kommer att gå igenom hur du distribuerar ditt MariaDB 10.5-kluster med ClusterControl.

Distribuera MariaDB 10.5 Cluster med ClusterControl

När du har installerat ClusterControl, klicka på ikonen i det övre högra hörnet, så ser du distributionsguiden precis som nedan.

Du kan enkelt ställa in det. Följ bara stegen baserat på flödet i användargränssnittet.

Distribuera HAProxy för lastbalansering

Vid det här laget skulle jag anta att du har ditt MariaDB Cluster 10.5 konfigurerat. Låt oss nu distribuera HAProxy:

Alternativt kan du gå till Hantera → Load Balancer → HAProxy.

Välj eller skriv sedan adressen där HAProxy ska installeras och välj dina Galera-noder som kommer att övervakas av HAProxy. Se exemplet nedan:

Lägg till minst två distributioner av HAProxy för att lägga till mer tillgänglighet. Närhelst en av dina HAProxy går ner kommer din applikation att dirigeras till den andra noden som fortfarande är tillgänglig eller online. Detta är mycket viktigt, särskilt när du hanterar databas- eller systemuppgraderingar, bortsett från katastrof- eller katastrofhändelser.

Distribuera Keepalived

Du kommer att använda samma process ovan för att distribuera Keepalived, som visas nedan:

Om du märkte det har jag två HAProxy-instanser som jag kommer att installera Keepalived för , som ska finnas i varje nod där HAProxy körs.

Avsluta ditt MariaDB-kluster 10.5 med hög tillgänglighet

Nu när vi har allt inrättat bör du ha en miljö som ser ut så här:

Avsluta

Denna inställning för ditt MariaDB 10.5-kluster ger dig fördelarna med att uppnå hög tillgänglighet med flera nior. HAProxy ger dig fler lastbalanseringsmöjligheter med sin läs- och skrivseparation, och Keepalved säkerställer att i fall en av dina HAProxy dör, kommer den att falla över till nästa tillgängliga nod. Din applikation kommer bara att ansluta till den virtuella IP-adressen (som följer VRRP) och kommer inte att kräva extra konfiguration eller inställning.

För att lägga till ännu mer flexibilitet och läs/skrivseparation genom att bara spela i en port kan du ersätta HAProxy med ProxySQL. Att uppnå en perfekt installation för hög tillgänglighet kan vara svårt, och var och en har sina nackdelar. Men det viktigaste är att låg eller ingen stilleståndstid uppnås.

För fler tips om hur du bygger en högtillgänglig MariaDB-installation, kolla in den här delen om att distribuera MariaDB-replikering.

Om du vill hålla dig uppdaterad om databastrender och bästa praxis, prenumerera på vårt nyhetsbrev och följ oss på Twitter och LinkedIn.


  1. Vad är fördelen med zerofill i MySQL?

  2. Hantera transaktioner i MySQL

  3. Komma igång med Cloud Firestore för iOS

  4. Hantera e-postbekräftelse under registrering i kolv