Kopie zapasowe są bardzo ważną częścią operacji na bazie danych, ponieważ Twoja firma musi być zabezpieczona na wypadek katastrofy. Kiedy nadejdzie ten czas (i tak się stanie), Twój docelowy punkt odzyskiwania (RPO) i docelowy czas odzyskiwania (RTO) powinny być wstępnie zdefiniowane, ponieważ jest to szybkość, z jaką możesz odzyskać sprawność po zaistniałym incydencie.
Większość organizacji różni się podejściem do kopii zapasowych, próbując mieć kombinację kopii zapasowych obrazu serwera (migawki), kopii logicznych i fizycznych. Te kopie zapasowe są następnie przechowywane w wielu lokalizacjach, aby uniknąć lokalnych lub regionalnych katastrof. Oznacza to również, że dane można przywrócić w najkrótszym czasie, unikając poważnych przestojów, które mogą mieć wpływ na działalność firmy.
Hosting bazy danych u dostawcy chmury, takiego jak Microsoft Azure (który omówimy na tym blogu), nie jest wyjątkiem, nadal musisz przygotować i zdefiniować zasady odzyskiwania po awarii.
Podobnie jak inne oferty chmur publicznych, Microsoft Azure (Azure) oferuje praktyczne, opłacalne i zaprojektowane z myślą o możliwościach odzyskiwania podejście do tworzenia kopii zapasowych. Rozwiązania do tworzenia kopii zapasowych Microsoft Azure umożliwiają konfigurowanie i obsługę oraz łatwą obsługę za pomocą usługi Azure Backup lub magazynu usług przywracania (jeśli baza danych jest obsługiwana przy użyciu maszyn wirtualnych).
Jeśli potrzebujesz zarządzanej bazy danych w chmurze, platforma Azure oferuje usługę Azure Database for MySQL. Powinno to być używane tylko wtedy, gdy nie chcesz samodzielnie obsługiwać i zarządzać bazą danych MySQL. Ta usługa oferuje bogate rozwiązanie do tworzenia kopii zapasowych, które umożliwia tworzenie kopii zapasowej instancji bazy danych z regionu lokalnego lub poprzez lokalizację geograficznie nadmiarową. Może to być przydatne do odzyskiwania danych. Możesz nawet przywrócić węzeł z określonego okresu czasu, co jest przydatne przy odzyskiwaniu do określonego momentu. Można to zrobić jednym kliknięciem.
W tym blogu omówimy wszystkie te scenariusze tworzenia kopii zapasowych i przywracania przy użyciu bazy danych MySQL w chmurze Microsoft Azure.
Wykonywanie kopii zapasowych na maszynie wirtualnej na platformie Azure
Niestety, Microsoft Azure nie oferuje rozwiązania typu kopii zapasowej specyficznego dla MySQL (np. MySQL Enterprise Backup, Percona XtraBackup lub Mariabackup MariaDB).
Po utworzeniu maszyny wirtualnej (za pomocą portalu) możesz skonfigurować proces tworzenia kopii zapasowej maszyny wirtualnej za pomocą skarbca usług przywracania. To ochroni Cię przed jakimkolwiek incydentem, katastrofą lub katastrofą, a przechowywane dane są domyślnie szyfrowane. Dodanie szyfrowania jest opcjonalne i choć zalecane przez platformę Azure, ma swoją cenę. Możesz zajrzeć na ich stronę z cenami usługi Azure Backup, aby uzyskać więcej informacji.
Aby utworzyć i skonfigurować kopię zapasową, przejdź do lewego panelu i kliknij Wszystkie zasoby → Obliczenia → Maszyna wirtualna. Teraz ustaw parametry wymagane w polach tekstowych. Gdy znajdziesz się na tej stronie, przejdź do zakładki Zarządzanie i przewiń w dół. Będziesz mógł zobaczyć, jak możesz skonfigurować lub utworzyć kopię zapasową. Zobacz zrzut ekranu poniżej:
Następnie skonfiguruj zasady tworzenia kopii zapasowych na podstawie wymagań dotyczących kopii zapasowych. Po prostu kliknij łącze Utwórz nową w polu tekstowym Zasady tworzenia kopii zapasowych, aby utworzyć nową zasadę. Zobacz poniżej:
Możesz skonfigurować zasady tworzenia kopii zapasowych z przechowywaniem według tygodnia, miesiąca i roku .
Po skonfigurowaniu kopii zapasowej możesz sprawdzić, czy masz włączoną kopię zapasową na tej właśnie utworzonej maszynie wirtualnej. Zobacz zrzut ekranu poniżej:
Przywróć i odzyskaj swoją maszynę wirtualną na platformie Azure
Projektowanie odzyskiwania na platformie Azure zależy od rodzaju zasad i wymagań wymaganych przez aplikację. Zależy to również od tego, czy RTO i RPO muszą być niskie lub niewidoczne dla użytkownika w przypadku incydentu lub podczas konserwacji. Możesz skonfigurować maszynę wirtualną z zestawem dostępności lub w innej strefie dostępności, aby osiągnąć wyższy współczynnik odzyskiwania.
Możesz również skonfigurować odzyskiwanie po awarii dla swojej maszyny wirtualnej, aby replikować maszyny wirtualne do innego regionu platformy Azure w celu zapewnienia ciągłości biznesowej i potrzeb związanych z odzyskiwaniem po awarii. Jednak może to nie być dobry pomysł dla Twojej organizacji, ponieważ wiąże się z wysokimi kosztami. Jeśli istnieje, platforma Azure oferuje opcję przywrócenia lub utworzenia maszyny wirtualnej z utworzonej kopii zapasowej.
Na przykład podczas tworzenia maszyny wirtualnej możesz przejść do zakładki Dyski, a następnie do Dyski z danymi. Możesz utworzyć lub dołączyć istniejący dysk, do którego możesz dołączyć dostępną migawkę. Zobacz zrzut ekranu poniżej, dla którego możesz wybrać migawkę lub obiekt blob pamięci:
Możesz również przywrócić w określonym momencie, tak jak na zrzucie ekranu poniżej:
Przywracanie na platformie Azure można wykonać na różne sposoby, ale używa tego samego zasoby, które już utworzyłeś.
Na przykład, jeśli utworzono migawkę lub obraz dysku przechowywany w obiekcie blob usługi Azure Storage, jeśli utworzysz nową maszynę wirtualną, możesz użyć tego zasobu, o ile jest on zgodny i dostępny do użycia. Dodatkowo możesz nawet odzyskać trochę plików, oprócz przywracania maszyny wirtualnej, tak jak na poniższym zrzucie ekranu:
Podczas odzyskiwania plików możesz wybrać określony punkt odzyskiwania , a także pobrać skrypt do przeglądania i odzyskiwania plików. Jest to bardzo przydatne, gdy potrzebujesz tylko określonego pliku, ale nie całego systemu lub woluminu dysku.
Przywracanie z kopii zapasowej na istniejącej maszynie wirtualnej zajmuje około trzech minut. Jednak przywracanie z kopii zapasowej do tworzenia nowej maszyny wirtualnej zajmuje dwanaście minut. Może to jednak zależeć od rozmiaru maszyny wirtualnej i przepustowości sieci dostępnej na platformie Azure. Dobrą rzeczą jest to, że podczas przywracania poda ci szczegóły dotyczące tego, co zostało ukończone i ile czasu pozostało. Na przykład zobacz zrzut ekranu poniżej:
Kopie zapasowe bazy danych Azure dla MySQL
Azure Database for MySQL to w pełni zarządzana usługa bazy danych Microsoft Azure. Ta usługa oferuje bardzo elastyczny i wygodny sposób konfigurowania możliwości tworzenia kopii zapasowych i przywracania.
Po utworzeniu instancji serwera MySQL możesz skonfigurować przechowywanie kopii zapasowych i utworzyć opcje nadmiarowości kopii zapasowych; lokalnie nadmiarowy (region lokalny) lub geograficznie nadmiarowy (w innym regionie). Platforma Azure poda szacunkowy koszt, jaki zostanie naliczony za miesiąc. Zobacz przykładowy zrzut ekranu poniżej:
Pamiętaj, że geograficznie nadmiarowe opcje kopii zapasowej są dostępne tylko w przypadku ogólnego przeznaczenia i typy węzłów obliczeniowych zoptymalizowane pod kątem pamięci. Nie jest dostępna w węźle obliczeniowym Basic, ale możesz mieć nadmiarowość w regionie lokalnym (tj. w dostępnych strefach dostępności).
Po skonfigurowaniu konfiguracji głównej łatwo jest utworzyć replikę, przechodząc do Azure Database for MySQL → Wybierz instancję MyQL → Replikacja → i kliknij Dodaj replikę. Twoja replika może być używana jako źródło lub cel przywracania w razie potrzeby.
Pamiętaj, że zatrzymanie replikacji między serwerem głównym a repliką na platformie Azure będzie na zawsze i nieodwracalne, ponieważ spowoduje to, że replika stanie się samodzielnym serwerem. Replika utworzona przy użyciu platformy Microsoft Azure jest idealnie instancją zarządzaną i można zatrzymywać i uruchamiać wątki replikacji tak samo, jak w przypadku normalnej replikacji typu master-slave. Możesz zrobić restart i to wszystko. Jeśli utworzyłeś replikę ręcznie, poprzez przywrócenie z urządzenia głównego lub kopii zapasowej (np. przez odzyskiwanie do określonego momentu), będziesz mógł zatrzymać/uruchomić wątki replikacji lub w razie potrzeby skonfigurować opóźnienie.
Przywracanie bazy danych Azure dla MySQL z kopii zapasowej
Przywracanie jest bardzo łatwe i szybkie przy użyciu portalu Azure. Możesz po prostu nacisnąć przycisk przywracania w węźle instancji MySQL i po prostu postępować zgodnie z interfejsem użytkownika, jak pokazano na poniższym zrzucie ekranu:
Następnie możesz wybrać przedział czasu i utworzyć/spawnować nową instancję na podstawie tej przechwyconej kopii zapasowej:
Gdy węzeł będzie dostępny, nie będzie on repliką jeszcze mistrz. Musisz to skonfigurować ręcznie, wykonując proste czynności, korzystając z dostępnych procedur składowanych:
CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
gdzie,
master_host:nazwa hosta serwera głównego
master_user:nazwa użytkownika serwera głównego
master_password:hasło do serwera głównego
master_log_file:nazwa binarnego pliku dziennika z uruchomionego programu show master status
master_log_pos:pozycja dziennika binarnego od uruchomienia pokaż status główny
master_ssl_ca:kontekst certyfikatu CA. Jeśli nie używasz SSL, podaj pusty ciąg.
Wtedy uruchamianie wątków MySQL wygląda następująco,
CALL mysql.az_replication_start;
lub możesz zatrzymać wątki replikacji w następujący sposób,
CALL mysql.az_replication_stop;
lub możesz usunąć wzorzec jako,
CALL mysql.az_replication_remove_master;
lub pomiń błędy wątku SQL,
CALL mysql.az_replication_skip_counter;
Jak wspomniano wcześniej, gdy replika jest tworzona przy użyciu Microsoft Azure w ramach funkcji Dodaj replikę w instancji MySQL, te konkretne procedury składowane nie są dostępne. Jednak procedura mysql.az_replication_restart będzie dostępna, ponieważ nie można zatrzymywać ani uruchamiać wątków replikacji repliki zarządzanej przez platformę Azure. Tak więc powyższy przykład został przywrócony z mastera, który pobiera pełną kopię mastera, ale działa jako pojedynczy węzeł i wymaga ręcznej konfiguracji, aby był repliką istniejącego mastera.
Dodatkowo, jeśli masz skonfigurowaną replikę ręczną, nie zobaczysz tego w Azure Database dla serwerów MySQL → Wybierz instancję MyQL → Replikacja od momentu utworzenia lub ręcznej konfiguracji replikacji .
Alternatywne rozwiązania do tworzenia kopii zapasowych w chmurze i przywracania
Istnieją pewne scenariusze, w których chcesz mieć pełny dostęp podczas wykonywania pełnej kopii zapasowej bazy danych MySQL w chmurze. W tym celu możesz stworzyć własny skrypt lub skorzystać z technologii open-source. Dzięki nim możesz kontrolować sposób tworzenia kopii zapasowych danych w bazie danych MySQL i dokładnie sposób ich przechowywania.
Możesz również wykorzystać interfejs wiersza poleceń (CLI) platformy Azure, aby utworzyć niestandardową automatyzację. Na przykład możesz utworzyć migawkę za pomocą następującego polecenia za pomocą interfejsu wiersza polecenia platformy Azure:
az snapshot create -g myResourceGroup -source "$osDiskId" --name osDisk-backup
lub utwórz replikę serwera MySQL za pomocą następującego polecenia:
az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup
Alternatywnie możesz również skorzystać z narzędzia dla przedsiębiorstw, które oferuje sposoby wykonywania kopii zapasowej z opcjami przywracania. Korzystanie z technologii open source lub narzędzi innych firm wymaga wiedzy i umiejętności, aby wykorzystać i stworzyć własną implementację. Oto lista, z której możesz skorzystać:
- ClusterControl - Chociaż możemy być trochę stronniczy, ClusterControl oferuje możliwość zarządzania fizycznymi i logicznymi kopiami zapasowymi bazy danych MySQL przy użyciu sprawdzonych w boju technologii open-source (PXB, Mariabackup i mydumper). Obsługuje bazy danych MySQL, Percona, MariaDB, Galera. Możesz łatwo stworzyć nasze zasady tworzenia kopii zapasowych i przechowywać kopie zapasowe bazy danych w dowolnej chmurze (AWS, GCP lub Azure). Pamiętaj, że bezpłatna wersja ClusterControl nie zawiera funkcji tworzenia kopii zapasowych.
- Migawki LVM - Możesz użyć LVM, aby zrobić migawkę swojego woluminu logicznego. Dotyczy to tylko Twojej maszyny wirtualnej, ponieważ wymaga dostępu do magazynu na poziomie bloków. Korzystanie z tego narzędzia wymaga zastrzeżenia, ponieważ może sprawić, że węzeł bazy danych przestanie odpowiadać podczas wykonywania kopii zapasowej.
- Percona XtraBackup (PXB) - Technologia open source firmy Percona. Dzięki PXB możesz utworzyć fizyczną kopię zapasową bazy danych MySQL. Możesz również wykonać kopię zapasową na gorąco za pomocą PXB dla silnika pamięci masowej InnoDB, ale zaleca się uruchamianie tego na podrzędnym lub niezajętym serwerze MySQL db. Dotyczy to tylko instancji maszyny wirtualnej, ponieważ wymaga dostępu do plików binarnych lub plików do samego serwera bazy danych.
- Kopia zapasowa Maria - To samo z PXB, jest to technologia open-source rozwidlona z PXB, ale jest obsługiwana przez MariaDB. W szczególności, jeśli Twoja baza danych korzysta z MariaDB, powinieneś użyć Mariabackup, aby uniknąć problemów z niezgodnością z obszarami tabel.
- mydumper/myloader - Te narzędzia do tworzenia kopii zapasowych tworzą logiczne kopie zapasowe bazy danych MySQL. Możesz użyć tego z bazą danych Azure dla MySQL, chociaż nie próbowałem, jak skuteczne jest to w przypadku procedury tworzenia kopii zapasowej i przywracania.
- mysqldump - jest to logiczne narzędzie do tworzenia kopii zapasowych, które jest bardzo przydatne, gdy trzeba wykonać kopię zapasową i zrzucić (lub przywrócić) określoną tabelę lub bazę danych do innej instancji. Jest to powszechnie używane przez administratorów baz danych, ale musisz zwracać uwagę na miejsce na dysku, ponieważ logiczne kopie zapasowe są ogromne w porównaniu z fizycznymi kopiami zapasowymi.
- Kopia zapasowa MySQL Enterprise - Zapewnia gorące, nie blokujące się kopie zapasowe online na wielu platformach, w tym Linux, Windows, Mac i Solaris. Nie jest to bezpłatne narzędzie do tworzenia kopii zapasowych, ale oferuje wiele funkcji.
- rsync - To szybkie i niezwykle wszechstronne narzędzie do kopiowania plików. Może kopiować lokalnie, do/z innego hosta przez dowolną zdalną powłokę lub do/z zdalnego demona rsync. Oferuje dużą liczbę opcji, które kontrolują każdy aspekt jego zachowania i pozwalają na bardzo elastyczną specyfikację zestawu plików do skopiowania. Przeważnie w systemach Linux rsync jest instalowany jako część pakietu systemu operacyjnego.