GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat Percona XtraDB Cluster pro MySQL na Debian 8

V tomto článku vám ukážu, jak nakonfigurovat databázový cluster MySQL se třemi uzly v multi-master replikaci. Multi-master replikace umožňuje zápis záznamů v každém uzlu, takže pokud některý uzel selže, můžeme pracovat na druhém, jako by se nic nestalo.

Oficiální dokumentaci Percona lze nalézt na oficiálních stránkách https://www.percona.com/

Za prvé, proč vybíráme tři uzly a ne pouze dva? V jakémkoli clusteru by měl být počet uzlů lichý, takže v případě odpojení uzlu předpokládáme, že nejvyšší skupina serverů má čerstvá data a měla by být replikována do dolního uzlu, aby se předešlo ztrátě dat. To se týká pouze řešení konfliktů při replikaci dat, neztratíme data zapsaná pouze do odpojeného uzlu.

To se používá k zamezení okolností zvané rozdělený mozek , ve kterém nemůžeme automaticky vybrat, který uzel má správná data. Představte si například klastr 2 uzlů, kde jsou oba uzly od sebe odpojeny a do obou uzlů je zapsán stejný záznam:kdo vyhraje, když se vrátí online? Nevíme, takže dochází k rozdělení mozku a my musíme ručně rozhodnout, který záznam je ten správný.

Počet uzlů, který je potřeba k určení, která část clusteru má správná data, se nazývá KVORUM, v našem případě bude kvorum 2. Potřebujeme tedy, aby byly k sobě vždy připojeny 2 servery. V případě, že všechny tři uzly selžou, máme rozdělený mozek a musíme se rozhodnout, který server by měl přejít do bootstrap režimu ručně, toto je postup k určení, který bude hlavním serverem pro obnovení z rozděleného mozku.

Konfigurace clusteru Percona XtraDB v Debianu 8

Tento tutoriál popisuje, jak nainstalovat a nakonfigurovat tři uzly Percona XtraDB Cluster na serverech Debian 8, budeme používat balíčky z repozitářů Percona.

  • server 1
    • Název hostitele:mysql1.local.vm
    • IP adresa:192.168.152.100
  • Uzel 2
    • Název hostitele: mysql2.local.vm
    • IP adresa:192.168.152.110
  • Uzel 3
    • Název hostitele: mysql3.local.vm
    • IP adresa:192.168.152.120

Na každém hostiteli upravte soubor /etc/hosts následovně, abyste zajistili správné fungování DNS.

127.0.0.1 localhost
192.168.152.100 mysql1.local.vm mysql1
192.168.152.110 mysql2.local.vm mysql2
195lo.168.1sq.192.168.168.1s
# Následující řádky jsou vhodné pro hostitele s podporou IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Předpoklady

Postup popsaný v tomto kurzu vyžaduje následující minimální nastavení serveru:

  • Všechny tři uzly mají Debian 8, doporučuji postupovat podle tohoto průvodce https://www.howtoforge.com/tutorial/debian-8-jessie-minimal-server/

Krok 1. Instalace Percona Xtradb Cluster

Na všech uzlech spusťte následující příkazy jako root:

wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
dpkg -i percona-release_0.1-4.$( lsb_release -sc)_all.deb
aktualizace apt-get
apt-get -y install percona-xtradb-cluster-57

Samozřejmě zadejte heslo mysql, které si chcete vybrat.

Po instalaci balíčků mysqld se spustí automaticky. Zastavit mysqld na všech třech uzlech pomocí /etc/init.d/mysql stop .

Krok 2. Konfigurace prvního uzlu

Jednotlivé uzly by měly být nakonfigurovány tak, aby byly schopny zavést cluster. Další informace o bootstrappingu clusteru naleznete v části Bootstrapping the cluster .

  1. Nezapomeňte přidat tyto řádky do konfiguračního souboru /etc/mysql/my.cnf pro první uzel (mysql1.local.vm) na konci sekce [mysqld]:

    [mysqld]

    ...# Cesta ke knihovně Galera
    wsrep_provider=/usr/lib/libgalera_smm.so

    # Adresa URL připojení klastru obsahuje IP adresy node#1, node#2 a node#3
    wsrep_cluster_address=gcomm://192.168.152.100,192.168.152.110,192.168.152.120

    # Aby Galera fungovala správně Formát binlogu by měl být ROW
    binlog_format=ROW

    # Úložný modul MyISAM má pouze experimentální podporu
    default_storage_engine=InnoDB

    # Tento režim automatického zamykání InnoDB je požadavek na Galera
    innodb_autoinc_lock_mode=2

    # Adresa uzlu č. 1
    wsrep_node_address=192.168.152.100

    # SST metoda
    wsrep_sst_method=xtrabackup-v2

    # Název clusteru
    wsrep_cluster_name=my_ubuntu_cluster

    # Ověření pro metodu SST
    wsrep_sst_auth="sstuser:PASSW0RD"

    Věnujte pozornost heslu, které zde nastavíte v mém případě „PASSW0RD“.

  2. Spusťte první uzel následujícím příkazem:

    [e-mail chráněný]:~# /etc/init.d/mysql bootstrap-pxc

    Tento příkaz spustí první uzel a zavede cluster, pokud je vše v pořádku, uvidíte něco takového:

    [e-mail chráněný]:~# /etc/init.d/mysql bootstrap-pxc
    [ ok ] Bootstrapping Percona XtraDB Cluster databázový server:mysqld ..
    [e-mail chráněný]:~#
  3. Po spuštění prvního uzlu se připojte k mysql klasickým příkazem mysql -p, poté lze zkontrolovat stav clusteru provedením dotazu show status jako 'wsrep%';jako v příkladu níže:

  4. mysql> zobrazit stav jako 'wsrep%';+----------------------------+---- ----------------------------------+| Název_proměnné | Hodnota |+----------------------------+------------------ ---------------------+| wsrep_local_state_uuid | 0251a27c-8a19-11e6-905b-f3f13b0ddc5b |...| wsrep_local_state | 4 || wsrep_local_state_comment | Synchronizováno |...| wsrep_cluster_size | 1 || wsrep_cluster_status | Primární || wsrep_connected | ON |...| wsrep_ready | ON |+----------------------------+------------------- --------------------+59 řádků v sadě (0,00 s)

Tento výstup ukazuje, že cluster byl úspěšně zaveden.

Chcete-li provést Přenos stavu snímku pomocí XtraBackup , nastavte nového uživatele se správnými oprávněními:

mysql> VYTVOŘIT UŽIVATELE 'sstuser'@'localhost' IDENTIFIKOVANÉHO PODLE 'PASSW0RD';mysql> UDĚLIT PROCES, ZNOVU NAČÍST, ZAMKNOUT TABULKY, REPLIKACE KLIENTA NA *.* DO 'sstuser'@'localhost';mysql> FLUSH; 

Poznámka

Kořenový účet MySQL lze také použít k provádění SST, ale bezpečnější je k tomu použít jiného (nerootového) uživatele.

Krok 3. Konfigurace druhého uzlu

  1. Připojte následující řádky ke konfiguračnímu souboru /etc/mysql/my.cnf na druhém uzlu (mysql2.local.vm), takže obsahuje následující data:

    [mysqld]

    ...# Cesta ke knihovně Galera
    wsrep_provider=/usr/lib/libgalera_smm.so

    # Adresa URL připojení klastru obsahuje IP adresy node#1, node#2 a node#3
    wsrep_cluster_address=gcomm://192.168.152.100,192.168.152.110,192.168.152.120

    # Aby Galera fungovala správně Formát binlogu by měl být ROW
    binlog_format=ROW

    # Úložný modul MyISAM má pouze experimentální podporu
    default_storage_engine=InnoDB

    # Tento režim automatického zamykání InnoDB je požadavek na Galera
    innodb_autoinc_lock_mode=2

    # Adresa uzlu č. 2
    wsrep_node_address=192.168.152.110

    # SST metoda
    wsrep_sst_method=xtrabackup-v2

    # Název clusteru
    wsrep_cluster_name=my_ubuntu_cluster

    # Ověření pro metodu SST
    wsrep_sst_auth="sstuser:PASSW0RD"
  2. Spusťte druhý uzel následujícím příkazem (pozor, jak vidíte, tentokrát není v režimu boostrap!!):

    [e-mail chráněný]:~# /etc/init.d/mysql start
  3. Po spuštění by server měl obdržet SST automaticky. Stav clusteru lze nyní kontrolovat na obou uzlech. Následuje příklad stavu z druhého uzlu (mysql2.local.vm):

  4. mysql> zobrazit stav jako 'wsrep%';+----------------------------+---- ----------------------------------+| Název_proměnné | Hodnota |+----------------------------+------------------ ---------------------+| wsrep_local_state_uuid | 0251a27c-8a19-11e6-905b-f3f13b0ddc5b |...| wsrep_local_state | 4 || wsrep_local_state_comment | Synchronizováno |...| wsrep_cluster_size | 2  || wsrep_cluster_status | Primární || wsrep_connected | ON |...| wsrep_ready | ON |+----------------------------+------------------- --------------------+40 řádků v sadě (0,01 s)

    Tento výstup ukazuje, že nový uzel byl úspěšně přidán do clusteru. Všimněte si proměnné wsrep_cluster_size, která se stala 2, namísto jednoho z prvních dotazů, které jsme provedli.

Krok 4. Konfigurace třetího uzlu

  1. Připojte následující řádky ke konfiguračnímu souboru /etc/mysql/my.cnf na druhém uzlu (mysql3.local.vm), takže obsahuje následující konfiguraci:

    [mysqld]

    ...# Cesta ke knihovně Galera
    wsrep_provider=/usr/lib/libgalera_smm.so

    # Adresa URL připojení klastru obsahuje IP adresy node#1, node#2 a node#3
    wsrep_cluster_address=gcomm://192.168.152.100,192.168.152.110,192.168.152.120

    # Aby Galera fungovala správně Formát binlogu by měl být ROW
    binlog_format=ROW

    # Úložný modul MyISAM má pouze experimentální podporu
    default_storage_engine=InnoDB

    # Tento režim automatického zamykání InnoDB je požadavek na Galera
    innodb_autoinc_lock_mode=2

    # Adresa uzlu č. 2
    wsrep_node_address=192.168.152.120

    # SST metoda
    wsrep_sst_method=xtrabackup-v2

    # Název clusteru
    wsrep_cluster_name=my_ubuntu_cluster

    # Ověření pro metodu SST
    wsrep_sst_auth="sstuser:PASSW0RD"
  2. Spusťte třetí uzel následujícím příkazem:

    [e-mail chráněný]:~# /etc/init.d/mysql start
  3. Po spuštění serveru by měl automaticky přijímat SST. Stav clusteru lze zkontrolovat na všech uzlech. Následuje příklad stavu ze třetího uzlu (mysql3.local.vm):

    mysql> zobrazit stav jako 'wsrep%';+----------------------------+-------- -------------------------------+| Název_proměnné | Hodnota |+----------------------------+------------------ ---------------------+| wsrep_local_state_uuid | 0251a27c-8a19-11e6-905b-f3f13b0ddc5b |...| wsrep_local_state | 4 || wsrep_local_state_comment | Synchronizováno |...| wsrep_cluster_size | 3  || wsrep_cluster_status | Primární || wsrep_connected | ON |...| wsrep_ready | ON |+----------------------------+------------------- --------------------+40 řádků v sadě (0,01 s)

    Tento výstup potvrzuje, že se třetí uzel připojil ke clusteru. Znovu se podívejte na wsrep_cluster_size, která se nyní stala 3 namísto 2.

Pokud narazíte na nějaké problémy, podívejte se do /var/log/syslog a zjistěte, zda je vše v pořádku

Oct 4 12:16:13 mysql3 mysql[2767]:Spouštění databázového serveru MySQL (Percona XtraDB Cluster):mysqld . . .Probíhá přenos stavu, vyšší nastavení spánku:mysqld . ..
Oct 4 12:16:13 mysql3 systemd[1]:Spuštěno LSB:Spuštění a zastavení mysql (Percona XtraDB Cluster) démona.
Oct 4 12:17:01 mysql3 CRON[3731] :(root) CMD ( cd / &&run-parts --report /etc/cron.hourly)

V tomto příkladu vše proběhlo v pořádku a můžete vidět Převod státu probíhá, což znamená, že data budou přenesena do uzlu.

Testování replikace

Chcete-li replikaci otestovat, vytvořte novou databázi na druhém uzlu, vytvořte tabulku pro tuto databázi ve třetím uzlu a přidejte do tabulky v prvním uzlu nějaké záznamy.

  1. Vytvořte novou databázi na druhém uzlu:

    mysql@mysql2> CREATE DATABASE percona;Dotaz je v pořádku, ovlivněn 1 řádek (0,01 s)
  2. Vytvořte tabulku na třetím uzlu:

    mysql@mysql3> USE percona;Databáze změněnamysql@pxc3> Příklad CREATE TABLE (id_uzlu INT PRIMARY KEY, název_uzlu VARCHAR(30));Dotaz je v pořádku, ovlivněno 0 řádků (0,05 s)
  3. Vložit záznamy na první uzel:

    mysql@mysql1> INSERT INTO percona.example VALUES (1, 'percona1');Dotaz je v pořádku, ovlivněn 1 řádek (0,02 s)
  4. Načtěte všechny řádky z této tabulky na druhém uzlu:

    mysql@mysql2> SELECT * FROM percona.example;+---------+-----------+| node_id | jméno_uzlu |+---------+-----------+| 1 | percona1 |+---------+-----------+1 řádek v sadě (0,00 s)

Abyste zajistili, že vaše aplikace vždy dosáhne clusteru, můžete před tři uzly přidat loadbalancer.


Debian
  1. Jak nainstalovat PHP-Fusion 9 na Debian 8

  2. Jak nainstalovat LAMP na Debian 8

  3. Jak nainstalovat PunBB na Debian 8

  1. Jak nainstalovat Percona XtraDB Cluster na CentOS 7

  2. Jak nainstalovat MySQL 8.0 / 5.7 na Debian 11 / Debian 10

  3. Jak nainstalovat MySQL na Debian 11

  1. Jak nainstalovat MySQL Server na Debian 9

  2. Jak nainstalovat MySQL na Debian 11

  3. Jak nainstalovat MySQL Workbench na Debian 11