GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie die MariaDB-Master-Slave-Replikation unter CentOS 7 ein

Das Konzept der Datenbankreplikation stellt sicher, dass Daten von einem Masterserver auf mehrere Server kopiert werden. Dies bietet Datenredundanz und stellt sicher, dass keine Daten verloren gehen, falls der Master-Knoten ausfällt. In diesem Artikel werfen wir einen Blick auf die MariaDB-Master-Slave-Replikation auf CentOS 7. Wir zeigen, wie Daten von einer Datenbank auf einem Master-Knoten in eine andere Datenbank auf einem Slave-System kopiert werden können.

MariaDB Master-Slave-Replikationsszenario

Hier ist die Replikationseinrichtung:



Master node (CentOS 7 64 bit) : IP 173.82.2.236

Slave node: (CentOS 7 64 bit) : IP 173.82.94.57

Schritt 1:Installieren Sie MariaDB sowohl auf dem Master- als auch auf dem Slave-Knoten

Melden Sie sich zunächst sowohl beim Master- als auch beim Slave-Knoten an und führen Sie die folgenden Befehle aus, um den MariaDB-Server zu installieren

yum install mariadb-server mariadb

Beispielausgabe

Starten Sie den MariaDB-Dienst und aktivieren Sie ihn beim Booten



# systemctl start mariadb
# systemctl enable mariadb

Beispielausgabe

Schritt 2:Setzen Sie das MariaDB-Passwort auf Master und Slave

Standardmäßig ist das Passwort für MariaDB/MySQL normalerweise leer und nicht autorisierte Benutzer können auf die Datenbank zugreifen. Wir müssen es sicher machen, indem wir ein Passwort konfigurieren und es mit anderen wenigen Einstellungen absichern. Führen Sie dazu den folgenden Befehl sowohl auf dem Master- als auch auf dem Slave-Knoten aus

mysql_secure_installation

Beispielausgabe

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y ## Enter Y and press Enter
New password:   ## Enter new password
Re-enter new password:  ## Enter password again
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  ## Enter Y and press Enter
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  ## Enter Y and press Enter
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Schritt 3:Konfigurieren des Master-Knotens

Jetzt, da wir unsere MariaDB-Instanzen auf beiden Knoten gehärtet haben, konfigurieren wir den Master-Knoten.

Zuerst müssen wir den Port 3306 von MariaDB zulassen über die CentOS 7-Firewall. Führen Sie dazu die Befehle

aus
# firewall-cmd --add-port=3306/tcp --zone=public --permanent

Beispielausgabe

Laden Sie die Firewall neu, um die Änderungen zu übernehmen

# firewall-cmd --relaod

Beispielausgabe

Nehmen Sie als Nächstes einige Änderungen an /etc/my.cnf vor Datei

vim /etc/my.cnf

Hängen Sie die folgenden Zeilen in [mysqld] an Abschnitt



[mysqld]
server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=replica_db
[...]

Hier,replica_db ist die Datenbank, die wir erstellen und über den Slave replizieren werden.

Als nächstes starten Sie den MariaDB-Dienst mit dem Befehl neu:

systemctl restart mariadb

Jetzt melden wir uns als Root-Benutzer bei MariaDB an:

mysql -u root -p

Der nächste Schritt besteht darin, die replica_db zu erstellen Datenbank

MariaDB [(none)]> CREATE DATABASE replica_db;

Als nächstes erstellen Sie einen Slave-Benutzer und ein Passwort. Zum Beispiel verwenden wir slave_user als Slave-Benutzername und P@ssword100 als Passwort:


MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'P@ssword100';
Query OK, 0 rows affected (0.00 sec)

Leeren Sie als Nächstes die Berechtigungen wie gezeigt


MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

Führen Sie als Nächstes den folgenden Befehl aus, um den Master-Status anzuzeigen

SHOW MASTER STATUS;

Schritt 4:Datenbank im Master-Server sichern und auf den Slave übertragen

Führen Sie als Nächstes den folgenden Befehl aus, um alle Master-Datenbanken zu sichern

 # mysqldump --all-databases --user=root --password --master-data > masterdatabase.sql

Dadurch wird eine Datei mit dem Namen masterdatabase.sql erstellt in Ihrem aktuellen Arbeitsverzeichnis.

Melden Sie sich erneut als Root-Benutzer bei MySQL an:

mysql -u root -p

Entsperren Sie die Tische:



MariaDB [(none)]> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

Kopieren Sie nun die masterdatabase.sql Datei auf Ihren Slave-Server.

Der Befehl lautet also:

scp masterdatabase.sql [email protected]:/home

Bitte denken Sie daran, dass 173.82.94.57 unser MariaDB-Slave-Server ist.

Schritt 4:MariaDB-Slave konfigurieren

Jetzt ist es an der Zeit, den MariaDB-Slave-Knoten

zu konfigurieren

Bearbeiten Sie die Datei /etc/my.cnf Datei

vim /etc/my.cnf

Hängen Sie die folgenden Einträge unter [mysqld] an Abschnitt wie gezeigt

 
[mysqld]
server-id = 2
replicate-do-db=replica_db
[...]

Hier ist replica_db die Datenbank, die auf dem Master-Server-Knoten erstellt wurde. Denken Sie auch daran, unterschiedliche Server-IDs für Master- und Slave-Server zu verwenden. In diesem Fall ist die Server-ID 2

Speichern und beenden Sie die Datei.

Als nächstes importieren wir die Master-Datenbank wie gezeigt

mysql -u root -p < /home/masterdatabase.sql 

Denken Sie daran, dass wir die Datei masterdatabase.sql bereits vom Master-Server in das Verzeichnis /home/ des Slave-Servers kopiert haben.

Starten Sie den MariaDB-Dienst neu, um die Änderungen zu übernehmen.

systemctl restart mariadb

Melden Sie sich jetzt als Root-Benutzer bei MariaDB an

mysql -u root -p

Stoppen Sie den Sklaven. Weisen Sie den Slave an, wo er die Master-Log-Datei finden kann, und starten Sie den Slave.


MariaDB [(none)]> STOP SLAVE;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='173.82.2.236', MASTER_USER='slave_user', MASTER_PASSWORD='P@ssword100', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=473;
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected (0.01 sec)

Führen Sie als Nächstes den folgenden Befehl aus, um den Status des Slaves anzuzeigen

MariaDB [(none)]> SHOW SLAVE STATUS\G;

MariaDB-Replikation testen

Masterseite:

Gehen Sie zu Ihrem MariaDB-Masterserver und melden Sie sich mit dem angezeigten Befehl bei der MariaDB-Instanz an

mysql -u root -p

Erstellen Sie die Datenbank replica_db

Als nächstes erstellen Sie eine Tabelle Persons

Fügen Sie wie gezeigt einen Datensatz hinzu

Zeigen Sie schließlich die Tabelle an

Slave-Seite:

Melden Sie sich jetzt bei der MariaDB-Datenbankinstanz auf dem Slave-Server an

mysql -u root -p

Zeigen Sie als Nächstes die Datenbanken mit dem folgenden Befehl an

SHOW DATABASES;

Wie Sie sehen können, ist die replica_db Datenbank vorhanden ist, was bedeutet, dass sie repliziert wurde !

Lassen Sie uns fortfahren und in der Datenbank nachforschen und prüfen, ob Tabellen vorhanden sind. Ausführen

use replica_db;

Dann

show tables;

Wie Sie sehen können, ist die Tabelle Personen der zuvor im Master-Knoten erstellt wurde, ist vorhanden. Perfekt!

Lassen Sie uns seine Aufzeichnungen offenlegen, um absolut sicher zu sein, dass unsere Datenbank vollständig repliziert wurde

select *from replica_db;

Wie festgestellt wurde, wurden alle Inhalte repliziert und sind korrekt. Weiter so!

In diesem Artikel haben Sie gelernt, wie Sie die MariaDB-Master-Slave-Replikation unter CentOS 7 einrichten. Probieren Sie es aus und zögern Sie nicht, Ihre Meinung zu sagen.


Linux
  1. So setzen Sie das MySQL- oder MariaDB-Root-Passwort zurück

  2. Mutt:Wie speichert man ein Passwort sicher?

  3. So richten Sie VSFTPD unter CentOS 8 ein

  4. So richten Sie WireGuard VPN unter CentOS 8 ein

  5. Wie installiere ich MySQL unter CentOS 7.x?

So richten Sie einen TeamSpeak-Server unter CentOS 7 ein

So richten Sie einen Minecraft-Server unter CentOS 7 ein

So richten Sie GitLab unter CentOS 8 ein

Wie setze ich das MySQL 8.0-Root-Passwort auf Centos 7.x zurück?

So verwalten Sie Postfächer mit RoundCube unter CentOS 7

So setzen Sie das Root-Passwort in CentOS/RHEL 8 zurück