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

Как да внедрите MariaDB Cluster 10.5 за висока наличност

 

Разгръщането на MariaDB Cluster 10.5 се поддържа в ClusterControl от версия 1.8.1.

MariaDB 10.5 е оборудван с:

  • Още подробни привилегии

  • Подобрения в производителността на InnoDB

  • Пълна поддръжка на GTID за Galera Cluster

  • Още метаданни за репликация и двоични регистрационни файлове

  • Още SQL синтактични изрази (RETURNING израз към INSERT, EXCEPT ALL и INTERSECT ALL, …)

  • Актуализации на схемата на производителност, за да съответства на MySQL 5.7

  • S3 Storage Engine

Можете да проверите допълнително в предишния ни блог 

За повече подробности относно тази конкретна версия, вижте какво е новото в MariaDB 10.5? Някои от най-значимите промени от версия 10.4 до 10.5 включват:

  • Последователност на GTID 

  • Непоследователност/грешка при гласуване в клъстера 

  • неблокиращи DDL операции (достъпно само за корпоративна версия)

  • Черна кутия (достъпна само за корпоративна версия) 

  • Надстрои своята библиотека wsrep Galera, за която 26.4.6 е най-новата версия

Първоначално се очакваше поддръжка на XA транзакции за тази версия (не се бъркайте, тъй като XA транзакциите се поддържат от MariaDB Server, но не и от Galera Cluster). Въпреки това, поради някои последици за производителността, MariaDB Galera Cluster не поддържа XA транзакции.

В този блог ще обсъдим как да разгърнем MariaDB Cluster 10.5 за висока наличност.

Клъстер MariaDB за висока наличност

Клъстерът MariaDB е по същество клъстер Galera, който използва реализацията на MariaDB като слой на базата данни за взаимодействие с двигателя InnoDB или XtraDB. MariaDB Galera Cluster е практически синхронен мулти-главен клъстер за MariaDB. Предлага се само на Linux и поддържа XtraDB/InnoDB двигателите за съхранение (въпреки че има експериментална поддръжка за MyISAM — вижте системната променлива wsrep_replicate_myisam). Когато се използва Galera Cluster, четенето и записването на база данни може да бъде насочено към всеки възел. Всеки отделен възел може да бъде загубен без прекъсване на операциите и без използване на сложни процедури за преодоляване на срив.

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

Разгръщане на MariaDB Cluster 10.5

MariaDB предоставя ясна и лесна настройка за инсталиране на вашия MariaDB Cluster 10.5. Ръчният процес може да бъде досаден, но с автоматизирани скриптове, предоставени от MariaDB, хранилищата могат да бъдат настроени в съответствие с вашата целева версия на базата данни, тип ОС и версия на ОС.

За това упражнение имам следната настройка на Galera Cluster с 3 възела със следните IP адреси:192.168.40.210, 192.168.40.220, 192.168.40.230.

Настройте своето хранилище

Както споменахме по-рано, MariaDB има скрипт на име mariadb_repo_setup и е лесен за използване. Можете да посочите целевата версия на вашата база данни, типа на ОС и версията на вашата ОС.

Например, инсталирам с EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

или да го инсталирате в Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Обърнете внимание, че когато използвате скрипт mariadb_repo_setup, той изисква пакета apt-transport-https като зависимост. Затова първо инсталирайте този пакет, преди да можете да се възползвате от скрипта mariadb_repo_setup.

apt update

apt install apt-transport-https

Сега изпълнете командата към трите си възела според тяхната ОС. Разбира се, версията на MariaDB трябва да е 10.5.

Настройте MySQL конфигурация

Конфигурационният файл зависи от ресурсите на вашия сървър, типа сървърна среда и присвоения IP адрес. За този блог можете да използвате тази готова за производство конфигурация на MariaDB Cluster/PXC, която използвахме за внедряване в нашите бази данни Percona XtraDB Cluster/MariaDB Cluster, използвайки ClusterControl. Забележимите променливи, от които се нуждаете или подлежащи на промяна, са следните:

  • innodb_buffer_pool_size — Задайте буферния пул от 70% - 80% налична RAM на вашия сървър

  • wsrep_provider — Пътят на компилираната библиотека на Galera. За Enterprise Linux пътят трябва да бъде  /usr/lib64/galera-4/libgalera_smm.so. Докато Debian/Ubuntu е в /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — Това е IP адресът на възела

  • wsrep_sst_method — Можете да го промените, но ви препоръчваме да използвате mariabackup. Възможните стойности, които можете да изберете, са rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — Името на вашия MariaDB клъстер. Той трябва да е идентичен с всичките ви възли в един MariaDB клъстер.

  • wsrep_cluster_address — Това съдържа адресите на вашите възли в клъстера. Трябва да е валидно IP, име на хост или FQDN.

  • wsrep_node_name — Името на вашия възел. Името може да се използва в wsrep_sst_donor като предпочитан донор. Имайте предвид, че множество възли в клъстер могат да имат едно и също име.

За извършване на SST потребителят и паролата за следните раздели [mysqldump], [xtrabackup] и [mysqld] могат да се променят, ако желаете. За това упражнение нека да го простим и можете просто да оставите стойностите такива, каквито са.

Сега копирайте конфигурационния файл и го поставете в /etc/my.cnf. Направете това с всичките си три възела на Galera.

Инсталиране на необходимите пакети

Инсталирайте пакетите и за трите възела на Galera. Следвайте командата по-долу въз основа на вашата целева операционна среда.

За RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

За Debian/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

След като инсталацията приключи, спрете процеса на MariaDB и инициализирайте клъстера като един възел. Това ще стартира вашия Galera Cluster. На този етап го изпълнявам на възел 192.168.40.210.

$ /usr/bin/galera_new_cluster

Създаване на SST/IST потребител

Създайте резервния потребител, който ще се използва за SST или IST. Изпълнете следните SQL оператори по-долу само на първия възел, на който сте инициирали клъстера. На този етап го изпълних във възел 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

В този момент вече сме настроени и готови да свържем останалите възли.

Стартирайте сървъра MariaDB

Сега вече сме настроили първия възел. Готови сме да свържем останалите възли. Просто стартирайте услугата MariaDB. Просто изпълнете командата по-долу:

systemctl start mariadb

Изпълнете командата за останалите възли един по един. В този момент всички възли са в синхрон.

Добавяне на стероиди за вашия MariaDB Cluster 10.5 за висока наличност

Вероятно внедряването на MariaDB Cluster 10.5 за висока наличност може да не е достатъчно за нуждите ви в производствена настройка. Добавянето на повече стероиди, като например инсталиране на HAProxy заедно с Keepalived за вашето резервиране, ще донесе по-висока наличност за вашата среда на база данни.

Настройването на HAProxy и Keepalived за получаване на желаната топология и среда може да създаде повече проблеми. Можете обаче да автоматизирате това с ClusterControl. Използвайки ClusterControl, можете да разгърнете своя MariaDB Cluster 10.5 и да добавите още решения за балансиране на натоварването, като ProxySQL, MaxScale или garbd. Можете да добавите Keepalived към своя клъстер, за да добавите решения за резервиране и автоматично отказване в случай на бедствие.

Можете да изтеглите безплатна пробна версия на ClusterControl, която ще ви позволи да внедрите тези HA решения и да управлявате цялата си работа с база данни от едно стъкло. Ще разгледаме как да разположите своя MariaDB 10.5 Cluster с ClusterControl.

Разгръщане на MariaDB 10.5 Cluster с ClusterControl

След като инсталирате ClusterControl, щракнете върху иконата в горния десен ъгъл и ще видите съветника за внедряване точно както по-долу.

Можете да го настроите лесно. Просто следвайте поредицата от стъпки въз основа на потока на потребителския интерфейс.

Внедряване на HAProxy за управление на балансиране на натоварването

На този етап бих предположил, че имате напълно настроен вашия MariaDB Cluster 10.5. Сега нека разположим HAProxy:

Освен това можете да отидете на Управление → Балансиране на натоварване → HAProxy.

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

Добавете поне две внедрявания на HAProxy, за да добавите повече наличност. Всеки път, когато един от вашите HAProxy изпадне, вашето приложение ще се насочи към другия възел, който все още е достъпен или онлайн. Това е много важно, особено при работа с база данни или надстройки на системата, освен при катастрофални или бедствени събития.

Внедряване на Keepalived

Ще използвате същия процес по-горе, за да внедрите Keepalived, както е показано по-долу:

Ако сте забелязали, имам два HAProxy екземпляра, за които ще инсталирам Keepalived , който трябва да присъства във всеки възел, където работи HAProxy.

Финализиране на вашия MariaDB Cluster 10.5 с висока наличност

Сега, когато имаме всичко настроено, трябва да имате среда, която изглежда така:

Приключване

Тази настройка за вашия MariaDB 10.5 Cluster ви дава предимствата за постигане на висока наличност с няколко деветки. HAProxy ви предоставя повече възможности за балансиране на натоварването със своето разделяне на четене и запис, а Keepalived гарантира, че в случай, че един от вашите HAProxy умре, той ще премине при отказ към следващия наличен възел. Приложението ви ще се свърже само с виртуалния IP адрес (който следва VRRP) и няма да изисква допълнителна конфигурация или настройка.

За да добавите още повече гъвкавост и разделяне на четене/запис, като просто играете само на един порт, можете да замените HAProxy с ProxySQL. Постигането на перфектна настройка за висока наличност може да бъде трудно и всяка от тях има своите недостатъци. Най-важното обаче е, че се постига малък или никакъв престой.

За повече съвети относно изграждането на високодостъпна настройка на MariaDB, вижте тази част относно внедряването на репликация на MariaDB.

Ако искате да сте в крак с тенденциите в базата данни и най-добрите практики, абонирайте се за нашия бюлетин и ни следвайте в Twitter и LinkedIn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как LN() работи в MariaDB

  2. Моята MySQL база данни е извън дисковото пространство

  3. Как да получите краткото име на месеца от дата в MariaDB

  4. Опростете управлението на потребителски акаунт с MariaDB MaxScale 2.2 и MariaDB Server 10.3

  5. WEEKDAY() срещу DAYOFWEEK() в MariaDB:Каква е разликата?