GNU/Linux >> Znalost Linux >  >> Linux

Master-Slave replikace s MariaDB

Takto jsem nakonfiguroval replikaci Master-Slave s MariaDB. Protože MariaDB je fork MySQL, měli byste postupovat podle stejných kroků.

Moje nastavení

Předpokládám, že již máte spuštěny dva servery Maria/MySQL. To jsou moje vlastnosti:

  • OS:Testování Debianu ‚Bookworm‘
  • Verze MariaDB:10.5.12

Pracuji se dvěma virtuálními stroji, abych vytvořil slave, duplikoval jsem hlavní vm.

  • Hlavní:192.168.122.13
  • Slave:192.168.122.223

Pokud nemáte databázi maria nebo mysql, zde na unixcopu máme několik tutoriálů, také zde, zde nebo zde.

Mistr

Jak jsem již řekl dříve, předpokládám, že již máte spuštěnou marii nebo mysql. Musíme provést nějakou konfiguraci na hlavním a potom na podřízeném hostiteli.

Upravit /etc/mysql/mariadb.conf.d/50-server.cnf (nebo příslušný soubor ve vašem nastavení) a změňte následující řádky:

bind-address = <your.master.host.ip>
server-id=1

Restartujte MariaDB a vytvořte uživatele s oprávněními pro replikaci:

MariaDB [(none)]> CREATE USER 'esclavo'@'192.168.122.223' IDENTIFIED BY 'SlavePass' ;
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'esclavo'@'192.168.122.223';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;

Zvolte libovolné uživatelské jméno a heslo, esclavo znamená otrok na španělštině. Nastavte IP adresu svého otroka MariaDB. Dále můžete vidět stav pomocí SHOW MASTER STATUS.

Posledním krokem (téměř se vrátíme později) na hlavním serveru je zkopírovat všechna data z hlavního serveru na podřízený. Vytvořme výpis pomocí:

root@my1:~# mysqldump -u root --all-databases -p  --master-data > data.sql

Slave

Na podřízeném serveru nejprve změňte konfigurační soubor /etc/mysql/mariadb.conf.d/50-server.cnf ve stejných řádcích jako hlavní:

bind-address = <your.slave.host.ip> 
server-id=1

Restartujte MariaDB a načtěte výpis z hlavního serveru pomocí:

root@my2:/home/gonz# mysql -uroot < data.sql

Poté zastavte slave, nastavte hlavního hostitele a spusťte slave pomocí následujících příkazů:

root@my2:/home/gonz# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 41
Server version: 10.5.12-MariaDB-1-log Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> stop slave;
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.122.13', MASTER_USER='esclavo',MASTER_PASSWORD='SlavePass';
MariaDB [(none)]> START SLAVE;

Pokud tyto příkazy pouze kopírujete a vkládáte, nezapomeňte změnit IP hostitele, uživatele a heslo na své hodnoty.

Testování a opravy

To by mělo stačit. Pokud vše funguje podle očekávání, měli byste mít replikaci master-slave s MariaDB.

Nyní můžete vytvořit databázi na masteru a tato databáze by se měla automaticky objevit v slave. Ale nefungovalo to pro mě. Vytvořil jsem databázi na hlavním serveru pomocí:

MariaDB [(none)]> CREATE DATABASE somedatabase;

A nebylo to replikováno na otroka. Abych zjistil proč, spustil jsem podřízený server:

MariaDB [(none)]> show slave status\G ;

Když jsem tuto chybu vygoogloval, navrhli vypustit uživatele esclavo a flush oprávnění. Toto na podřízeném serveru také zastavte podřízený před vyřazením uživatele a spusťte podřízený po vyprázdnění oprávnění:

MariaDB [(none)]> stop slave;
MariaDB [(none)]> drop user 'esclavo'@'192.168.122.223';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> start slave;

A toto je opraveno, jak můžete vidět na snímku obrazovky, nyní je na podřízeném serveru nějaká databáze databáze. A je prázdný. Potom jsem se vrátil k hlavnímu serveru, abych vytvořil tabulku a naplnil ji daty:

Posledním krokem je zkontrolovat na slave, zda byla tabulka vytvořena a jsou uvnitř data:

Pro jistotu můžete stav slave zkontrolovat ještě jednou (nebo kdykoli jindy v budoucnu, pokud se zdá, že něco není v pořádku).

A nakonec jsem nastavil replikaci master-slave pomocí MariaDB.


Linux
  1. Nastavení replikace Master-Master s MySQL na Debian 8 (Jessie)

  2. Jak nahradit MySQL za MariaDB na CentOS 6

  3. Jak nastavit replikaci MariaDB Master Slave na Ubuntu 18.04

  1. Jak nastavit replikaci MySQL Master Slave Replication

  2. Jak nakonfigurovat replikaci MySQL Master-Slave na Ubuntu 18.04

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

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

  2. Jak nainstalovat a nakonfigurovat replikaci Master-Slave s PostgreSQL 9.6 na CentOS 7

  3. Jak nainstalovat WordPress s Nginx na AlmaLinux 8