Потребителите на бази данни с отворен код често трябва да използват смесица от инструменти и собствени скриптове, за да управляват своите производствени среди на база данни. Въпреки това, дори и да имате собствени скриптове в решението, е трудно да го поддържате и да сте в крак с новите функции на базата данни, изискванията за сигурност или надстройките. С новите основни версии на база данни, включително MySQL 8.0, тази задача може да стане още по-трудна.
В основата на ClusterControl е неговата функционалност за автоматизация, която ви позволява да автоматизирате задачите на базата данни, които трябва да изпълнявате редовно, като разгръщане на нови бази данни, добавяне и мащабиране на нови възли, управление на архивиране, висока наличност и отказ, промени в топологията, надстройки и др. Автоматизираните процедури са точни, последователни и повтарящи се, така че можете да сведете до минимум риска от промени в производствените среди.
Освен това с ClusterControl потребителите на MySQL вече не подлежат на заключване на доставчика; нещо, което напоследък беше поставено под въпрос от мнозина. Можете да разгръщате и импортирате безплатно различни версии и доставчици на MySQL от една конзола.
В тази статия ще ви покажем как да внедрите MySQL 8.0 с изпитана в битка конфигурация и да го управлявате по автоматизиран начин. Тук ще намерите как да направите:
- Инсталиране на ClusterControl
- Процес на внедряване на MySQL
- Внедряване на нов клъстер
- Импортиране на съществуващ клъстер
- Мащабиране на MySQL
- Защита на MySQL
- Наблюдение и тенденция
- Архивиране и възстановяване
- Автоматично възстановяване на възел и клъстер (автоматично преминаване при отказ)
Инсталиране на ClusterControl
За да започнете с ClusterControl, имате нужда от специална виртуална машина или хост. Изискванията за VM и поддържаните системи са описани тук. Базовата VM може да започне от 2 GB, 2 ядра и дисково пространство от 20 GB място за съхранение, локално или в облака.
Инсталацията е добре описана в документацията, но по принцип изтегляте инсталационен скрипт, който ви превежда през стъпките. Скриптът на съветника настройва вътрешната база данни, инсталира необходимите пакети, хранилища и други необходими настройки. За среди без достъп до интернет можете да използвате офлайн инсталационния процес.
ClusterControl изисква SSH достъп до хостовете на базата данни и наблюдението може да бъде базирано на агенти или без агенти. Управлението е без агенти.
За да настроите SSH без парола към всички целеви възли (ClusterControl и всички хостове на база данни), изпълнете следните команди на сървъра ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Един от най-удобните начини да изпробвате клъстерния контрол може би опцията да го стартирате в контейнер за докер.
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol
След успешно внедряване трябва да имате достъп до уеб потребителския интерфейс на ClusterControl на {host's IP address}:{host's port}, например:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Разгръщане и мащабиране
Внедряване на MySQL 8.0
След като влезем в интерфейса на ClusterControl, първото нещо, което трябва да направите, е да разположите нова база данни или да импортирате съществуваща. Новата версия 1.7.2 въвежда поддръжка за версия 8.0 на Oracle Community Edition и Percona Server. Към момента на писане на този блог текущите версии са Oracle MySQL Server 8.0.15 и Percona Server за MySQL 8.0-15. Изберете опцията „Разгръщане на клъстер от база данни ” и следвайте инструкциите, които се появяват.
ClusterControl:Разгръщане на клъстер от база данниКогато избираме MySQL, трябва да посочим потребител, ключ или парола и порт за свързване чрез SSH към нашите сървъри. Също така имаме нужда от име за нашия нов клъстер и ако искаме ClusterControl да инсталира съответния софтуер и конфигурации вместо нас.
След като настроим информацията за SSH достъп, трябва да въведете данните за достъп до нашата база данни. Можем също да посочим кое хранилище да използваме. Конфигурацията на хранилището е важен аспект за сървърите на бази данни и клъстерите. Можете да имате три типа хранилища, когато разгръщате сървър на база данни/клъстер с помощта на ClusterControl:
- Използвайте хранилище на доставчик
Предоставяне на софтуер чрез настройка и използване на предпочитания софтуерен хранилище на доставчика на базата данни. ClusterControl ще инсталира най-новата версия на това, което се предоставя от хранилището на доставчика на базата данни. - Не настройвайте хранилища на доставчици
Предоставяне на софтуер чрез използване на съществуващото софтуерно хранилище, което вече е настроено на възлите. Потребителят трябва да настрои ръчно софтуерното хранилище на всеки възел на базата данни и ClusterControl ще използва това хранилище за внедряване. Това е добре, ако възлите на базата данни работят без интернет връзка. - Използвайте огледални хранилища (Създаване на ново хранилище)
Създайте и огледайте хранилището на текущия доставчик на база данни и след това разгръщайте с помощта на локалното огледално хранилище. Това ви позволява да „замразите“ текущите версии на софтуерните пакети.
В следващата стъпка трябва да добавим нашите сървъри към клъстера, който ще създадем. Когато добавяме нашите сървъри, можем да въведем IP или име на хост, след което да изберем мрежов интерфейс. За последното трябва да имаме DNS сървър или да сме добавили нашите MySQL сървъри към файла за локална разделителна способност (/etc/hosts) на нашия ClusterControl, за да може да разреши съответното име, което искате да добавите.
На екрана можем да видим примерно разгръщане с един главен и два подчинени сървъра. Списъкът със сървъри е динамичен и ви позволява да създавате сложни топологии, които могат да бъдат разширени след първоначалната инсталация.
ClusterControl:Дефиниране на топологияКогато всичко е настроено, натиснете бутона за разгръщане. Можете да наблюдавате състоянието на създаването на нашата нова настройка за репликация от монитора на активността на ClusterControl. Процесът на внедряване също ще се погрижи за инсталирането на популярни инструменти на mysql като percona toolkit и percona-xtradb-backup.
ClusterControl:Разгръщане на подробности за клъстераСлед като задачата приключи, можем да видим нашия клъстер в главния екран на ClusterControl и в изгледа на топологията. Имайте предвид, че добавихме и балансьор на натоварване (ProxySQL) пред екземплярите на базата данни.
ClusterControl:ТопологияКакто можем да видим на изображението, след като създадем нашия клъстер, можем да изпълним няколко задачи върху него директно от секцията за топология.
ClusterControl:Управление на топологиятаИмпортиране на нов клъстер
Също така имаме възможност да управляваме съществуваща настройка, като я импортираме в ClusterControl. Такава среда може да бъде създадена от ClusterControl или други методи (puppet, chef, ansible, docker…). Процесът е прост и не изисква специални познания.
ClusterControl:Импортиране на съществуващ клъстерПърво, трябва да въведете идентификационните данни за SSH достъп до нашите сървъри. След това въвеждаме идентификационните данни за достъп до нашата база данни, директорията с данни на сървъра и версията. Добавяме възлите по IP или име на хост, по същия начин, както когато разгръщаме, и натискаме Импортиране. След като задачата приключи, ние сме готови да управляваме нашия клъстер от ClusterControl. В този момент можем също да дефинираме опциите за автоматично възстановяване на възел или клъстер.
Мащабиране на MySQL
С ClusterControl добавянето на повече сървъри към сървъра е лесна стъпка. Можете да направите това от GUI или CLI. За по-напреднали потребители можете да използвате ClusterControl Developer Studio и да напишете базово условие за ресурси, за да разширите автоматично клъстера си.
Когато добавяте нов възел към настройката, имате възможност да използвате съществуващо архивиране, така че няма нужда да претоварвате производствения главен възел с допълнителна работа.
ClusterControl Scaling MySQLС вградената поддръжка за балансьори на натоварване (ProxySQL, Maxscale, HAProxy) можете да добавяте и премахвате MySQL възли динамично. Ако искате да научите повече за това как най-добре да управлявате репликацията и клъстерирането на MySQL, моля, прочетете бялата книга за репликация на MySQL за HA репликация.
Осигуряване на MySQL
MySQL идва с много малко сигурност от кутията. Това беше подобрено с последната версия, но системите с производствен клас все още изискват промени в конфигурацията по подразбиране my.cnf.
ClusterControl премахва човешката грешка и предоставя достъп до набор от функции за сигурност, за да защити автоматично вашите бази данни от хакове и други заплахи.
ClusterControl позволява SSL поддръжка за MySQL връзки. Активирането на SSL добавя още едно ниво на сигурност за комуникация между приложенията (включително ClusterControl) и базата данни. MySQL клиентите отварят криптирани връзки към сървърите на базата данни и проверяват самоличността на тези сървъри, преди да прехвърлят каквато и да е чувствителна информация.
ClusterControl ще изпълни всички необходими стъпки, включително създаване на сертификати на всички възли на базата данни. Такива сертификати могат да се поддържат по-късно в раздела Key Management.
ClusterControl:Мениджър на SSL ключовеСървърните инсталации на Percona идват с допълнителна поддръжка за плъгин за одит. Непрекъснатият одит е наложителна задача за наблюдение на вашата среда на база данни. Чрез одит на вашата база данни можете да постигнете отчетност за предприетите действия или достъп до съдържание. Освен това одитът може да включва някои критични системни компоненти, като тези, свързани с финансови данни, за да поддържат точен набор от регулации като SOX или регламента на GDPR на ЕС. Насочваният процес ви позволява да изберете какво да бъде одитирано и как да поддържате регистрационните файлове за одит.
ClusterControl:Активирайте регистрационния файл за одит за Percona Server 8.0Наблюдение
Когато работите със системи от бази данни, трябва да можете да ги наблюдавате. Това ще ви позволи да идентифицирате тенденции, да планирате надстройки или подобрения или да реагирате ефективно на всякакви проблеми или грешки, които могат да възникнат.
Новият ClusterControl 1.7.2 идва с актуализиран мониторинг с висока разделителна способност за MySQL 8.0. Той използва Prometheus като хранилище на данни с език за заявки PromQL. Списъкът с табла за управление включва MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview и Cluster Overview Dashboards.
ClusterControl инсталира агенти на Prometheus, конфигурира метрики и поддържа достъп до конфигурацията на експортерите на Prometheus чрез своя GUI, така че можете по-добре да управлявате конфигурацията на параметри като флагове на колектор за експортерите (Prometheus). Описахме подробно какво може да се наблюдава наскоро в статията Как да наблюдаваме MySQL с Prometheus &ClusterControl.
ClusterControl:Табло за управлениеСигнал
Като оператор на база данни, ние трябва да бъдем информирани всеки път, когато се случи нещо критично в нашата база данни. Трите основни метода в ClusterControl за получаване на сигнал включват:
- известия по имейл
- интеграции
- съветници
Можете да настроите имейл известията на потребителско ниво. Отидете на Настройки> Известия по имейл . Където можете да избирате между критичност и тип предупреждение, което да бъде изпратено.
ClusterControl:УведомяванеСледващият метод е да използвате услуги за интеграция. Това е за предаване на конкретната категория събития към друга услуга, като билети на ServiceNow, Slack, PagerDuty и т.н., за да можете да създадете разширени методи за уведомяване и интеграции във вашата организация.
ClusterControl:ИнтегриранеПоследният е да включите усъвършенстван анализ на показателите в секцията Съветник, където можете да създадете интелигентни проверки и задействания.
ClusterControl:Автоматични съветнициАрхивиране и възстановяване
Сега, когато вашият MySQL работи и работи и имате мониторинг, е време за следващата стъпка:уверете се, че имате резервно копие на вашите данни.
ClusterControl:Създаване на резервно копиеClusterControl предоставя интерфейс за управление на архивиране на MySQL с поддръжка за планиране и творчески отчети. Той ви дава две опции за методи за архивиране.
- Логически:mysqldump
- Бинарно:xtrabackup/mariabackup
Добрата стратегия за архивиране е критична част от всяка система за управление на база данни. ClusterControl предлага много опции за архивиране и възстановяване/възстановяване.
ClusterControl:График за архивиране и архивно хранилищеЗапазването на резервно копие на ClusterControl може да се конфигурира; можете да изберете да запазите архива си за всеки период от време или никога да не изтривате резервни копия. AES256 криптиране се използва за защита на вашите архиви срещу измамни елементи. За бързо възстановяване резервните копия могат да бъдат възстановени директно в нов клъстер - ClusterControl управлява пълния процес на възстановяване от стартирането на нова настройка на базата данни до възстановяването на данни, премахвайки от процеса ръчни стъпки, склонни към грешки.
Архивите могат да бъдат автоматично проверени след завършване и след това качени в услуги за съхранение в облак (AWS, Azure и Google). Могат да бъдат дефинирани различни правила за задържане за локални архиви в центъра за данни, както и за резервни копия, които се качват в облака.
Автоматично възстановяване на възел и клъстер
ClusterControl осигурява разширена поддръжка за откриване и обработка на неизправности. Той също така ви позволява да разгръщате различни прокси сървъри, за да ги интегрирате с вашия HA стек, така че няма нужда да коригирате низ за връзка с приложението или DNS запис, за да пренасочите приложението към новия главен възел.
Когато главният сървър не работи, ClusterControl ще създаде задание за извършване на автоматично преминаване при отказ. ClusterControl върши цялата работа на заден план, за да избере нов главен, да внедри подчинени сървъри при отказ и да конфигурира балансиращите устройства.
ClusterControl:Автоматично възстановяване на възелАвтоматичното превключване при отказ на ClusterControl е проектирано със следните принципи:
- Уверете се, че главният е наистина мъртъв, преди да преминете при отказ
- Отказ само веднъж
- Не прехвърляйте при отказ към непоследователно подчинено устройство
- Пишете само на главната
- Не възстановявайте автоматично неуспешния главен код
С вградените алгоритми преминаването при отказ често може да се извърши доста бързо, за да можете да осигурите най-високите SLA за вашата среда на база данни.
Процесът е силно конфигурируем. Той идва с множество параметри, които можете да използвате, за да приспособите възстановяването към спецификата на вашата среда. Сред различните опции можете да намерите replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script и много други.