MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Zautomatyzowane testowanie procesu aktualizacji dla MySQL/MariaDB/Percona Server

Aktualizacje są zawsze trudnym i czasochłonnym zadaniem. Najpierw powinieneś przetestować swoją aplikację w środowisku testowym, więc najlepiej byłoby sklonować w tym celu swoje obecne środowisko produkcyjne. Następnie musisz zaplanować wykonanie aktualizacji, która, w zależności od firmy, może wiązać się z zerowym (lub prawie zerowym) przestojem, a nawet zaplanować okres konserwacji, aby upewnić się, że jeśli coś pójdzie nie tak, wpłynie to tak mało jak to możliwe.

Jeśli chcesz wykonać wszystkie te czynności ręcznie, istnieje duże prawdopodobieństwo błędu ludzkiego i proces będzie powolny. W tym blogu zobaczymy, jak zautomatyzować testowanie w celu uaktualnienia baz danych MySQL, MariaDB lub Percona Server za pomocą ClusterControl.

Rodzaj aktualizacji

Istnieją dwa rodzaje uaktualnień:drobne uaktualnienia i duże uaktualnienia.

Drobne aktualizacje

Pierwsze, drobne uaktualnienie, jest najpowszechniejszym i najbezpieczniejszym uaktualnieniem, które w większości przypadków jest wykonywane na miejscu. Ponieważ nic nie jest w 100% bezpieczne, zawsze musisz mieć kopie zapasowe i węzły podrzędne replikacji, więc jeśli coś pójdzie nie tak z aktualizacją i z jakiegoś powodu nie możesz wycofać / obniżyć poziomu, możesz promować węzeł podrzędny, a twoje systemy mogą nadal pracować bez przerwy.

Możesz przeprowadzić tego rodzaju aktualizację za pomocą ClusterControl. W tym celu przejdź do ClusterControl -> Wybierz Cluster -> Manage -> Upgrades.

W każdym wybranym węźle procedura aktualizacji:

  • Zatrzymaj węzeł

  • Aktualizuj węzeł

  • Węzeł startowy

Węzeł główny w topologii replikacji nie zostanie uaktualniony. Aby uaktualnić Master, inny węzeł musi najpierw zostać awansowany na nowego Mastera.

Większe aktualizacje

W przypadku głównych uaktualnień nie jest zalecane uaktualnienie w miejscu, ponieważ ryzyko wystąpienia błędu jest zbyt wysokie dla środowiska produkcyjnego. Zamiast tego możesz sklonować obecny klaster bazy danych i tam przetestować swoją aplikację, a po zakończeniu możesz ją ponownie utworzyć lub nawet utworzyć nowy klaster w nowej wersji i przełączyć ruch, gdy będzie gotowy. Istnieją różne podejścia do tych ulepszeń. Możesz uaktualnić węzły jeden po drugim lub stworzyć inny klaster replikujący ruch z obecnego, możesz także użyć load balancerów do poprawy wysokiej dostępności i więcej opcji. Najlepsze podejście zależy od tolerancji przestojów i docelowego czasu odzyskiwania (RTO).

Nie możesz przeprowadzić głównych aktualizacji bezpośrednio za pomocą ClusterControl, ponieważ, jak wspomnieliśmy, musisz najpierw wszystko przetestować, aby upewnić się, że aktualizacja jest bezpieczna, ale możesz użyć różnych funkcji ClusterControl, aby dokonać to zadanie łatwiejsze. Zobaczmy więc niektóre z tych funkcji.

Kopie zapasowe

Kopie zapasowe są niezbędne przed każdą aktualizacją. Dobra polityka tworzenia kopii zapasowych pozwala uniknąć poważnych problemów dla firmy. Zobaczmy więc, jak ClusterControl może to zautomatyzować.

Tworzenie kopii zapasowej

Przejdź do ClusterControl -> Wybierz Cluster -> Kopia zapasowa -> Utwórz kopię zapasową.

Możesz utworzyć nową kopię zapasową lub skonfigurować zaplanowaną.

Możesz wybrać różne metody tworzenia kopii zapasowych, w zależności od technologii bazy danych, a w tej samej sekcji możesz wybrać serwer, z którego chcesz wykonać kopię zapasową, gdzie chcesz przechowywać kopię zapasową i czy chcesz przesłać kopię zapasową do chmury (AWS, Azure lub Google Cloud) w tym samym zadaniu.

Możesz także między innymi skompresować i zaszyfrować kopię zapasową oraz określić okres przechowywania.

W sekcji kopii zapasowej możesz zobaczyć postęp tworzenia kopii zapasowej oraz informacje, takie jak metoda, rozmiar, lokalizacja i inne.

Wdrażanie środowiska testowego

W tym celu nie musisz tworzyć wszystkiego od zera. Zamiast tego możesz użyć ClusterControl do robienia tego w sposób ręczny lub zautomatyzowany.

Przywróć kopię zapasową na samodzielnym hoście

W sekcji Kopia zapasowa możesz wybrać opcję „Przywróć i zweryfikuj na samodzielnym hoście”, aby przywrócić kopię zapasową w osobnym węźle.

Tutaj możesz określić, czy chcesz, aby ClusterControl zainstalował oprogramowanie w nowym węźle i czy wyłączyć zaporę lub AppArmor/SELinux (w zależności od systemu operacyjnego). W tym celu potrzebujesz dedykowanego hosta (lub maszyny wirtualnej), który nie jest częścią klastra.

Możesz utrzymać i uruchomić węzeł lub ClusterControl może wyłączyć usługę bazy danych do następnego zadania przywracania. Po zakończeniu zobaczysz przywróconą/zweryfikowaną kopię zapasową na liście kopii zapasowych oznaczoną haczykiem.

Jeśli nie chcesz wykonywać tego zadania ręcznie, możesz zaplanować ten proces za pomocą funkcji Weryfikuj kopię zapasową, aby okresowo powtarzać to zadanie w zadaniu kopii zapasowej. Zobaczymy, jak to zrobić w następnej sekcji.

Automatyczna weryfikacja kopii zapasowej ClusterControl

Aby zautomatyzować to zadanie, przejdź do ClusterControl -> Wybierz swój klaster -> Kopia zapasowa -> Utwórz kopię zapasową i wybierz opcję Zaplanowana kopia zapasowa.

Funkcja automatycznej weryfikacji kopii zapasowej jest dostępna tylko dla zaplanowanych kopii zapasowych, a proces jest taki sam, jak opisano w poprzedniej sekcji. W drugim kroku upewnij się, że włączono opcję Zweryfikuj kopię zapasową i uzupełnij wymagane informacje.

Po zakończeniu zadania zobaczysz ikonę weryfikacji w sekcji ClusterControl Backup, taką samą, jak w przypadku ręcznej weryfikacji, z tą różnicą, że nie potrzebujesz martwić się o zadanie przywracania. ClusterControl przywróci kopię zapasową za każdym razem automatycznie i możesz przetestować swoją aplikację z najnowszymi danymi.

Autoodzyskiwanie i przełączanie awaryjne

Po włączeniu funkcji Autoodzyskiwania, w przypadku awarii, ClusterControl promuje najbardziej zaawansowany węzeł podrzędny do stanu nadrzędnego, jak również powiadamia o problemie. Replikuje również pozostałe węzły podrzędne z nowego serwera głównego.

Jeśli w topologii znajdują się Load Balancery, ClusterControl skonfiguruje je ponownie, aby zastosować zmiany topologii.

W razie potrzeby można również uruchomić przełączanie awaryjne ręcznie. Przejdź do ClusterControl -> Wybierz klaster -> Węzły -> Wybierz węzeł do promowania -> Akcje węzła -> Promuj urządzenie podrzędne.

W ten sposób, jeśli coś pójdzie nie tak podczas aktualizacji, możesz użyć ClusterControl, aby to naprawić JAK NAJSZYBCIEJ.

Automatyzacja za pomocą ClusterControl CLI

ClusterControl CLI, znany również jako s9s, to narzędzie wiersza poleceń wprowadzone w ClusterControl w wersji 1.4.1 do interakcji, kontroli i zarządzania klastrami baz danych za pomocą systemu ClusterControl. ClusterControl CLI otwiera drzwi do automatyzacji klastra, gdzie można go łatwo zintegrować z istniejącymi narzędziami do automatyzacji wdrażania, takimi jak Ansible, Puppet, Chef itp. Zobaczmy teraz kilka przykładów tego narzędzia.

Aktualizacja

$ s9s cluster --cluster-id=19 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=19 \
--available-upgrades \
--nodes='10.10.10.146' \
--log \
--print-json
$ s9s cluster --cluster-id=19 \
--upgrade-cluster \
--nodes='10.10.10.146' \
--log

Utwórz kopię zapasową

$ s9s backup --create \
--backup-method=mysqldump \
--cluster-id=2 \
--nodes=10.10.10.146:3306 \
--on-controller \
--backup-directory=/storage/backups
--log

Przywróć kopię zapasową

$ s9s backup --restore \
--cluster-id=19 \
--backup-id=3 \
--wait

Weryfikuj kopie zapasowe

$ s9s backup --verify \
--backup-id=3 \
--test-server=10.10.10.151 \
--cluster-id=19 \
--log

Promuj węzeł podrzędny

$ s9s cluster --promote-slave \
--cluster-id=19 \
--nodes='10.10.10.146' \
--log

Wnioski

Aktualizacje są niezbędnymi, ale czasochłonnymi zadaniami. Wdrażanie środowiska testowego za każdym razem, gdy trzeba dokonać aktualizacji, może być koszmarem i trudno jest utrzymać to na bieżąco bez żadnego narzędzia do automatyzacji.

ClusterControl umożliwia wykonywanie drobnych aktualizacji, a nawet wdrażanie środowiska testowego, aby zadanie aktualizacji było łatwiejsze i bezpieczniejsze. Możesz również zintegrować go z różnymi narzędziami automatyzacji, takimi jak Ansible, Puppet i nie tylko.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 6 sposobów na sprawdzenie wersji MariaDB

  2. Jak SUBDATE() działa w MariaDB

  3. Różnica między SYSDATE() i NOW() w MariaDB

  4. Ustaw zestaw znaków i sortowanie bazy danych w MariaDB

  5. Obsługa dużych transakcji za pomocą replikacji strumieniowej i MariaDB 10.4