Użytkownicy baz danych o otwartym kodzie źródłowym często muszą używać kombinacji narzędzi i własnych skryptów, aby zarządzać swoimi środowiskami produkcyjnymi baz danych. Jednak nawet mając w rozwiązaniu własne skrypty, trudno jest je utrzymać i nadążyć za nowymi funkcjami bazy danych, wymaganiami bezpieczeństwa lub aktualizacjami. Dzięki nowym głównym wersjom bazy danych, w tym MySQL 8.0, zadanie to może stać się jeszcze trudniejsze.
Sercem ClusterControl jest jego funkcja automatyzacji, która pozwala zautomatyzować zadania bazy danych, które musisz wykonywać regularnie, takie jak wdrażanie nowych baz danych, dodawanie i skalowanie nowych węzłów, zarządzanie kopiami zapasowymi, wysoka dostępność i przełączanie awaryjne, zmiany topologii, aktualizacje i inne. Zautomatyzowane procedury są dokładne, spójne i powtarzalne, dzięki czemu można zminimalizować ryzyko zmian w środowiskach produkcyjnych.
Co więcej, dzięki ClusterControl użytkownicy MySQL nie są już uzależnieni od dostawcy; coś, co ostatnio było kwestionowane przez wielu. Możesz wdrażać i importować różne wersje i dostawców MySQL z jednej konsoli za darmo.
W tym artykule pokażemy, jak wdrożyć MySQL 8.0 z konfiguracją przetestowaną w bitwach i zarządzać nią w sposób zautomatyzowany. Tutaj dowiesz się, jak to zrobić:
- Instalacja ClusterControl
- Proces wdrażania MySQL
- Wdróż nowy klaster
- Importuj istniejący klaster
- Skalowanie MySQL
- Zabezpieczenie MySQL
- Monitorowanie i trendy
- Tworzenie kopii zapasowych i odzyskiwanie
- Autoodzyskiwanie węzłów i klastrów (automatyczne przełączanie awaryjne)
Instalacja ClusterControl
Aby rozpocząć korzystanie z ClusterControl, potrzebujesz dedykowanej maszyny wirtualnej lub hosta. W tym miejscu opisano wymagania dotyczące maszyny wirtualnej i obsługiwanych systemów. Podstawowa maszyna wirtualna może zaczynać się od 2 GB, 2 rdzeni i przestrzeni dyskowej 20 GB przestrzeni dyskowej, lokalnie lub w chmurze.
Instalacja jest dobrze opisana w dokumentacji, ale w zasadzie pobierasz skrypt instalacyjny, który przeprowadzi Cię przez kolejne kroki. Skrypt kreatora konfiguruje wewnętrzną bazę danych, instaluje niezbędne pakiety, repozytoria i inne niezbędne poprawki. W środowiskach bez dostępu do Internetu możesz skorzystać z procesu instalacji offline.
ClusterControl wymaga dostępu SSH do hostów bazy danych, a monitorowanie może być oparte na agentach lub bez agentów. Zarządzanie jest bez agentów.
Aby skonfigurować bezhasłowe SSH do wszystkich węzłów docelowych (ClusterControl i wszystkich hostów bazy danych), uruchom następujące polecenia na serwerze 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
Jednym z najwygodniejszych sposobów wypróbowania kontroli klastra może być opcja uruchomienia go w kontenerze dockera.
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
Po pomyślnym wdrożeniu powinieneś mieć dostęp do interfejsu internetowego ClusterControl pod adresem {adres IP hosta}:{port hosta}, na przykład:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Wdrażanie i skalowanie
Wdróż MySQL 8.0
Po wejściu do interfejsu ClusterControl pierwszą rzeczą do zrobienia jest wdrożenie nowej bazy danych lub zaimportowanie istniejącej. Nowa wersja 1.7.2 wprowadza obsługę wersji 8.0 Oracle Community Edition i Percona Server. W chwili pisania tego bloga aktualne wersje to Oracle MySQL Server 8.0.15 i Percona Server for MySQL 8.0-15. Wybierz opcję „Wdróż klaster bazy danych ” i postępuj zgodnie z wyświetlanymi instrukcjami.
ClusterControl:wdrażanie klastra bazy danychWybierając MySQL, musimy określić Użytkownika, Klucz lub Hasło i port, aby połączyć się przez SSH z naszymi serwerami. Potrzebujemy również nazwy dla naszego nowego klastra i jeśli chcemy, aby ClusterControl zainstalował dla nas odpowiednie oprogramowanie i konfiguracje.
Po skonfigurowaniu informacji dostępowych SSH, musimy wprowadzić dane, aby uzyskać dostęp do naszej bazy danych. Możemy również określić, którego repozytorium użyć. Konfiguracja repozytorium jest ważnym aspektem dla serwerów baz danych i klastrów. Podczas wdrażania serwera/klastra bazy danych za pomocą ClusterControl możesz mieć trzy typy repozytoriów:
- Użyj repozytorium dostawców
Aprowizuj oprogramowanie, konfigurując i korzystając z repozytorium oprogramowania preferowanego przez dostawcę bazy danych. ClusterControl zainstaluje najnowszą wersję tego, co jest dostarczane przez repozytorium dostawcy bazy danych. - Nie konfiguruj repozytoriów dostawców
Udostępnianie oprogramowania przy użyciu istniejącego repozytorium oprogramowania, które zostało już skonfigurowane w węzłach. Użytkownik musi ręcznie skonfigurować repozytorium oprogramowania w każdym węźle bazy danych, a ClusterControl użyje tego repozytorium do wdrożenia. Jest to dobre, jeśli węzły bazy danych działają bez połączenia z Internetem. - Użyj repozytoriów lustrzanych (Utwórz nowe repozytorium)
Utwórz i zdubluj repozytorium obecnego dostawcy bazy danych, a następnie wdróż przy użyciu lokalnego zdublowanego repozytorium. Pozwala to na „zamrożenie” aktualnych wersji pakietów oprogramowania.
W kolejnym kroku musimy dodać nasze serwery do klastra, który zamierzamy utworzyć. Dodając nasze serwery możemy wpisać IP lub nazwę hosta, a następnie wybrać interfejs sieciowy. W tym drugim przypadku musimy mieć serwer DNS lub dodać nasze serwery MySQL do lokalnego pliku rozpoznawania (/etc/hosts) naszego ClusterControl, aby mógł on rozwiązać odpowiednią nazwę, którą chcesz dodać.
Na ekranie widzimy przykładowe wdrożenie z jednym serwerem głównym i dwoma serwerami podrzędnymi. Lista serwerów jest dynamiczna i umożliwia tworzenie wyrafinowanych topologii, które można rozszerzyć po początkowej instalacji.
ClusterControl:Zdefiniuj topologięKiedy wszystko jest ustawione, naciśnij przycisk wdrażania. Możesz monitorować stan tworzenia naszej nowej konfiguracji replikacji z monitora aktywności ClusterControl. Proces wdrażania zajmie się również instalacją popularnych narzędzi mysql, takich jak percona toolkit i percona-xtradb-backup.
ClusterControl:wdrażanie szczegółów klastraPo zakończeniu zadania możemy zobaczyć nasz klaster na głównym ekranie ClusterControl oraz w widoku topologii. Zwróć uwagę, że dodaliśmy również system równoważenia obciążenia (ProxySQL) przed instancjami bazy danych.
ClusterControl:topologiaJak widać na obrazku, po utworzeniu naszego klastra możemy wykonać na nim kilka zadań, bezpośrednio z sekcji topologii.
ClusterControl:zarządzanie topologiąImportuj nowy klaster
Mamy również możliwość zarządzania istniejącą konfiguracją poprzez importowanie jej do ClusterControl. Takie środowisko można stworzyć za pomocą ClusterControl lub innych metod (puppet, chef, ansible, docker…). Proces jest prosty i nie wymaga specjalistycznej wiedzy.
ClusterControl:importowanie istniejącego klastraNajpierw musimy wprowadzić poświadczenia dostępu SSH do naszych serwerów. Następnie wprowadzamy poświadczenia dostępu do naszej bazy danych, katalogu danych serwera i wersji. Dodajemy węzły według adresu IP lub nazwy hosta w taki sam sposób, jak podczas wdrażania, i naciskamy Importuj. Po zakończeniu zadania jesteśmy gotowi do zarządzania naszym klastrem z ClusterControl. W tym momencie możemy również zdefiniować opcje automatycznego odzyskiwania węzła lub klastra.
Skalowanie MySQL
Dzięki ClusterControl dodanie większej liczby serwerów do serwera jest łatwym krokiem. Możesz to zrobić z GUI lub CLI. Dla bardziej zaawansowanych użytkowników możesz użyć ClusterControl Developer Studio i napisać warunek bazowy zasobów, aby automatycznie rozszerzyć klaster.
Podczas dodawania nowego węzła do konfiguracji masz możliwość użycia istniejącej kopii zapasowej, dzięki czemu nie ma potrzeby przytłaczania produkcyjnego węzła głównego dodatkową pracą.
ClusterControl Skalowanie MySQLDzięki wbudowanej obsłudze systemów równoważenia obciążenia (ProxySQL, Maxscale, HAProxy) możesz dynamicznie dodawać i usuwać węzły MySQL. Jeśli chcesz dowiedzieć się więcej o tym, jak najlepiej zarządzać replikacją i klastrowaniem MySQL, zapoznaj się z oficjalnym dokumentem dotyczącym replikacji MySQL dla replikacji wysokiej dostępności.
Zabezpieczanie MySQL
MySQL jest dostarczany z bardzo małym zabezpieczeniem po wyjęciu z pudełka. Zostało to ulepszone w najnowszej wersji, jednak systemy klasy produkcyjnej nadal wymagają poprawek w domyślnej konfiguracji my.cnf.
ClusterControl usuwa błędy ludzkie i zapewnia dostęp do zestawu funkcji bezpieczeństwa, aby automatycznie chronić Twoje bazy danych przed włamaniami i innymi zagrożeniami.
ClusterControl umożliwia obsługę SSL dla połączeń MySQL. Włączenie SSL dodaje kolejny poziom bezpieczeństwa komunikacji między aplikacjami (w tym ClusterControl) a bazą danych. Klienci MySQL otwierają zaszyfrowane połączenia z serwerami baz danych i weryfikują tożsamość tych serwerów przed przesłaniem jakichkolwiek poufnych informacji.
ClusterControl wykona wszystkie niezbędne kroki, w tym utworzenie certyfikatów na wszystkich węzłach bazy danych. Takie certyfikaty można przechowywać później w zakładce Zarządzanie kluczami.
ClusterControl:klucze SSL menedżeraInstalacje serwerowe Percona posiadają dodatkowe wsparcie dla wtyczki audytu. Ciągły audyt jest niezbędnym zadaniem monitorowania środowiska bazy danych. Dzięki audytowi bazy danych możesz uzyskać odpowiedzialność za podjęte działania lub dostęp do treści. Co więcej, audyt może obejmować pewne krytyczne elementy systemu, takie jak te związane z danymi finansowymi w celu wsparcia precyzyjnego zestawu regulacji, takich jak SOX, czy unijne rozporządzenie RODO. Proces z przewodnikiem pozwala wybrać, co powinno być kontrolowane i jak utrzymywać pliki dziennika kontroli.
ClusterControl:Włącz dziennik kontroli dla Percona Server 8.0Monitorowanie
Podczas pracy z systemami baz danych powinieneś mieć możliwość ich monitorowania. Umożliwi to identyfikowanie trendów, planowanie aktualizacji lub ulepszeń lub skuteczne reagowanie na wszelkie problemy lub błędy, które mogą się pojawić.
Nowy ClusterControl 1.7.2 jest wyposażony w zaktualizowany monitoring w wysokiej rozdzielczości dla MySQL 8.0. Używa Prometheusa jako magazynu danych z językiem zapytań PromQL. Lista pulpitów nawigacyjnych obejmuje MySQL Server General, MySQL Server Cache, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, Przegląd systemu i Panele kontrolne klastra.
ClusterControl instaluje agentów Prometheus, konfiguruje metryki i utrzymuje dostęp do konfiguracji eksporterów Prometheus za pośrednictwem swojego GUI, dzięki czemu można lepiej zarządzać konfiguracją parametrów, takich jak flagi zbierające dla eksporterów (Prometheus). Szczegółowo opisaliśmy, co można ostatnio monitorować w artykule Jak monitorować MySQL za pomocą Prometheusa i ClusterControl.
ClusterControl:pulpit nawigacyjnyAlarmy
Jako operator bazy danych musimy być informowani o każdej krytycznej sytuacji w naszej bazie danych. Trzy główne metody uzyskiwania alertu w ClusterControl obejmują:
- powiadomienia e-mail
- integracje
- doradcy
Możesz ustawić powiadomienia e-mail na poziomie użytkownika. Przejdź do Ustawienia> Powiadomienia e-mail . Gdzie możesz wybrać między krytycznością a rodzajem wysyłanego alertu.
ClusterControl:PowiadomienieKolejną metodą jest skorzystanie z usług integracyjnych. Ma to na celu przekazanie określonej kategorii wydarzeń do innych usług, takich jak bilety ServiceNow, Slack, PagerDuty itp., dzięki czemu możesz tworzyć zaawansowane metody powiadamiania i integracje w swojej organizacji.
ClusterControl:integracjaOstatnim z nich jest włączenie wyrafinowanej analizy metryk w sekcji Advisor, gdzie można tworzyć inteligentne kontrole i wyzwalacze.
ClusterControl:doradcy automatycznaKopia zapasowa i odzyskiwanie
Teraz, gdy masz już uruchomiony MySQL i monitoring, nadszedł czas na kolejny krok:upewnij się, że masz kopię zapasową swoich danych.
ClusterControl:tworzenie kopii zapasowejClusterControl zapewnia interfejs do zarządzania kopiami zapasowymi MySQL z obsługą harmonogramów i kreatywnych raportów. Daje dwie opcje metod tworzenia kopii zapasowych.
- Logiczne:mysqldump
- Binary:xtrabackup/mariabackup
Dobra strategia tworzenia kopii zapasowych jest krytyczną częścią każdego systemu zarządzania bazą danych. ClusterControl oferuje wiele opcji tworzenia kopii zapasowych i odzyskiwania/przywracania.
ClusterControl:Harmonogram tworzenia kopii zapasowych i repozytorium kopii zapasowychMożliwość konfiguracji przechowywania kopii zapasowych ClusterControl; możesz zachować kopię zapasową przez dowolny okres czasu lub nigdy nie usuwać kopii zapasowych. Szyfrowanie AES256 służy do zabezpieczenia kopii zapasowych przed nieuczciwymi elementami. W celu szybkiego przywrócenia kopii zapasowych można przywrócić bezpośrednio do nowego klastra - ClusterControl obsługuje pełny proces przywracania od uruchomienia nowej konfiguracji bazy danych do odzyskiwania danych, usuwając z tego procesu podatne na błędy ręczne kroki.
Kopie zapasowe mogą być automatycznie weryfikowane po zakończeniu, a następnie przesyłane do usług przechowywania w chmurze (AWS, Azure i Google). Można zdefiniować różne zasady przechowywania dla lokalnych kopii zapasowych w centrum danych, a także kopii zapasowych przesyłanych do chmury.
Autoodzyskiwanie węzłów i klastrów
ClusterControl zapewnia zaawansowaną obsługę wykrywania i obsługi awarii. Pozwala także na wdrożenie różnych serwerów proxy w celu zintegrowania ich ze stosem HA, dzięki czemu nie ma potrzeby dostosowywania parametrów połączenia aplikacji lub wpisu dns, aby przekierować aplikację do nowego węzła głównego.
Gdy serwer główny nie działa, ClusterControl utworzy zadanie, aby wykonać automatyczne przełączanie awaryjne. ClusterControl wykonuje całą pracę w tle, aby wybrać nowego mastera, wdrożyć awaryjne serwery slave i skonfigurować systemy równoważenia obciążenia.
ClusterControl:automatyczne odzyskiwanie węzłówAutomatyczne przełączanie awaryjne ClusterControl zostało zaprojektowane zgodnie z następującymi zasadami:
- Upewnij się, że master naprawdę nie żyje, zanim przełączysz się w tryb awaryjny
- Przełączanie awaryjne tylko raz
- Nie przełączaj awaryjnie na niespójne urządzenie podrzędne
- Tylko pisz do mistrza
- Nie przywracaj automatycznie uszkodzonego wzorca
Dzięki wbudowanym algorytmom przełączanie awaryjne można często wykonać dość szybko, dzięki czemu można zapewnić najwyższe SLA dla środowiska bazy danych.
Proces jest wysoce konfigurowalny. Zawiera wiele parametrów, które można wykorzystać do dostosowania odzyskiwania do specyfiki środowiska. Wśród różnych opcji można znaleźć replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script i wiele innych.