GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit replikaci MariaDB Master-Slave na CentOS 7

Koncept replikace databáze zajišťuje, že data jsou zkopírována přes více serverů z hlavního serveru. To zajišťuje redundanci dat a zajišťuje, že se data neztratí v případě selhání hlavního uzlu. V tomto článku se podíváme na replikaci MariaDB Master-Slave na CentOS 7. Ukážeme si, jak lze kopírovat data z databáze umístěné na hlavním uzlu do jiné databáze umístěné na systému Slave.

Scénář replikace MariaDB Master-Slave

Zde je nastavení replikace:



Master node (CentOS 7 64 bit) : IP 173.82.2.236

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

Krok 1:Nainstalujte MariaDB na uzel Master i Slave

Chcete-li začít, přihlaste se k hlavnímu i podřízenému uzlu a spusťte následující příkazy k instalaci serveru MariaDB

yum install mariadb-server mariadb

Ukázkový výstup

Spusťte službu MariaDB a povolte ji při spouštění



# systemctl start mariadb
# systemctl enable mariadb

Ukázkový výstup

Krok 2:Nastavte heslo MariaDB na Master i Slave

Ve výchozím nastavení je heslo pro MariaDB/MySQL obvykle prázdné a do databáze mají přístup neoprávnění uživatelé. Musíme to zajistit tak, že nakonfigurujeme heslo a zpevníme ho několika dalšími nastaveními. Chcete-li toho dosáhnout, spusťte níže uvedený příkaz na hlavním i podřízeném uzlu

mysql_secure_installation

Ukázkový výstup

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!

Krok 3:Konfigurace hlavního uzlu

Nyní, když jsme posílili naše instance MariaDB na obou uzlech, pojďme nakonfigurovat hlavní uzel.

Nejprve musíme povolit port 3306 MariaDB přes firewall CentOS 7. Chcete-li to provést, spusťte příkazy

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

Ukázkový výstup

Znovu načtěte firewall, aby se změny projevily

# firewall-cmd --relaod

Ukázkový výstup

Dále proveďte několik změn v souboru /etc/my.cnf soubor

vim /etc/my.cnf

připojte následující řádky do [mysqld] sekce



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

Zde replika_db je databáze, kterou se chystáme vytvořit a replikovat ji přes slave.

Dále restartujte službu MariaDB pomocí příkazu:

systemctl restart mariadb

Nyní se přihlásíme do MariaDB jako uživatel root:

mysql -u root -p

Dalším krokem bude vytvoření replika_db databáze

MariaDB [(none)]> CREATE DATABASE replica_db;

Dále vytvořte uživatele a heslo Slave. Použijeme například slave_user jako uživatelské jméno Slave a P@ssword100 jako heslo:


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)

Dále vyprázdněte oprávnění podle obrázku


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)

Dále spusťte níže uvedený příkaz a zobrazte hlavní stav

SHOW MASTER STATUS;

Krok 4:Zálohování databáze na hlavním serveru a její přenos na Slave

Dále spusťte níže uvedený příkaz pro zálohování všech hlavních databází

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

Tím se vytvoří soubor s názvemmasterdatabase.sql ve vašem aktuálním pracovním adresáři.

Znovu se přihlaste do MySQL jako uživatel root:

mysql -u root -p

A odemkněte stoly:



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

MariaDB [(none)]> quit
Bye

Nyní zkopírujte masterdatabase.sql soubor na váš Slave server.

Příkaz tedy bude:

scp masterdatabase.sql [email protected]:/home

Pamatujte prosím, že 173.82.94.57 je náš podřízený server MariaDB.

Krok 4:Konfigurace MariaDB Slave

Nyní je čas nakonfigurovat uzel MariaDB Slave

Upravte soubor /etc/my.cnf soubor

vim /etc/my.cnf

Připojte následující položky pod [mysqld] sekce, jak je znázorněno

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

Replika_db je zde databáze vytvořená v uzlu hlavního serveru. Také mějte na paměti, že pro hlavní i podřízené servery použijete různé ID serveru. V tomto případě je server-id 2

Uložte a ukončete soubor.

Dále budeme importovat hlavní databázi, jak je znázorněno

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

Mějte na paměti, že jsme již zkopírovali soubor masterdatabase.sql z hlavního serveru do adresáře /home/ podřízeného serveru.

Restartujte službu MariaDB, aby se změny projevily.

systemctl restart mariadb

Nyní se přihlaste do MariaDB jako uživatel root

mysql -u root -p

Zastavte otroka. Řekněte Slave, kde má najít soubor Master Log a spustit 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)

Dále spusťte níže uvedený příkaz a zobrazte stav Slave

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

Testování replikace MariaDB

Hlavní strana:

Vydejte se na svůj hlavní server MariaDB a přihlaste se k instanci MariaDB pomocí příkazu, jak je znázorněno

mysql -u root -p

Vytvořte databázi replica_db

Dále vytvořte tabulku Persons

Přidejte záznam podle obrázku

Nakonec zobrazte tabulku

Podřízená strana:

Nyní se přihlaste k instanci databáze MariaDB na Slave serveru

mysql -u root -p

Dále zobrazte databáze pomocí příkazu níže

SHOW DATABASES;

Jak můžete vidět, replica_db databáze je přítomna, což znamená, že byla replikována !

Pokračujme a prozkoumáme databázi a zkontrolujeme, zda jsou přítomny nějaké tabulky. Spustit

use replica_db;

Potom

show tables;

Jak vidíte, tabulka Osoby je přítomen dříve vytvořený v hlavním uzlu. Perfektní!

Odhalme jeho záznamy, abychom si byli zcela jisti, že naše databáze byla plně replikována

select *from replica_db;

Jak bylo zjištěno, veškerý obsah byl replikován a je přesný. Jen tak dál!

V tomto článku jste se naučili, jak nastavit replikaci MariaDB Master-Slave na CentOS 7. Vyzkoušejte to a neváhejte.


Linux
  1. Jak resetovat kořenové heslo MySQL nebo MariaDB

  2. Mutt:Jak bezpečně uložit heslo?

  3. Jak nastavit VSFTPD na CentOS 8

  1. Jak nainstalovat MariaDB na CentOS 7

  2. Jak nastavit WireGuard VPN na CentOS 8

  3. Jak nainstalovat MySQL na CentOS 7.x?

  1. Jak nakonfigurovat replikaci MySQL Master-Slave na CentOS 7

  2. Jak nakonfigurovat replikaci MySQL (MariaDB) Master-Slave na Debianu 10

  3. Jak nakonfigurovat replikaci MariaDB na CentOS Linux