ClusterControl 1.7.1 въвежда нова функция, наречена Създаване на клъстер от архивиране, която ви позволява да разгръщате нов MySQL или Postgres-базиран клъстер и да възстановите данни върху него от резервно копие. Тази публикация в блога показва как работи тази нова функция и как този тип автоматизация може да осигури подобрения на операциите на вашата инфраструктура.
Въведение:Създаване на клъстер от архивиране
Управлението на архивиране е най-обичаната функция от нашите потребители и току-що я издигнахме на следващото ниво. Тази нова функционалност звучи просто - ClusterControl 1.7.1 е в състояние да разгърне нов клъстер от съществуващ архив. Има обаче множество процедури и проверки, за да се разгърне клъстер от производствен клас директно от резервно копие. Самото възстановяване идва със свои собствени предизвикателства, като например:
- Последствия за пълно или частично възстановяване
- Основно архивиране и подреждане на постепенните архиви (за инкрементално архивиране)
- Резервно декриптиране (ако е криптирано)
- Опции на инструмента за възстановяване
- Декомпресия (ако е компресирана)
- Резервно поточно предаване от източника към сървъра местоназначение
- Използване на дисковото пространство по време и след възстановяването
- Отчитане на напредъка на възстановяването
Комбинирайте горното със сложността и повтаряемостта на задачите за разгръщане на клъстер от бази данни, можете да спестите време и да намалите риска при изпълнение на процедури, податливи на грешки. Най-трудната част от гледна точка на потребителя е да изберете от кой архив да се възстанови. ClusterControl ще се справи с цялата тежка работа зад сцената и ще докладва крайния резултат, след като приключи.
Стъпките са основно прости:
- Настройте SSH без парола от възела ClusterControl към новите сървъри.
- Изберете едно логическо архивиране от списъка с архиви или създайте такъв под Резервни копия -> Създаване на архив .
- Щракнете върху Възстановяване -> Създаване на клъстер от архивиране и следвайте съветника за внедряване.
Тази функция е специално създадена за MySQL Galera Cluster и PostgreSQL в момента. Ето какво ще видите в потребителския интерфейс, след като щракнете върху „Възстановяване“ на съществуващ архив:
Долният вариант е това, което търсим. Следва диалоговият прозорец за обобщение на избраното резервно копие преди конфигурацията за внедряване:
След това ще се покаже същият съветник за внедряване на клъстер от база данни за съответния клъстер (MySQL Galera Cluster или PostgreSQL), за да конфигурирате нов клъстер:
Имайте предвид, че трябва да посочите същото потребителско име и парола за root/admin на базата данни като тези, които имате в архива. В противен случай разполагането ще се провали наполовина при стартиране на първия възел. Като цяло, процедурите за възстановяване и внедряване ще се извършват в следния ред:
- Инсталирайте необходимия софтуер и зависимости на всички възли на базата данни.
- Стартирайте първия възел.
- Предаване и възстановяване на архивно копие на първия възел (с флаг за автоматично рестартиране).
- Конфигурирайте и добавете останалите възли.
Нов клъстер от база данни ще бъде посочен под таблото за управление на клъстера ClusterControl, след като задачата приключи.
Какво можете да спечелите от това?
Има редица неща, от които бихте могли да се възползвате от тази функция, както е обяснено в следващите раздели.
Тествайте своя набор от данни при различни условия
Понякога може да се чудите дали новата версия на базата данни ще работи или ще работи за натоварването на вашата база данни и тестването й е единственият начин да разберете. Тук тази функция е полезна. Позволява ви да извършвате тестове и бенчмаркове на много включени променливи, които биха повлияли на стабилността или производителността на базата данни, например на основния хардуер, версия на софтуера, доставчик и натоварвания на база данни или приложения.
За прост пример, има голямо подобрение в изпълнението на DDL между MySQL 5.6 и MySQL 5.7. Следната операция DROP върху таблица от 10 милиона реда доказва всичко:
mysql-5.7> ALTER TABLE sbtest1 DROP COLUMN xx;
Query OK, 0 rows affected (1 min 58.12 sec)
mysql-5.6> ALTER TABLE sbtest1 DROP COLUMN xx;
Query OK, 0 rows affected (2 min 23.74 sec)
Наличието на друг клъстер за сравнение всъщност ни позволява да измерим подобрението и да оправдаем миграцията.
Миграция на база данни с логическо архивиране
Логическо архивиране като mysqldump и pg_dumpall е най-сигурният начин за надграждане, понижаване или мигриране на вашите данни от една версия или доставчик към друга. Всички логически архиви могат да се използват за извършване на миграция на база данни. Стъпките за надграждане на базата данни са основно прости:
- Създайте (или насрочете) логическо архивиране - mysqldump за MySQL или pg_dumpall за PostgreSQL
- Настройте SSH без парола от възела ClusterControl към новите сървъри.
- Изберете едно създадено логическо архивиране от списъка с архиви.
- Щракнете върху Възстановяване -> Създаване на клъстер от архивиране и следвайте съветника за внедряване.
- Проверете възстановяването на данни в новия клъстер.
- Насочете приложението си към новия клъстер.
По-бързо общо време за възстановяване на клъстера
Представете си катастрофална повреда, която пречи на клъстера ви да работи, като например грешка в централизираното съхранение, която засегна всички виртуални машини, които са се свързали с него, можете да получите заместващ клъстер почти веднага (при условие че архивните файлове се съхраняват извън неуспешните възли на базата данни , заявявайки очевидното). Тази функция може да бъде автоматизирана чрез s9s клиент, където можете да задействате задание чрез интерфейса на командния ред, например:
$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.101?master;192.168.0.102?slave;192.168.0.103?slave" \
--provider-version=11 \
--db-admin=postgres \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name="PostgreSQL 9.6 - Test"
--backup-id=214 \
--log
Едно нещо, което трябва да се отбележи, когато използвате тази функция, е да използвате същото потребителско име и парола на администратор като това, което се съхранява в архива. Също така, SSH без парола към всички възли на базата данни трябва да бъде конфигуриран предварително. В противен случай, ако предпочитате да го конфигурирате интерактивно, просто използвайте уеб интерфейса на потребителския интерфейс.
Намаляване чрез асинхронна репликация
За MySQL Galera Cluster, новосъздаденият клъстер има възможност да бъде мащабиран чрез MySQL асинхронна репликация. Да кажем, че вече сме възстановили нов клъстер в офиса въз основа на последното архивиране от производствения клъстер в центъра за данни и бихме искали офис клъстерът да продължи да се репликира от производствения клъстер, както е показано на следната диаграма:
След това можете да настроите връзката за асинхронна репликация, като използвате следния начин:
-
Изберете един възел в производството и активирайте двоично регистриране (ако е деактивирано). Отидете на Възли -> изберете възел -> Действия на възел -> Активиране на бинарно регистриране.
-
Активиране на двоично регистриране на всички възли за офис клъстер. Това действие изисква непрекъснато рестартиране, което ще се извърши автоматично, ако изберете „Да“ в падащото меню „Автоматично рестартиране на възел“:
В противен случай можете да извършите тази операция без прекъсване, като използвате Управление -> Надстройка -> Постоянно рестартиране (или ръчно рестартирайте един възел в даден момент).
-
Създайте потребител за репликация в производствения клъстер, като използвате Управление -> Схеми и потребители -> Потребители -> Създаване на нов потребител:
-
След това изберете един възел за репликиране към главния възел в производствения клъстер и настройте връзката за репликация:
mysql> CHANGE MASTER master_host = 'prod-mysql1', master_user = 'slave', master_password = 'slavepassw0rd', master_auto_position = 1; mysql> START SLAVE;
-
Проверете дали репликацията се изпълнява:
Уверете се, че Slave_IO_Thread и Slave_SQL_thread отчитат „Да“. Клъстерът на офиса трябва да започне да настига главния възел, ако изостава.mysql> SHOW SLAVE STATUS\G
Това е всичко за сега, хора!