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 "
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: 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: 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.
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): Po spuštění můžeme spustit ostatní uzly (db2 a db3) standardním příkazem start (po jednom uzlu): Můžete ověřit pomocí následujícího řádku uvnitř /var/log/mysqld.log: 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.
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:
SSH na server ClusterControl a nainstalujte ClusterControl pomocí následujících příkazů: 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.
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: Nyní vygenerujte klíč SSH pro uživatele root: 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: 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ěď: Nyní jsme připraveni nasadit náš cluster pomocí uživatelského rozhraní ClusterControl nebo CLI, jak je uvedeno v dalších částech.
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.
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:
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.$ 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!
wsrep_cluster_address=gcomm://
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
Zavádění clusteru
$ systemctl stop mysql
$ systemctl start [email protected]
$ systemctl status [email protected]
$ systemctl stop mysql
$ systemctl start mysql
2020-11-27T08:09:01.964152Z 2 [Note] [MY-000000] [WSREP] Synchronized with group, ready for connections
Automatické nasazení s ClusterControl
Instalace ClusterControl
$ wget http://severalnines.com/downloads/cmon/install-cc
$ chmod 744 install-cc
$ ./install-cc
SSH bez hesla
$ whoami
root
$ ssh-keygen -t rsa # press Enter on all prompts
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh [email protected] "ls /root"
Nasazení PXC pomocí uživatelského rozhraní ClusterControl
Deployment PXC pomocí ClusterControl CLI
$ 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