sql >> Databáze >  >> RDS >> Mysql

Jak nasadit Percona XtraDB Cluster 8 pro vysokou dostupnost

Percona XtraDB Cluster 8.0 je založen na serveru Percona pro MySQL 8.0 vestavěném s replikačním API sady zápisů Galera a replikační knihovnou Galera, aby vytvořil vysoce dostupnou multi-master replikaci pro databázový server založený na MySQL. Percona XtraDB Cluster přichází s úložným jádrem XtraDB (náhrada InnoDB) a velmi pozorně sleduje upstream vydání Oracle MySQL (včetně všech oprav chyb v něm), s některými dalšími proměnnými a stavy specifickými pro toto sestavení.

V tomto příspěvku na blogu se podíváme na to, jak nasadit Percona XtraDB Cluster 8.0 pro vysokou dostupnost ručním a automatickým způsobem.

Významné funkce

Než se přesuneme dále s kroky nasazení, stojí za zmínku pozoruhodné funkce a významná vylepšení této hlavní verze, která je založena na Percona Server pro MySQL 8.0 (bez pluginu Group Replication) a Galera 4:

  • Streamová replikace – umožňuje replikaci zapisovací sady zpracovávat velké datové transakce v menších, lépe spravovatelných fragmentech, čímž se minimalizují konflikty dat.
  • Synchronizační funkce MySQL pro koordinaci akcí (wsrep_last_seen_gtid, wsrep_last_written_gtid, wsrep_sync_wait_upto_gtid).
  • Nové systémové tabulky Galera, které pomohou sledovat stav clusteru pod schématem "mysql" - wsrep_cluster, wsrep_cluster_members a wsrep_streaming_log.
  • Šifrování Gcache.
  • Infrastruktura wsrep Galery 4 je robustnější než infrastruktura Galery 3. Vyznačuje se rychlejším prováděním kódu s lepším zpracováním stavu, lepší předvídatelností a zpracováním chyb.

Úplný seznam změn naleznete v poznámkách k vydání.

Ruční nasazení Percona XtraDB Cluster 8.0

Kroky instalace

Pro Percona XtraDB Cluster potřebujeme alespoň tři uzly:

  • db1 (192.168.20.61)
  • db2 (192.168.20.62)
  • db3 (192.168.20.63)

Kroky popsané v této části by měly být provedeny na všech databázových uzlech (db1, db2 a db3) spuštěných na CentOS 8. Nejprve deaktivujte SELinux (jinak by proces IST selhal):

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

Nainstalujte balíček úložiště Percona:

$ yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Nejnovější stabilní verzí je v tomto okamžiku Percona XtraDB Cluster 8.0, ale ve výchozím nastavení je balíček úložiště nakonfigurován až do verze 5.7. Balíček percona-release obsahuje skript, který může povolit další úložiště pro novější produkty. Spusťte tento skript a povolte úložiště specifické pro pxc80:

$ percona-release setup pxc80
* Disabling all Percona Repositories

On RedHat 8 systems it is needed to disable dnf mysql module to install Percona-Server
Do you want to disable it? [y/N]

Výběrem "y" deaktivujete modul mysql DNF. To je nezbytné pro upřednostnění úložiště Percona pro balíčky související s MySQL.

Poté nainstalujte nejnovější Percona XtraDB Cluster a Percona Xtrabackup:

$ dnf -y install percona-xtradb-cluster percona-xtrabackup-80

V tuto chvíli byste měli mít nainstalovaný Percona XtraDB Cluster 8.0.0-11.3. Všechny balíčky závislostí budou nainstalovány jako sdílené-kompat, sdílené a klientské balíčky. Poté můžeme spustit službu MySQL pro počáteční konfiguraci:

$ systemctl start mysql

Při prvním spuštění bude vygenerováno nové heslo uživatele root. Nejprve potřebujeme získat informace o hesle uživatele root z protokolu chyb MySQL (výchozí je /var/log/mysqld.log v systémech založených na RHEL):

$ cat /var/log/mysqld.log | grep 'temporary password'
2020-11-27T06:53:05.929661Z 6 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: <eqo+jXNw2lk

Jak můžete vidět, vygenerované heslo je "

$ mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

Using existing password for root.
Estimated strength of the password: 100

Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password:

Re-enter new password:

Estimated strength of the password: 100

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : y
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? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL 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? (Press y|Y for Yes, any other key for No) : y
 - 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? (Press y|Y for Yes, any other key for No) : y

Success.

All done!

Platnost vygenerovaného hesla root vyprší okamžitě po prvním přihlášení uživatele root. Výše uvedený pomocný skript nám pomáhá nakonfigurovat nové root heslo MySQL, nastavit politiku ověřování hesla, zakázat vzdálené přihlášení pro root, odstranit testovací databázi a anonymní uživatele a také znovu načíst tabulky oprávnění.

Výchozí konfigurační soubor (/etc/my.cnf) je nakonfigurován s prázdným připojovacím řetězcem gcomm:// pod proměnnou wsrep_cluster_address, jak je uvedeno níže:

wsrep_cluster_address=gcomm://

Výše uvedený řádek musí obsahovat seznam IP adres všech zúčastněných uzlů v clusteru. Pokud jste tento krok vynechali, po spuštění služby na všech uzlech by se na každém uzlu vytvořil nový cluster Galera (3 samostatné clustery s 1 uzly). Proto by měly být v sekci [mysqld] odpovídajícím způsobem upraveny následující řádky:

wsrep_cluster_address=gcomm://192.168.20.51,192.168.20.52,192.168.20.53
wsrep_node_address=192.168.20.51 # IP address of this DB host
wsrep_node_name=db1 # any name to identify this DB host
pxc-encrypt-cluster-traffic=OFF

Očekávejte, že wsrep_cluster_address bude identická u všech hostitelů databáze, zatímco wsrep_node_address a wsrep_node_name se musí lišit u každého hostitele databáze. Poslední řádek pxc-encrypt-cluster-traffic=OFF znamená, že bychom rádi zakázali šifrování pro provoz clusteru. Všimněte si, že toto je záměrem zjednodušit naše kroky nasazení, jinak bychom museli provádět kroky správy klíčů/certifikátů. Pokud byste chtěli povolit šifrování, přečtěte si tento článek.

Opakujte výše uvedené kroky pro zbývající databázové uzly, než budete pokračovat v bootstrap clusteru.

Zavádění clusteru

Galera vyžaduje, abyste spustili uzel v clusteru jako referenční bod, než se zbývající uzly budou moci připojit a vytvořit cluster. Tento proces je známý jako cluster bootstrap. Bootstrapping je prvním krokem k zavedení databázového uzlu jako primární komponenty, než jej ostatní uvidí jako referenční bod pro synchronizaci dat.

V tomto příkladu použijeme db1 jako referenční uzel a spustíme jej příkazem bootstrap (můžete zvolit i jiné uzly, protože se jedná o nový klastr bez dat):

$ systemctl stop mysql
$ systemctl start [email protected]
$ systemctl status [email protected]

Po spuštění můžeme spustit ostatní uzly (db2 a db3) standardním příkazem start (po jednom uzlu):

$ systemctl stop mysql
$ systemctl start mysql

Můžete ověřit pomocí následujícího řádku uvnitř /var/log/mysqld.log:

2020-11-27T08:09:01.964152Z 2 [Note] [MY-000000] [WSREP] Synchronized with group, ready for connections

V tuto chvíli byla spuštěna naše služba Percona XtraDB Cluster a ruční nasazení je nyní dokončeno. Další informace o procesu bootstrapování Percona XtraDB Cluster najdete v tomto blogovém příspěvku How to Bootstrap MySQL nebo MariaDB Galera Cluster.

Automatické nasazení s ClusterControl

Existují dva způsoby, jak můžete nasadit Percona XtraDB Cluster 8.0 pomocí ClusterControl. Můžete použít ClusterControl UI (webové GUI) nebo ClusterControl CLI s názvem s9s. V této sekci vám ukážeme oba způsoby. ClusterControl musí být umístěn na samostatném hostiteli, mimo váš databázový cluster. Proto lze naši architekturu znázornit takto:

Instalace ClusterControl

SSH na server ClusterControl a nainstalujte ClusterControl pomocí následujících příkazů:

$ wget http://severalnines.com/downloads/cmon/install-cc
$ chmod 744 install-cc
$ ./install-cc

Postupujte podle průvodce instalací, dokud instalace neskončí. Po dokončení instalace otevřete webový prohlížeč a přejděte na http://192.168.20.19/clustercontrol . Vytvořte administrátora a licence se nainstaluje automaticky. Všechny nové instalace jsou dodávány se zkušební licencí pro podnikovou edici po dobu 30 dnů. Jakmile vyprší platnost této zkušební licence, vrátí se jako výchozí zpět na komunitní verzi, která je navždy zdarma.

SSH bez hesla

ClusterControl vyžaduje nastavení SSH bez hesla ze serveru ClusterControl do všech spravovaných uzlů. Abychom toho dosáhli, musíme nejprve vygenerovat klíč SSH na serveru ClusterControl. Uživatel SSH musí mít oprávnění superuživatele (sudo nebo root). V tomto případě použijeme uživatele root:

$ whoami
root

Nyní vygenerujte klíč SSH pro uživatele root:

$ ssh-keygen -t rsa # press Enter on all prompts

Dále zkopírujte veřejný klíč do všech uzlů databáze, které se chystáme nasadit a spravovat. V tomto případě všechny 3 uzly Galera:

$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]

Po zobrazení výzvy zadejte heslo uživatele root příslušných hostitelů.

Vyzkoušejte to pomocí následujícího příkazu a ujistěte se, že dostanete správnou odpověď:

$ ssh [email protected] "ls /root"

Nyní jsme připraveni nasadit náš cluster pomocí uživatelského rozhraní ClusterControl nebo CLI, jak je uvedeno v dalších částech.

Nasazení PXC pomocí uživatelského rozhraní ClusterControl

Je prakticky snadné nasadit Percona XtraDB Cluster s ClusterControl a ve výchozím nastavení ClusterControl nakonfiguruje cluster s povoleným šifrováním Galera. Po konfiguraci SSH bez hesla přejděte na ClusterControl -> Deploy -> MySQL Galera a zadejte požadované podrobnosti, jak je uvedeno níže:

Poté kliknutím na „Pokračovat“ přejděte k dalšímu kroku, kde nakonfigurujeme specifikace MySQL:

Zvolte "Percona" pro dodavatele a 8.0 jako verzi. Zbytek ponechte jako výchozí a zadejte kořenové heslo MySQL. Zadejte IP adresu nebo název hostitele databáze jeden po druhém a ujistěte se, že se po každém vložení zobrazí zelené zaškrtávací ikony. To znamená, že ClusterControl se dokáže dostat k odpovídajícím hostitelům prostřednictvím SSH bez hesla s poskytnutým uživatelem SSH a klíčem, jak je definováno v kroku 1. Kliknutím na tlačítko „Deploy“ zahájíte nasazení.

ClusterControl poté spustí úlohu nasazení, kde můžete sledovat průběh nasazení tak, že přejdete do ClusterControl -> Aktivita -> Úlohy -> Vytvořit cluster -> Úplné podrobnosti úlohy, jak je znázorněno na následujícím snímku obrazovky:

Po dokončení procesu byste měli vidět, že cluster je uveden na hlavním panelu :

To je vše. Nasazení je nyní dokončeno.

Deployment PXC pomocí ClusterControl CLI

Pokud dáváte přednost nasazení clusteru pomocí příkazového řádku, můžeme jednoduše použít klientský nástroj příkazového řádku ClusterControl s názvem „s9s“. Tento nástroj odešle úlohu nasazení do řadiče ClusterControl a ten provede všechny nezbytné kroky k nasazení clusteru.

Spusťte na serveru ClusterControl následující příkaz:

$ s9s cluster --create \
--cluster-type=galera \
--nodes="192.168.20.51;192.168.20.52;192.168.20.53" \
--vendor=percona \
--provider-version=8.0 \
--db-admin-passwd='P4ssw0rdSecr3t' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='My Percona XtraDB Cluster 8.0' \
--log

Uvidíte, že se objeví zprávy o úloze a můžete zde sledovat průběh nasazení a také můžete průběh úlohy sledovat z ClusterControl UI -> Activity -> Jobs . Počkejte 15–20 minut (v závislosti na připojení k internetu), dokud neuvidíte oznámení o dokončení úlohy. Náš Percona XtraDB Cluster 8.0 je nyní nasazen a můžete jej vidět v uživatelském rozhraní ClusterControl.


  1. Rozdíl data Oracle pro získání počtu let

  2. 2 způsoby, jak zkontrolovat, zda je na serveru SQL povolen přístup k datům (příklady T-SQL)

  3. Jak nastavit asynchronní replikaci mezi clustery MySQL Galera

  4. Získejte rozdíl v letech mezi dvěma daty v MySQL jako celé číslo