Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да разположите Percona XtraDB Cluster 8 за висока наличност

Percona XtraDB Cluster 8.0 се базира на Percona Server за MySQL 8.0, вграден с API за репликация на набора за запис на Galera и библиотека за репликация на Galera, за да формира високодостъпна репликация с множество главни за базиран на MySQL сървър на база данни. Percona XtraDB Cluster идва с XtraDB механизъм за съхранение (подмяна на InnoDB) и следва много отблизо предходните версии на Oracle MySQL (включително всички корекции на грешки в него), с някои допълнителни променливи и статус, специфични за тази компилация.

В тази публикация в блога ще разгледаме как да разгърнем Percona XtraDB Cluster 8.0 за висока наличност, като използвате ръчния и автоматизиран начин.

Забележителни характеристики

Преди да продължим напред със стъпките за внедряване, си струва да споменем забележителни характеристики и значителни подобрения в тази основна версия, която е базирана на Percona Server за MySQL 8.0 (без плъгин за групова репликация) и Galera 4:

  • Поточно репликация – Това позволява на репликацията на набор за запис да обработва големи транзакции с данни в по-малки, по-управляеми фрагменти, минимизирайки конфликтите на данни.
  • Синхронизационните функции на MySQL за координиране на действията (wsrep_last_seen_gtid, wsrep_last_written_gtid, wsrep_sync_wait_upto_gtid).
  • Нови системни таблици на Galera, които ще ви помогнат да наблюдавате състоянието на клъстера по схемата "mysql" - wsrep_cluster, wsrep_cluster_members и wsrep_streaming_log.
  • Кеш криптиране в Gcache.
  • Wsrep инфраструктурата на Galera 4 е по-стабилна от тази на Galera 3. Тя включва по-бързо изпълнение на код с по-добра обработка на състоянието, подобрена предсказуемост и обработка на грешки.

За пълен списък с промените вижте бележките по версията.

Ръчно внедряване на Percona XtraDB Cluster 8.0

Стъпки за инсталиране

За клъстера Percona XtraDB ни трябват поне три възела:

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

Стъпките, описани в този раздел, трябва да се изпълнят на всички възли на базата данни (db1, db2 и db3), работещи на CentOS 8. Първо, деактивирайте SELinux (в противен случай IST процесът ще се провали):

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

Инсталирайте пакета на хранилището на Percona:

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

Последната стабилна версия в този момент е Percona XtraDB Cluster 8.0, но по подразбиране пакетът на хранилището е конфигуриран до версия 5.7. Пакетът percona-release съдържа скрипт, който може да активира допълнителни хранилища за по-новите продукти. Нека стартираме този скрипт и да активираме специфичното за 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]

Изберете "y", за да деактивирате DNF модула на mysql. Това е необходимо, за да се даде приоритет на хранилището на Percona за пакети, свързани с MySQL.

След това инсталирайте най-новия Percona XtraDB Cluster и Percona Xtrabackup:

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

В този момент трябва да получите инсталиран Percona XtraDB Cluster 8.0.0-11.3. Всички пакети за зависимости ще бъдат инсталирани като споделени, споделени и клиентски пакети. След това можем да стартираме услугата MySQL за първоначална конфигурация:

$ systemctl start mysql

Нова root парола ще бъде генерирана по време на първото стартиране. Трябва първо да извлечем информацията за root паролата от регистъра на грешките на MySQL (по подразбиране е /var/log/mysqld.log в базирани на 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

Както можете да видите, генерираната парола е "

$ 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!

Генерираната root парола ще бъде изтекла веднага след първото влизане в root. Горният помощен скрипт ни помага да конфигурираме нова парола за MySQL root, да зададем правила за валидиране на паролата, да деактивираме дистанционното влизане за root, да премахнем тестовата база данни и анонимните потребители, както и да презаредим таблиците с привилегии.

Конфигурационният файл по подразбиране (/etc/my.cnf) е конфигуриран с празен низ за връзка gcomm:// под променлива wsrep_cluster_address, както е показано по-долу:

wsrep_cluster_address=gcomm://

Горещият ред трябва да бъде зададен със списък с IP адреси на всички участващи възли в клъстера. Ако сте пропуснали тази стъпка, нов клъстер Galera ще бъде създаден на всеки възел (3 отделни клъстера с 1 възел) след стартиране на услугата на всеки възел. Следователно следните редове трябва да бъдат съответно променени в секцията [mysqld]:

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

Очаквайте wsrep_cluster_address да бъде идентичен във всички хостове на база данни, докато wsrep_node_address и wsrep_node_name трябва да са различни за всеки хост на база данни. Последният ред pxc-encrypt-cluster-traffic=OFF означава, че бихме искали да деактивираме криптирането за трафика на клъстера. Имайте предвид, че това е умишлено, за да опрости нашите стъпки за внедряване, или в противен случай ще трябва да изпълним стъпки за управление на ключ/сертификат. Ако искате да активирате шифроването, вижте тази статия.

Повторете горните стъпки за останалите възли на базата данни, преди да продължите да стартирате клъстера.

Зареждане на клъстер

Galera изисква да стартирате възел в клъстер като референтна точка, преди останалите възли да могат да се присъединят и да образуват клъстера. Този процес е известен като cluster bootstrap. Зареждането е начална стъпка за въвеждане на възел на базата данни като основен компонент, преди другите да го видят като отправна точка за синхронизиране на данни.

В този пример ще използваме db1 като референтен възел и ще го стартираме с командата bootstrap (можете да изберете и други възли, тъй като това е нов клъстер без данни):

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

След като стартираме, можем да стартираме другите възли (db2 и db3) със стандартната команда за стартиране (един възел в даден момент):

$ systemctl stop mysql
$ systemctl start mysql

Можете да потвърдите със следния ред в /var/log/mysqld.log:

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

В този момент нашата услуга Percona XtraDB Cluster стартира и ръчното внедряване вече е завършено. За повече информация относно процеса на стартиране на Percona XtraDB Cluster, вижте тази публикация в блога Как да стартирате MySQL или MariaDB Galera Cluster.

Автоматично внедряване с ClusterControl

Има два начина, по които можете да разположите Percona XtraDB Cluster 8.0 с помощта на ClusterControl. Можете да използвате ClusterControl UI (уеб-базиран GUI) или ClusterControl CLI, наречен s9s. В този раздел ще ви покажем и двата начина. ClusterControl трябва да се намира на отделен хост, далеч от клъстера на базата данни. Следователно нашата архитектура може да бъде илюстрирана така:

Инсталиране на ClusterControl

SSH в сървъра ClusterControl и инсталирайте ClusterControl със следните команди:

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

Следвайте съветника за инсталиране, докато инсталацията приключи. След като инсталацията приключи, отворете уеб браузъра и отидете на http://192.168.20.19/clustercontrol. Създайте потребител с администратор и лицензът ще бъде инсталиран автоматично. Всички нови инсталации идват с пробен лиценз за корпоративно издание за 30 дни. След като този пробен лиценз изтече, той ще се върне по подразбиране към изданието на общността, което е безплатно завинаги.

SSH без парола

ClusterControl изисква SSH без парола да бъде настроен от сървъра на ClusterControl към всички управлявани възли. За да постигнем това, първо трябва да генерираме SSH ключ на сървъра на ClusterControl. Потребителят на SSH трябва да има привилегия на суперпотребител (sudo или root). В този случай ще използваме root потребителя:

$ whoami
root

Сега генерирайте SSH ключ за потребителски root:

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

След това копирайте публичния ключ във всички възли на базата данни, които ще разположим и управляваме. В този случай всички 3 възела на Galera:

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

Въведете root паролата на съответните хостове, когато бъдете подканени.

Тествайте го със следната команда и се уверете, че получавате правилен отговор:

$ ssh [email protected] "ls /root"

Сега сме готови да разгърнем нашия клъстер с помощта на ClusterControl UI или CLI, както е показано в следващите раздели.

Разгръщане на PXC с помощта на потребителски интерфейс на ClusterControl

Практически е лесно да разположите Percona XtraDB Cluster с ClusterControl и по подразбиране ClusterControl ще конфигурира клъстера с активирано криптиране на Galera. След като SSH без парола е конфигуриран, отидете на ClusterControl -> Deploy -> MySQL Galera и посочете необходимите подробности, както е посочено по-долу:

След това щракнете върху „Продължи“, за да преминете към следващата стъпка, където конфигурираме спецификацията на MySQL:

Изберете "Percona" за доставчика и 8.0 като версия. Запазете останалото по подразбиране и въведете паролата за root на MySQL. Посочете IP адреса или името на хоста на хостовете на базата данни един по един и се уверете, че получавате иконите за зелена отметка след всяко вмъкване. Това показва, че ClusterControl може да достигне до съответните хостове чрез SSH без парола с предоставения SSH потребител и ключ, както е дефинирано в стъпка 1. Щракнете върху бутона „Разгръщане“, за да започнете внедряването.

След това ClusterControl задейства задание за внедряване, където можете да наблюдавате напредъка на внедряването, като отидете на ClusterControl -> Activity -> Jobs -> Create Cluster -> Full Job Details, както е показано на следната екранна снимка:

След като процесът приключи, трябва да видите, че клъстерът е посочен в таблото за управление :

Това е. Внедряването вече е завършено.

Разгръщане на PXC чрез ClusterControl CLI

Ако предпочитате да разположите клъстера с помощта на командния ред, можем просто да използваме клиентския инструмент на командния ред ClusterControl, наречен "s9s". Този инструмент ще изпрати задание за внедряване на контролера ClusterControl и той ще изпълни всички необходими стъпки за разполагане на клъстера.

Изпълнете следната команда на сървъра на ClusterControl:

$ 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

Ще видите, че съобщенията за заданието ще се появят и можете да наблюдавате напредъка на внедряването там, както и можете също да наблюдавате напредъка на заданието от ClusterControl UI -> Activity -> Jobs . Изчакайте 15-20 минути (в зависимост от интернет връзката), докато видите известието за приключване на заданието. Нашият Percona XtraDB Cluster 8.0 вече е внедрен и можете да го видите в списъка в потребителския интерфейс на ClusterControl.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на масив в MySQL база данни с PHP

  2. Не може да се осъществи връзка, защото целевата машина активно я отказа (PHP / WAMP)

  3. Предаване на масив към заявка с помощта на клауза WHERE

  4. Обявяване на ClusterControl 1.7.5:Разширена поддръжка и поддръжка на клъстер за PostgreSQL 12 и MongoDB 4.2

  5. mysql грешка 1364 Полето няма стойности по подразбиране