Hoe een MariaDB Galera-cluster op Ubuntu 20.04 instellen
Het opzetten van een MariaDB-cluster met Galera Cluster verbetert de betrouwbaarheid en vereenvoudigt het schalen van uw database. In onze tutorial laten we u zien hoe u een Galera-cluster op Ubuntu 20.04 installeert.
De vereisten voor een Galera Cluster MariaDB
Om een MariaDB Galera-cluster op Ubuntu 20.04 te installeren, moet u aan de volgende vereisten voldoen:
- Meerdere servers: Er zijn minimaal drie servers of virtuele machines nodig om een cluster te bouwen. Alle servers moeten zich op hetzelfde netwerk bevinden.
- Rootrechten: U hebt root-toegang of ten minste beheerdersrechten op de servers nodig.
Hoe Galera Cluster MariaDB stap voor stap op Ubuntu 20.04 te installeren
Een MariaDB Galera-cluster is een praktische databaseoplossing die hoge beschikbaarheid, gegevensintegriteit en schaalbaarheid biedt voor veeleisende toepassingen. In deze stapsgewijze handleiding begeleiden we u bij het opzetten van een MariaDB Galera-cluster op Ubuntu 20.04. Voordat u begint, moet u ervoor zorgen dat u ten minste drie servers of virtuele machines beschikbaar hebt om het cluster op te zetten.
Stap 1: Pakketten bijwerken
U moet eerst uw Ubuntu-systeem updaten naar de nieuwste versie. Dit is essentieel om te zorgen dat u beschikt over de meest recente pakketten en beveiligingsupdates.
Open een terminal en voer de volgende opdracht uit om de pakketbronnen bij te werken:
sudo apt updateshellInstalleer alle beschikbare updates:
sudo apt upgrade -yshellWe raden ook aan om verouderde of ongebruikte pakketten te verwijderen om de servers op te schonen:
sudo apt autoremove -yshellStap 2: Installeer MariaDB op de servers
Installeer nu MariaDB op al uw servers. Vanaf versie 10.1 worden de Galera-pakketten meegeleverd met MariaDB-servers.
sudo apt install mariadb-servershellNa de installatie kunt u de MariaDB-service starten:
sudo systemctl start mariadbshellGebruik de volgende opdracht om MariaDB zo in te stellen dat het automatisch wordt geactiveerd telkens wanneer het systeem opnieuw wordt opgestart:
sudo systemctl enable mariadbshellControleer of MariaDB actief is:
sudo systemctl status mariadbshellU moet ook enkele basisbeveiligingsinstellingen uitvoeren en de database configureren. Start hiervoor de installatiewizard:
sudo mysql_secure_installationshellDe wizard begeleidt u door de stappen, zoals het instellen van een root-wachtwoord, het verwijderen van anonieme gebruikers of het verwijderen van de testdatabase.
Enter current password for root (enter for none):
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] YshellHet script vraagt eerst om het huidige root-wachtwoord. Als u MariaDB voor het eerst op Ubuntu 20.04 installeert, drukt u gewoon op Enter en voert u vervolgens een nieuw wachtwoord in.
Stap 3: Configureer Galera Cluster MariaDB-knooppunten
Maak een cnf -bestand aan in de map /etc/mysql/conf.d op elke node om de Galera-specifieke instellingen te definiëren.
nano /etc/mysql/conf.d/galera.cnfshellDit bestand bevat algemene database-instellingen, zoals het binaire protocolformaat en de standaardopslagengine. Het bevat ook configuraties voor het Galera-cluster, waaronder de clusternaam en het clusteradres.
Voeg de volgende regels toe voor het eerste knooppunt:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_1-ip-address"
wsrep_node_name="node_1"shell- Algemene database-instellingen: Dit omvat instellingen zoals
binlog_format=ROWvoor het formaat van de binaire logboeken endefault-storage-engine=innodbvoor de standaard opslagengine. - Galera-providerconfiguratie: instellingen zoals
wsrep_on=ONworden gebruikt om Galera-replicatie in te schakelen enwsrep_provider=/usr/lib/galera/libgalera_smm.soom het pad naar de Galera-bibliotheek op te geven. - Galera-clusterconfiguratie: Dit omvat de clusternaam (
wsrep_cluster_name) en het clusteradres (wsrep_cluster_address), dat de IP-adressen of hostnamen van de knooppunten in het cluster bevat. - Galera-synchronisatieconfiguratie: configureert de methode voor de State Snapshot Transfer (SST), bijvoorbeeld
wsrep_sst_method=rsync. - Galera-knooppuntconfiguratie: definieert het IP-adres of de hostnaam van het huidige knooppunt (
wsrep_node_address) en de naam van het knooppunt (wsrep_node_name).
Nadat u het bestand hebt opgeslagen, maakt u een bestand voor het tweede knooppunt:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_2-ip-address"
wsrep_node_name="node_2"shellGa nu verder met het laatste knooppunt:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://node_1-ip-address,node_2-ip-address,node_3-ip-address"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="node_3-ip-address"
wsrep_node_name="node_3"shellStap 4: Wijzig de firewall op servers
Aangezien de knooppunten via specifieke poorten met elkaar communiceren, moet u de firewallinstellingen aanpassen.
Open de volgende poorten in uw firewall:
- Poort 3306: Dit is de standaardpoort voor MariaDB. Deze wordt gebruikt voor databasecommunicatie en -verzoeken.
- Galera-poorten: Naast de standaardpoort 3306 gebruikt Galera ook andere poorten voor interne communicatie tussen de knooppunten. Het standaardbereik voor Galera-poorten is meestal 4567, 4568 en 4444 voor de State Snapshot Transfer (SST).
U kunt de firewallinstellingen op uw Ubuntu-server definiëren met de volgende opdracht:
sudo ufw allow 3306,4567,4568,4444/tcp
sudo ufw allow 4567/udpshellStap 5: Start Galera Cluster MariaDB
Stop de MariaDB-service als deze al actief is:
sudo systemctl stop mariadbshellDit commando start de MariaDB-server en initialiseert een nieuwe Galera-cluster op het eerste knooppunt:
sudo galera_new_clustershellControleer het aantal knooppunten in het cluster:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellU zou de volgende uitvoer moeten krijgen:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 1 |
+--------------------------+------------ -+shellHet eerste knooppunt is succesvol gestart.
Activeer het tweede knooppunt:
systemctl start mariadbshellControleer of het aantal knooppunten is toegenomen:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellIn de console zien we:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 2 |
+--------------------------+--------------+shellNu beginnen we met het derde knooppunt:
systemctl start mariadbshellControleer of het knooppunt correct werkt:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"shellEr zouden nu drie knooppunten in het cluster moeten zijn:
+---------------------------+-------------+
| Variable_name | Value |
+--------------------------+--------------+
| wsrep_cluster_size | 3 |
+--------------------------+------------ -+shellStap 6: Test de replicatie
Zorg ervoor dat u verbinding kunt maken met elk knooppunt in het cluster. Gebruik de MariaDB-client om in te loggen als rootgebruiker of als een andere gebruiker met voldoende rechten.
mysql -u root -pshellMaak een nieuwe testdatabase aan op een van de knooppunten in het cluster:
CREATE DATABASE test_db;sqlLog in op de andere knooppunten en controleer of de testdatabase beschikbaar is:
SHOW DATABASES;sqlDe testdatabase moet in de lijst met databases verschijnen:
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
| sys |
+------------------------------+sqlVoeg een nieuwe testtabel toe aan de testdatabase:
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);sqlVoer enkele testgegevens in de kolom name van de testtabel in:
INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');sqlControleer op de andere knooppunten of de testtabel en de ingevoegde gegevens zijn overgedragen:
USE test_db;
SELECT * FROM test_table;sqlDe uitvoer toont ons de lijst met personen met hun namen en ID:
+----+-----------+
| id | name |
+----+-----------+
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
+----+----------+sqlOm een gegevensrecord in de testtabel bij te werken:
UPDATE test_table SET name = 'David' WHERE name = 'Alice';sqlProbeer een gegevensrecord te verwijderen:
DELETE FROM test_table WHERE name = 'Bob';sqlControleer op de andere knooppunten of de updates en verwijderingen zijn gerepliceerd:
SELECT * FROM test_table;sqlDe wijzigingen worden op elk knooppunt correct weergegeven:
+----+------------+
| id | name |
+----+-----------+
| 1 | David |
| 3 | Charlie |
+----+-----------+sql