sql >> Database >  >> RDS >> Mysql

Hoge beschikbaarheid met een klein budget - Een MySQL Galera-cluster met minimaal twee knooppunten implementeren

We krijgen regelmatig vragen over het opzetten van een Galera-cluster met slechts 2 nodes.

De documentatie vermeldt duidelijk dat u minimaal 3 Galera-knooppunten moet hebben om netwerkpartitionering te voorkomen. Maar er zijn enkele geldige redenen om een ​​implementatie met 2 knooppunten te overwegen, bijvoorbeeld als u een hoge beschikbaarheid van de database wilt bereiken, maar een beperkt budget hebt om te besteden aan een derde databaseknooppunt. Of misschien draait u Galera in een ontwikkel-/sandboxomgeving en geeft u de voorkeur aan een minimale installatie.

Galera implementeert een op quorum gebaseerd algoritme om een ​​primaire component te selecteren waarmee het consistentie afdwingt. Het primaire onderdeel moet een meerderheid van stemmen hebben, dus in een systeem met 2 knooppunten zou er geen meerderheid zijn, wat resulteert in een gespleten brein. Gelukkig is het mogelijk om een ​​garbd (Galera Arbitrator Daemon) toe te voegen, een lichtgewicht stateless daemon die als een oneven node kan fungeren. Een fout van de arbiter heeft geen invloed op de clusterbewerkingen en er kan op elk moment een nieuwe instantie aan het cluster worden gekoppeld. Er kunnen meerdere arbiters in het cluster zitten.

ClusterControl biedt ondersteuning voor het implementeren van garbd op niet-databasehosts.

Normaal gesproken heeft een Galera-cluster ten minste drie hosts nodig om volledig functioneel te zijn, maar tijdens de implementatie zouden twee knooppunten voldoende zijn om een ​​primaire component te creëren. Dit zijn de stappen:

  1. Een Galera-cluster van twee knooppunten implementeren,
  2. Nadat het cluster is geïmplementeerd door ClusterControl, voegt u garbd toe aan het ClusterControl-knooppunt.

Je zou de onderstaande setup moeten krijgen:

De Galera-cluster implementeren

Ga naar het gedeelte ClusterControl Deploy om het cluster te implementeren.

Na het selecteren van de technologie die we willen inzetten, moeten we Gebruiker, Sleutel of Wachtwoord en poort specificeren om via SSH verbinding te maken met onze hosts. We hebben ook de naam nodig voor ons nieuwe cluster en als we willen dat ClusterControl de bijbehorende software en configuraties voor ons installeert.

Na het instellen van de SSH-toegangsinformatie, moeten we de leverancier/versie selecteren en moeten we het beheerderswachtwoord, de datadir en de poort van de database definiëren. We kunnen ook specificeren welke repository we moeten gebruiken.

Hoewel ClusterControl u waarschuwt dat een Galera-cluster een oneven aantal knooppunten nodig heeft, voegt u slechts twee knooppunten toe aan het cluster.

Als u een Galera-cluster implementeert, wordt een ClusterControl-taak geactiveerd die kan worden gecontroleerd op de pagina 'Taken'.

Installeer Garbd

Nadat de implementatie is voltooid, installeert u garbd op de ClusterControl-host. We hebben de optie om garbd te implementeren vanuit ClusterControl, maar deze optie werkt niet als we het op dezelfde ClusterControl-server willen implementeren. Dit is om problemen met de databaseversies en pakketafhankelijkheden te voorkomen.

We moeten het dus handmatig installeren en vervolgens garbd importeren in ClusterControl.

Laten we eens kijken naar de handmatige installatie van Percona Garbd op CentOS 7.

Maak het Percona-repositorybestand aan:

$ vi /etc/yum.repos.d/percona.repo
[percona-release-$basearch]
name = Percona-Release YUM repository - $basearch
baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0
[percona-release-noarch]
name = Percona-Release YUM repository - noarch
baseurl = http://repo.percona.com/release/$releasever/RPMS/noarch
enabled = 1
gpgcheck = 0
[percona-release-source]
name = Percona-Release YUM repository - Source packages
baseurl = http://repo.percona.com/release/$releasever/SRPMS
enabled = 0
gpgcheck = 0

Installeer vervolgens het Percona XtraDB Cluster garbd-pakket:

$ yum install Percona-XtraDB-Cluster-garbd-57

Nu moeten we garbd configureren. Hiervoor moeten we het bestand /etc/sysconfig/garb bewerken:

$ vi /etc/sysconfig/garb
# Copyright (C) 2012 Codership Oy
# This config file is to be sourced by garb service script.
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.100.192:4567,192.168.100.193:4567"
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="Galera1"
# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
# GALERA_OPTIONS=""
# Log file for garbd. Optional, by default logs to syslog
# Deprecated for CentOS7, use journalctl to query the log for garbd
# LOG_FILE=""

Wijzig de parameter GALERA_NODES en GALERA_GROUP volgens de configuratie van de Galera-knooppunten. We moeten ook de regel # REMOVE THIS AFTER CONFIGURATION verwijderen voordat de service wordt gestart.

En nu kunnen we de kledingservice starten:

$ service garb start
Redirecting to /bin/systemctl start garb.service

Nu kunnen we de nieuwe garbd importeren in ClusterControl.

Ga naar ClusterControl -> Cluster selecteren -> Load Balancer toevoegen.

Selecteer vervolgens Garbd en importeer Garbd sectie.

Hier hoeven we alleen de hostnaam of het IP-adres en de poort van de nieuwe Garbd op te geven.

Het importeren van garbd zal een ClusterControl-taak activeren die kan worden gecontroleerd op de pagina Taken. Als je klaar bent, kun je controleren of garbd actief is met een groen vinkje in de bovenste balk:

Dat is het!

Ons minimale Galera-cluster met twee knooppunten is nu klaar!


  1. Kolom toevoegen of verwijderen met behulp van GUI in SQL Server - SQL Server / T-SQL-zelfstudie, deel 39

  2. Hoe Tablespace in Oracle SQL Developer te controleren?

  3. Hoe ontsnap ik aan gereserveerde woorden die als kolomnamen worden gebruikt? MySQL/tabel maken

  4. SQLite introduceert de UNIXEPOCH()-functie