Automatyzacja bazy danych ułatwia i przyspiesza wykonywanie złożonych i czasochłonnych zadań. Zadania najczęściej i najłatwiejsze do zidentyfikowania dla automatyzacji to te, które są czasochłonne, ale powtarzalne. Często pochłaniają one produktywność i mogą wpływać na finanse firmy, ponieważ musisz płacić osobom pracującym nad tymi zadaniami. Jednak procesy, w których niepotrzebnie zużywa się czas i wysiłek, można przekształcić w wirtualną automatyzację, unikając w ten sposób często nudnej i wyczerpującej pracy.
Automatyzacja baz danych była powszechną praktyką administratorów baz danych i administratorów serwerów, którzy razem są teraz bardziej znani jako DevOps. DevOps odnosi się również do kombinacji zadań administratora baz danych i administratora serwera. W staromodny sposób tradycyjne i typowe zadania automatyczne są zapisywane jako seria instrukcji SQL lub plików .sql, które wdrażają i udostępniają serwery za pomocą skryptów, konfigurują szyfrowanie/odszyfrowywanie lub wykorzystują zabezpieczenia dla środowiska, w którym ma być przeprowadzana automatyzacja biegać. Tutaj automatyzacja nie jest przykładem firmy zastępującej ludzi skryptami. Jest tam jako asystent, który przyspiesza pracę i szybciej kończy zadania z mniejszą liczbą błędów. Automatyzacja nie może zastąpić sposobu, w jaki administratorzy baz danych wykonują swoje zadania, ani wartości, jaką mogą dostarczyć całej firmie lub organizacji.
Zaawansowane narzędzia dla infrastruktury jako kodu (IaC), takie jak Puppet, Chef, Ansible, SaltStack i Terraform, ułatwiają administratorom baz danych wykonywanie tych zadań, które można łatwo replikować, takich jak tworzenie kopii zapasowych i przywracanie, przełączanie awaryjne, wdrażanie nowe klastry, dostosowywanie ustawień zabezpieczeń, dostrajanie wydajności jądra systemu operacyjnego i bazy danych oraz wiele więcej. Za pomocą automatyzacji wielu administratorów baz danych poprawiło lub przeniosło swoje umiejętności z koncentrowania się na zadaniach specyficznych dla domeny danych, aby objąć również sposób kodowania w celu wykorzystania tych narzędzi IaC, które ułatwiają pracę niż przy użyciu tradycyjnego podejścia. Obecnie dostępne są również narzędzia ułatwiające zarządzanie zasobami w chmurze, takie jak zarządzanie firmowymi kontami użytkowników, dziennikami, wdrażanie instancji lub zarządzanie serwerami. Narzędzia dla chmury od trzech największych dostawców chmury obejmują AWS CloudFormation, Azure Resource Manager i Google Cloud Deployment Manager i umożliwiają administratorom baz danych lub DevOps wykorzystanie mocy automatyzacji i przyspieszenie działania. To nie tylko robi wrażenie na Twojej organizacji lub kierownictwie firmy, ale także na klientach, którzy polegają na Twojej usłudze.
Co należy zautomatyzować?
Jak wspomniano powyżej, automatyzacja bazy danych nie jest nowością dla administratorów baz danych, administratorów serwerów, a nawet DevOps. Nie ma powodu, aby się wahać ani zastanawiać, czy zautomatyzować. Jak wspomniano wcześniej, typowe przypadki, które można łatwo zidentyfikować w przypadku automatyzacji, to zadania, które mają charakter powtarzalny.
Poniżej wyliczamy rzeczy, które są aksjomatyczne z perspektywy DBA.
-
Zarządzanie serwerami (np. inicjowanie instancji maszyn wirtualnych, takich jak using vagrant, inicjowanie dockera lub inicjowanie Kubernetes platforma) i skonfiguruj dostęp SSH lub skonfiguruj dostęp VPN
-
Wdrażanie nowego klastra bazy danych
-
Określ typ dostawcy bazy danych, typ konfiguracji (podstawowy/w trybie gotowości, replikacja master-master, synchroniczna replikacja)
-
-
Importuj istniejący klaster bazy danych
-
Wdróż/importuj istniejące bazy danych do bieżącego klastra baz danych
-
Automatyczne przełączanie awaryjne lub przełączanie
-
Automatyczne odzyskiwanie węzła lub klastra
-
Promocja repliki/slave lub degradacja wzorca
-
Wdrażanie systemów równoważenia obciążenia (np. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)
-
Kopia zapasowa i przywracanie
-
Skonfiguruj środowisko monitorowania bazy danych (np. wdrażaj monitorowanie oparte na agentach, takie jak Prometheus)
-
Włącz dostosowania zabezpieczeń
-
Przeprowadzaj automatyczne optymalizacje i strojenie zgodnie z typem środowiska
-
Włącz systemy powiadamiania o integracjach innych firm
-
Generuj alerty lub alarmy i powiadomienia
-
Generuj raporty, takie jak wykresy
-
Przetwarzaj logi zapytań (powolne logi) do analizy zapytań
-
Generuj analizę zapytania
-
Archiwizacja lub czyszczenie bazy danych
Istnieje oczywiście wiele przypadków, które można zautomatyzować, ale to zawiera listę najczęstszych zadań, a ich automatyzacja jest niekwestionowana. Są to rodzaje zadań, które mają charakter powtarzalny, a większość z nich jest podatna na błędy, zwłaszcza gdy muszą być wykonane szybko ze względu na ograniczenia czasowe.
Czym są rzeczy, których nie należy zautomatyzować?
W tych obszarach administratorzy baz danych lub administratorzy systemu wykonują większość pracy. Automatyzacja nie może zastąpić zestawu umiejętności i inteligencji DBA, jeśli chodzi o rzeczy, których nie można zautomatyzować.
Rozumiem jest, że administrator baz danych musi posiadać umiejętności, dogłębnie rozumieć:używaną bazę danych oraz bazy danych, które zostaną wdrożone; dane, które są przetwarzane i przechowywane; oraz czy sposób ich przetwarzania jest bezpieczny lub zgodny z firmowymi standardami bezpieczeństwa. Administratorzy baz danych również sprawdzają i w większości są uważani za DevOps, a także architekta automatyzacji. Oni dyktują, co należy zrobić, a czego nie. Typowe rzeczy, które nie powinny być zautomatyzowane, to:
-
Ustawianie zaplanowanych kopii zapasowych. Zaplanowane kopie zapasowe są oczywiście zautomatyzowane i muszą być odpowiednio uruchamiane, ale zaplanowane daty lub wymagany okres powinny być oparte na godzinach niskiego szczytu, jakie będzie wykonywał serwer. Na przykład nie można wykonać kopii zapasowej, jeśli klaster jest zajęty w ciągu dnia. Często zdarzają się również przypadki, gdy serwery są nadal zajęte w nocy, w zależności od typu obsługiwanej aplikacji i lokalizacji geograficznej.
-
Automatyczne przełączanie awaryjne nie mogło promować nowego wzorca. To jeden z najważniejszych przypadków i musi być dobrze zrozumiany. Jeśli masz zautomatyzowane skrypty zaprojektowane do przełączania awaryjnego, nie powinny one być zaprojektowane tak, aby wymusić przełączenie awaryjne w przypadku niepowodzenia. Możesz nigdy nie wiedzieć, co jest głównym problemem, a jeśli wystąpi awaria, mogą istnieć transakcje, które do odzyskania, zanim zrobi się cokolwiek innego. Na przykład może to być transakcja finansowa, która była przechowywana na nieudanym urządzeniu nadrzędnym, a ty na siłę chciałeś promować jednostkę podrzędną, ale kandydat podrzędny nie zdołał zreplikować ostatniej transakcji. W takim przypadku możesz otrzymać uszkodzone dane.
-
Odzyskiwanie danych. Oczywiście w przypadku uszkodzenia danych lub niepowodzenia odzyskiwania klastra po automatycznym odzyskiwaniu węzła/serwera może być konieczne zbadanie podstawowej przyczyny. Musisz to udokumentować dla swojej RCA (Analiza przyczyny źródłowej), aby uniknąć tego w przyszłości. Istnieją jednak przypadki, w których awaria jest błędem oprogramowania bazodanowego, którego używasz, lub może to być uszkodzenie maszyny wirtualnej.
-
Przepływ danych lub niespójność danych. To zdecydowanie nie jest idealna sytuacja dla automatyzacji. Nie chcesz, aby Twój automat uogólniał lub stereotypizował Twoje dane do praktyki, która stosowałaby tę koncepcję:„jeśli dane są uszkodzone, automatycznie je naprawmy”. To zdecydowanie nie jest dobra praktyka. Jest wiele spraw, które należy najpierw zrozumieć i zbadać, zanim podejmiesz decyzję. Na przykład w MySQL jest narzędzie Percona o nazwie pt-table-checksum, a następnie pt-table-sync, dla których oba są skorelowane ze sobą w usuwaniu niespójności danych. Na pewno nie będziesz chciał tego automatyzować, chyba że bardzo dobrze znasz swoje dane, nie są one obszerne lub dane mogą zostać zregenerowane.
-
Dostrajanie jądra i dostrajanie bazy danych. Oczywiście można to uznać za sprzeczne z tym, co powiedzieliśmy powyżej. Istnieją jednak zmienne automatycznie dostrajające znane dla określonych typów środowisk, takich jak pamięć, pula buforów, HugePages lub parametry pamięci wirtualnej. Jednak zdecydowanie istnieje wiele parametrów, które wymagają zrozumienia, zbadania, przetestowania, analizy porównawczej, zanim zdecydujesz się zastosować zmiany lub nie.
Zdecydowanie jest wiele rzeczy, których nie należy automatyzować, o których nie wspomnieliśmy. W świecie baz danych istnieje wiele sytuacji, które zależą od typu danych i aplikacji, które obsługujesz. Pamiętaj o tym i bądź wrażliwy na rzeczy, które można zautomatyzować. W przeciwnym razie automatyzacja może doprowadzić do zniszczenia.
Narzędzia do automatyzacji
Tutaj możesz rozpocząć pracę ze skryptami automatyzacji. Najważniejszym elementem automatyzacji jest szybkość! Jeśli chodzi o szybkość, nie mierzy się jej tym, jak szybko narzędzie jest w stanie ukończyć zadania, ale to, jak komfortowo czują się z nim programiści lub opiekunowie skryptów lub IaC. Zdecydowanie istnieją zalety i wady tych narzędzi automatyzacji. Ważniejsze jest określenie specyfikacji tych narzędzi automatyzacji, ponieważ poza automatyzacją jest więcej do zaoferowania. Częściej zapewniają zarządzanie konfiguracją i mechanizmy wdrażania.
Automatyzacja to przede wszystkim szybkość, to znaczy szybkość, w przeciwieństwie do tradycyjnego podejścia lub używania własnych preferowanych skryptów językowych. Oczywiście korzystanie z własnych skryptów może być idealne, ale jeśli Twoja organizacja lub firma jest nastawiona na zaawansowanie technologiczne, bardziej idealne jest korzystanie z narzędzi innych firm, takich jak Ansible, Puppet, Chef, SaltStack lub Terraform. Dlaczego jest bardziej idealny? Te narzędzia innych firm mają na celu pokonanie długich i długotrwałych zadań do wykonania i można je wykonać za pomocą kilku linijek kodu.
Na przykład Terraform jest znany z zalet przenośności. Wyobraź sobie, że dzięki Terraform masz jedno narzędzie i jeden język do opisywania infrastruktury dla Google Cloud, AWS, OpenStack i KAŻDEJ innej chmury. Jeśli przełączysz się na innego dostawcę, nie musisz modyfikować ani przerabiać swoich skryptów. Umożliwia również wdrożenie pełnego stosu, w tym zarządzanie kontenerami Kubernetes. Wyobraź sobie, że z jednego narzędzia możesz zrobić wiele rzeczy.
Rozpoczynając automatyzację bazy danych, nie zaczynaj od zera, ponieważ celem automatyzacji jest szybkość! Ponownie, szybkości nie mierzy się tutaj szybkością zakończenia pracy, ale szybkością w porównaniu z tradycyjnym podejściem lub zadaniami ręcznymi. Oczywiście wszystko zależy od szybkości, z jaką jest w stanie ukończyć zadanie, np. część skryptów może powodować duże opóźnienia z powodu dużej ilości przetworzonych danych i długiego wykonywania zadań.
Zawsze wybieraj w oparciu o swoje wymagania
Wybierając narzędzia, nie polegaj na szumie reklamowym ani na tym, o czym słyszałeś najpopularniejsze. Chociaż wspomniane wcześniej narzędzia głównego nurtu są w dużej mierze przyjmowane przez społeczność, wprowadzają również złożoność. Na przykład podczas korzystania z Ansible musisz znać YAML, podczas gdy w przypadku Puppet lub Chef musisz znać Ruby i jego podstawowy język specyficzny dla domeny.
Skorzystaj z dostępnych narzędzi dla przedsiębiorstw
Istnieje wiele obiecujących narzędzi do automatyzacji baz danych, od których można zacząć. Jeśli uważasz, że zatrudnianie administratorów baz danych, administratorów SysAdminów lub DevOps w celu rozszerzenia zespołu jest niewygodne i czasochłonne, dostępne są narzędzia, które oferują pomoc w zakresie zarządzania bazami danych, zarządzania kopiami zapasowymi i obserwowalności.
Severalnines ClusterControl do automatyzacji baz danych
ClusterControl oferuje wiele zautomatyzowanych zadań, które eliminują potrzebę ręcznego podejścia. ClusterControl został zaprojektowany, aby ułatwić operacje na bazach danych organizacjom, firmom, administratorom baz danych, administratorom SysAdmins, DevOps, a nawet programistom. Jego celem jest automatyzacja długotrwałych i powtarzalnych zadań. Wielką zaletą ClusterControl jest to, że jest to dojrzałe narzędzie do zarządzania bazami danych i ma rozbudowane funkcje, które są bardzo wydajne w zarządzaniu serwerami baz danych. Stosuje również najbardziej aktualne, zgodne ze standardami branżowymi najlepsze praktyki zarządzania bazami danych. Słuchamy wymagań naszych klientów, a następnie wdrażamy możliwości, aby im sprostać.
Niektóre z najbardziej bogatych w funkcje funkcji automatyzacji ClusterControl, z których można skorzystać, to:
-
Wdrażanie serwerów baz danych. Wybierz dostawcę, określ odpowiednią wersję, określ typ klastra, określ nazwę hosta/IP serwera, takie jak nazwa użytkownika, hasło itp.
-
Importowanie istniejących serwerów do ClusterControl
-
Wdrażanie w chmurze
-
Monitorowanie i raportowanie stanu bazy danych
-
Alerty i powiadomienia
-
Kopia zapasowa i przywracanie
-
Weryfikacja kopii zapasowej
-
Automatyczne przełączanie awaryjne, przełączanie
-
Konfiguracja wysokiej dostępności
-
Awansuj niewolnika lub degraduj mistrza
-
Dodaj nową/istniejącą replikę do klastra
-
Rozszerz inny klaster jako podrzędny innego klastra (idealne dla konfiguracji geograficznej do odzyskiwania po awarii)
-
Odzyskiwanie węzłów i klastrów
-
Integracja LDAP
-
Powiadomienia o alertach innych firm
-
Wdrożenie dowolnej z obszernej listy systemów równoważenia obciążenia (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )
-
Wdrażanie monitorowania opartego na agentach przy użyciu eksporterów Prometheus
-
Analiza zapytań
-
Dostosowania zabezpieczeń
-
Automatyczne dostrajanie parametrów jądra systemu operacyjnego i bazy danych
Oprócz tych wszystkich, ClusterControl ma również wbudowanych doradców, którzy umożliwiają administratorom baz danych lub DevOps tworzenie własnych skryptów i integrację z doradcami wydajności ClusterControl.
Podsumowanie
Automatyzacja bazy danych pomaga przyspieszyć wykonywanie złożonych, ale powtarzalnych zadań. Pomaga DBA w szybkim przechodzeniu do przodu w różnych zadaniach i doskonaleniu ich umiejętności w zależności od zakresu wykonywanej pracy. Automatyzacja bazy danych uwalnia administratorów baz danych, aby byli bardziej innowacyjni, a jednocześnie wygodnie zarządzali bazą danych. Automatyzacja bazy danych nie zastępuje roli administratora baz danych. Zawsze będą potrzebni wykwalifikowani i inteligentni ludzie do zarządzania Twoimi bazami danych, zwłaszcza w przypadku katastrofy. Zawsze polegaj na narzędziach zalecanych przez administratorów baz danych, ufając ich umiejętnościom administratorów baz danych, aby zarządzać stanem i życiem Twoich baz danych.