GNU/Linux >> Znalost Linux >  >> Linux

Master-Master replikace s MariaDB

Před pár dny jsem napsal návod, jak provést replikaci s MariaDB (nebo MySQL). Toto je jednosměrná replikace:z hlavního na slave; to znamená, že podřízený server přijímá transakce od hlavního serveru. Můj klient ale potřebuje obousměrnou replikaci, protože nevíme, který server transakci obdrží a na obou musí být stejná data. Zde vám ukážu, jak nakonfigurovat replikaci master-master pomocí MariaDB, abyste toho dosáhli.

Moje nastavení

Pro případ, že jste přehlédli předchozí článek, toto jsou funkce virtuálních strojů, na kterých spouštím tuto replikaci.

  • OS:Testování Debianu ‚Bookworm‘
  • Verze MariaDB:10.5.12
  • Master1:192.168.122.13
  • Master2:192.168.122.223

Hlavní konfigurace

Oba hlavní servery získají stejnou konfiguraci, upravte /etc/mysql/mariadb.conf.d/50-server.cnf a nahraďte následující hodnoty:

bind-address =X .ip.address>id-serveru =<X>report_host =masterX log_bin =/var/log/mysql/mysql-bin.logrelay_log =/var/lib/mysql/relay-binrelay_log_index =/var/lib/mysql/relay-bin.indexlog-slave-updatesauto_increment_increment=2auto_increment>Xoffset=/em> 

Kde X je 1 pro první master a 2 pro druhého.
Hodnoty autoincrementu znamenají, že v polích typu id bude jeden z masterů získávat vždy sudá čísla a druhý vždy lichá čísla. To má zabránit tomu, aby bylo oběma masterům přiřazeno přesně stejné identifikační číslo současně.

Nyní restartujte službu mariadb a přihlaste se do mysql, abyste vytvořili uživatele (esclavo znamená ve španělštině otrok) s oprávněními pro replikaci:

VYTVOŘTE UŽIVATELE 'esclavo1'@'ip.mysql.master.2' IDENTIFIKOVANÉ PODLE 'SlavePass';UDĚLENÍ REPLIKACE SLAVE NA *.* DO 'esclavo1'@'ip.mysql.master.2';FLUSH PRIVILEGES; 

Opakujte na obou masterech a odpovídajícím způsobem změňte informace (tj. na master2 vytvořte uživatele [email protected] ). Nejprve ale získejte výpis SQL svého prvního hlavního serveru a načtěte jej do druhého:

master1:mysqldump -u root --all-databases -p --master-data> data.sqlmaster2:mysql -uroot  

Nyní získejte nějaké informace o tomto masteru, které potřebujeme k povolení režimu slave na druhém hostiteli.

MariaDB [(none)]> ZOBRAZIT STAV HLAVNÍHO;+------------------+----------+----- ---------+------------------+| Soubor | Pozice | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+-- -----------------+| mysql-bin.000003 | 358 | | |+------------------+----------+--------------+--- ---------------+1 řádek v sadě (0,000 s)STOP SLAVE;

Konfigurace podřízených jednotek

Nyní je čas nakonfigurovat režim slave na obou hostitelích mariadb/mysql:

CHANGE MASTER TO MASTER_HOST='ip.mysql.master.X', MASTER_USER='esclavoX',MASTER_PASSWORD='SlavePass MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS =358;
SLAVE

Vaule master_host je ip druhého hlavního serveru, hodnota master_user je uživatel, kterého jste vytvořili na druhém hlavním serveru, a nakonec získáte hodnoty master_log_file a master_log_post z show master sta příkaz tus.

Kontrola všeho

Abych zjistil, zda jsem byl schopen povolit replikaci master-master s MariaDB, provedl jsem velmi jednoduchý test:

Vytvořil jsem databázi na jednom masteru, pak jednoduchou tabulku (pouze 1 pole) a vložil jsem pár záznamů. Poté jsem pomocí výběru zkontroloval, že se data zobrazují na obou hostitelích. Nakonec jsem přidal automatický přírůstkový sloupec id na jednom hostiteli a vložil několik dalších dat, abych viděl, jak to vypadá:

Jen pro větší zmatek k těm screenshotům:konfiguraci auto_increment (přírůstek a offset) jsem přidal do my.cnf během tohoto testu a ne od začátku, protože jsem o tom nevěděl, dokud jsem testy nezačal.

Každopádně, takto jsem povolil replikaci master-master s MariaDB, což je také replikace slave-slave. Nebo pán-otrok a slave-master replikace, jak si jen vzpomenete.

Myslím, že dalším logickým krokem je prozkoumat a použít nějaký Galera Cluster.


Linux
  1. Jak nastavit replikaci MySQL Master-Master Replication

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

  3. Jak nahradit MySQL za MariaDB na CentOS 6

  1. Replikace hlavní databáze pomocí MariaDB 10 na Debian 8

  2. Jak nainstalovat WordPress s LEMP na Ubuntu 20.04

  3. Jak nastavit replikaci MariaDB Master Slave na Ubuntu 18.04

  1. Jak nastavit replikaci MySQL Master Slave Replication

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

  3. Jak odemknout SSD disk pomocí hdparm?