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

Инсталиране на Percona XtraDB Cluster на CentOS 7

Добре дошли в друг блог. Този път съм тук, за да ви покажа как да настроите percona XtraDB клъстер. Добре, така че какво е percona XtraDB? XtraDB е решение за клъстериране на MySQL, което гарантира висока наличност, предотвратява престой и загуба на данни и осигурява линейна мащабируемост за нарастваща среда. Когато изпълнявате заявка, тя се изпълнява локално на възела. Всички данни са налични локално, няма нужда от отдалечен достъп. Добро решение за мащабиране на работното натоварване при четене. Можете да поставите заявки за четене към всеки от възлите. След като инсталирате percona XtraDB, не е необходимо да инсталирате MySQL отделно, XtraDB ще го получи от хранилището на percona и ще можете да подготвите клъстера, след като преминете през тази статия.

предпоставка:

За да конфигурираме percona XtraDB клъстер на Linux сървъри, имаме нужда от три сървъра, информацията е следната:

сървър percona1:192.168.56.110

сървър percona2:192.168.56.113

Сървър percona3:192.168.56.114

ОС:CentOS 7

можете също да използвате два сървъра, но официалният документ препоръчва нечетен брой сървъри. например 3,5,7 и така нататък. просто не търсете четен брой възли, те го наричат ​​разделен мозък. Разделен мозък е състояние, при което възлите губят контакт помежду си и след това и двамата се опитват да поемат контрола върху споделените ресурси или да предоставят едновременно клъстерната услуга

ЗАБЕЛЕЖКА:Нуждаем се от root достъп на възела, където ще инсталираме Percona XtraDB Cluster
(или сте влезли като потребител с root привилегии или можете да изпълнявате команди със Sudo

Предварителни проверки:

Добавете по-долу записи във вашия /etc/hosts файл ——> на целия сървър (percona1,percona2,percona3)

192.168.56.110 percona1.localdomain percona1
192.168.56.113 percona2.localdomain percona2
192.168.56.114 percona3.localdomain percona3

Отворете портовете на защитната стена:

Трябва да отворим по-долу портове на всички сървъри (percona1,percona2,percona3)
3306
4444
4567
4568

firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public - -add-port=4568/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/udp --permanentfirewall- cmd --reloadfirewall-cmd --list-all
[[email protected] ~]# firewall-cmd --list-allpublic (active)target:defaulticmp-block-inversion:nointerfaces:enp0s3 enp0s8sources:услуги:ssh dhcpv6-client mysqlports:3306/tcp/tc4 4568/tcp 4444/tcp 4567/udpprotocols:masquerade:noforward-ports:source-ports:icmp-blocks:богати правила

Деактивирайте SELinux:——->на всички сървъри(percona1,percona2,percona3)

[[email protected] ~]# setenforce 0

Това ще постави SELinux в разрешителен режим за текущата сесия, но трябва да го деактивираме за постоянно.
редактиране на /etc/sysconfig/selinux файл задайте selinux променлива като деактивирана на всички сървъри (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=деактивирано

Всички сървъри трябва да са достъпни един за друг, За да се провери достъпността, ping на всеки сървър.

Инсталирайте по-долу prereq RPM:——->на целия сървър(percona1,percona2,percona3)

epel-release
libev
socat

[[email protected] ~]# yum -y инсталира epel-release Инсталиран:epel-release.noarch 0:7-11[[email protected] yum.repos.d]# yum -y инсталира libev Инсталиран :libev.x86_64 0:4.15-7.el7[[email protected] Desktop]# yum -y install socat Installed:socat.x86_64 0:1.7.3.2-2.el7

Добавяне на хранилище на Percona:——->на целия сървър(percona1,percona2,percona3)

Сега ще добавим хранилището на percona във всичките три сървъра (percona1,percona2,percona3):

[[email protected] ~]# sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpmInstalled:percona-release.noarch 0:1.0-13 Завършен !

Инсталирайте Percona-XtraDB-Cluster:——->на целия сървър(percona1,percona2,percona3)

[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Заредени плъгини:fastestmirror, langpacks Зареждане на скоростите на огледалото от кеширан хост файл...Инсталирано:Percona-XtraDB-Cluster-57.x86_674 0:.27-31.39.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.27- .1.el7Dependency Installed:Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.27-31.79. percona-xtrabackup-24.x86_64 0:2.4.17-1.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-Digest.noarch 0:1.17-245.el7 perl-Digest6_MD8. :2.52-3.el7 qpress.x86_64 0:11-1.el7 Заменен:mariadb-libs.x86_64 1:5.5.60-1.el7_5 Завършен!

Нека проверите дали Percona XtraDB е инсталиран или не.

[[email protected] ~]# yum търсене Percona-XtraDBЗАБЕЛЕЖКА: До тук всички по-горе стъпки трябва да се изпълняват на всички сървъри (percona1,percona2,percona3)
Конфигуриране на възли за репликация на набор от запис
ВКЛ. Percona1:

Нека стартирате MySQL сървъра и сменете root паролата само на percona1 сървър

[[email protected] ~]# systemctl стартиране на mysql[[email protected] ~]# grep парола /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Забележка] Временна парола се генерира за [email protected]:hJ(l8ySe>f>ENЗабележка:копирайте паролата "hJ(l8ySe>f>E"), ние ще променим тази парола :[[email protected] ~]# mysql_secure_installation --- ---->на целия сървър(percona1,percona2,percona3)Осигуряване на внедряването на MySQL сървъра.Въведете парола за потребителски root:Съществуващата парола за root на потребителския акаунт е изтекла Моля, задайте нова парола.Нова парола:Въведете отново нова парола:ПРИЛОЖКА ЗА ВАЛИДАЦИЯ НА ПАРОЛА може да се използва за тестване на пароли и подобряване на сигурността. Проверява силата на паролата и позволява на потребителите да задават само тези пароли, които са достатъчно сигурни. Искате ли да настроите плъгин VALIDATE PASSWORD? Натиснете y|Y за Да, всяка друг ключ за Не:Използване на съществуваща парола за root. Промяна на паролата за root ? ((Натиснете y|Y за Да, всеки друг ключ за Не) :... пропускане. По подразбиране инсталиране на MySQL ation има анонимен потребител, което позволява на всеки да влезе в MySQL, без да се налага да има създаден потребителски акаунт за него. Това е предназначено само за проверка и за да направи инсталацията малко по-гладка. Трябва да ги премахнете, преди да преминете в производствена среда. Да премахнете ли анонимните потребители? (Натиснете y|Y за Да, всеки друг клавиш за Не) :yesSuccess. Обикновено root трябва да има право да се свързва само от 'localhost'. Това гарантира, че някой не може да отгатне паролата на root от мрежата. Да се ​​забрани ли отдалечено влизане в root? (Натиснете y|Y за Да, всеки друг клавиш за Не) :yesSuccess. По подразбиране MySQL идва с база данни, наречена 'test', до която всеки има достъп. Това също е предназначено само за тестване и трябва да бъде премахнато, преди да се премести в производствена среда. Да се ​​премахне ли тестовата база данни и достъпа до нея? (Натиснете y|Y за Да, всеки друг клавиш за Не) :... пропускане. Презареждането на таблиците с привилегии ще гарантира, че всички направени досега промени ще влязат в сила незабавно. Презареждане на таблиците с привилегии сега? (Натиснете y|Y за Да, всеки друг клавиш за Не) :yesSuccess. Всичко готово!

Сега спрете MySQL сървъра на percona1.

[[email protected] ~]# systemctl стоп mysql

Сега ще конфигурираме нашата репликация, ще добавим информация за репликация във файла my.cnf.

Конфигуриране на настройките за репликация на percona1:
cat>>/etc/my.cnf<Ef_storage_innolock> 

Сега инициализирайте клъстера, като стартирате първия възел. Това трябва да е възелът с основната ви база данни, който ще се използва като източник на данни за клъстера в нашия случай е percona1 сървър

[[email protected] ~]# systemctl start [email protected] Преди да конфигурираме репликацията, трябва да създадем отделен потребител за репликация, който ще се използва за процеса на репликация. защо имаме нужда от потребител за репликация? когато добавите нов възел към клъстера, той изхвърля текущата конфигурация на възел и го прехвърля към втория възел, поради тази причина се нуждаем от отделен потребител.

ЗАБЕЛЕЖКА: Уверете се, че потребителят трябва да е същият, споменат срещу променливата “wsrep_sst_auth” в конфигурацията за репликация, използвана във файла my.cnf.

[[email protected] ~]#mysql -u root -p mysql>създайте потребител [email protected]'%' идентифициран от 'perconapasswd';mysql>предоставете всички на *.* на [email protected] '%';mysql>флуш привилегии;
ВКЛ. Percona2:

Конфигурирайте настройките за репликация на percona2:

cat>>/etc/my.cnf<Ef_storage_innolock> 

Сега стартирайте mysql и това ще добави този възел към клъстера.

[[email protected] ~]# systemctl стартира mysql
ВКЛ. Percona3:

Конфигурирайте настройките за репликация на percona3:

cat>>/etc/my.cnf<Ef_storage_innolock> 

Сега стартирайте mysql и това ще добави този възел към клъстера.

[[email protected] ~]# systemctl стартира mysql

ще наблюдавате такива съобщения в дневника на mysql (var/log/mysqld.log)

(percona2):Прехвърлянето на състояние от 0.0 (percona1) завършено

1.0 (percona3):Прехвърлянето на състоянието от 0.0 (percona1) завършено

За да сте сигурни, че клъстерът е инициализиран, изпълнете следното:

mysql> показва състояние като 'wsrep%';+----------------------------------+- -------------------------------------------------- ----------+| Име на променлива | Стойност |+---------------------------------+------------ -------------------------------------------------+ | wsrep_local_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_protocol_version | 9 || wsrep_last_applied | 6 |...| wsrep_flow_control_recv | 0 || wsrep_flow_control_interval | [ 173, 173 ] || wsrep_flow_control_interval_low | 173 || wsrep_flow_control_interval_high | 173 || wsrep_flow_control_status | ИЗКЛЮЧЕНО |..| wsrep_local_state | 4 || wsrep_local_state_comment | Синхронизиран || wsrep_cert_index_size | 1 || wsrep_cert_bucket_count | 22 || wsrep_gcache_pool_size | 2384 |..| wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306 || wsrep_cluster_weight | 3 || wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | ОПЕРАТИВНА || wsrep_gcomm_uuid | 1d16f574-1c1b-11ea-b5dd-574c9a653584 || wsrep_cluster_conf_id | 3 || wsrep_cluster_size  | 3 || wsrep_cluster_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_cluster_status | Основен || wsrep_connected | ВКЛЮЧЕНО || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || wsrep_provider_name | Галера || wsrep_provider_vendor | Codership Oy  || wsrep_provider_version | 3.39(rb3295e6) || wsrep_ready | ВКЛЮЧЕНО |+---------------------------------+------------ -------------------------------------------------+ 71 реда в комплект (0,00 сек)

Както можете да видите, че размерът на клъстера е 3 “wsrep_cluster_size | 3” и можете също да видите IP адреса на нашите три възела
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306

Тествайте нашия клъстер:

Създавам база данни на percona 1 и след това ще проверим на percoan 3 дали е репликирана.

mysql> показване на бази данни;+-------------------+| База данни |+-------------------+| информационна_схема || mysql || схема_изпълнение || sys |+--------------------+4 реда в комплект (0,03 сек)mysql> СЪЗДАВАНЕ НА БАЗА ДАННИ perconatest;Заявката ОК, 1 ред засегнат (0,03 сек) 

Сега нека проверим percona3, ще видим, че „perconatest“ DB ще бъде създадена

[[email protected] ~]# mysql -uroot -p -e "покажи бази данни"Въведете парола:+--------------------+| База данни |+-------------------+| информационна_схема || mysql || перконатест || схема_изпълнение || sys |+-------------------+

  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 на CentOS 6

  2. Как да качвате и изтегляте файлове PHP и MySQL

  3. Грешка в изготвения израз на mysql:MySQLSyntaxErrorException

  4. Скрипт за проверка на състоянието на репликацията на MySQL

  5. Изтриване на дублиращи се редове от таблица