Kopia zapasowa bazy danych to nic innego jak sposób na ochronę lub przywrócenie danych. Jest to proces przechowywania stanu operacyjnego, architektury i danych Twojej bazy danych. Może być bardzo przydatny w sytuacjach awarii technicznej lub katastrofy. Dlatego ważne jest, aby zachować kopię zapasową bazy danych oraz aby baza danych miała dobry i łatwy proces tworzenia kopii zapasowych.
MongoDB zapewnia kilka narzędzi/technik do łatwego tworzenia kopii zapasowych baz danych.
W tym artykule omówimy niektóre z najlepszych przepływów pracy tworzenia i przywracania kopii zapasowych MongoDB.
Ogólnie rzecz biorąc, istnieją trzy najpopularniejsze opcje tworzenia kopii zapasowych serwera/klastra MongoDB.
- Mongodump/Mongorestore
- Menedżer chmury MongoDB
- Migawki bazy danych
Oprócz tych ogólnych opcji istnieją inne sposoby tworzenia kopii zapasowej MongoDB. Wszystkie te opcje omówimy również w tym artykule. Zaczynajmy.
MongoDump/MongoRestore
Jeśli masz małą bazę danych (<100 GB) i chcesz mieć pełną kontrolę nad swoimi kopiami zapasowymi, najlepszymi opcjami są Mongodump i Mongorestore. Są to polecenia powłoki mongo, których można użyć do ręcznego wykonania kopii zapasowej bazy danych lub kolekcji. Mongodump zrzuca wszystkie dane w binarnym formacie JSON(BSON) do określonej lokalizacji. Mongorestore może użyć tych plików BSON do przywrócenia bazy danych.
Utwórz kopię zapasową całej bazy danych
$ sudo mongodump --db mydb --out /var/backups/mongo
Wyjście:
2018-08-20T10:11:57.685-0500 writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500 writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500 done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500 writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson
W tym poleceniu najważniejszym argumentem jest --db. Określa nazwę bazy danych, której kopię zapasową chcesz wykonać. Jeśli nie określisz tego argumentu, polecenie Mongodump wykona kopię zapasową wszystkich twoich baz danych, co może być bardzo intensywnym procesem.
Utwórz kopię zapasową jednej kolekcji
$ mongodump -d mydb -o /var/backups/mongo --collection users
To polecenie utworzy kopię zapasową tylko kolekcji użytkowników w bazie danych mydb. Jeśli nie podasz tej opcji, domyślnie utworzy kopię zapasową całej kolekcji w bazie danych.
Wykonywanie regularnych kopii zapasowych za pomocą Mongodump/Mongorestore
Standardową praktyką jest regularne tworzenie kopii zapasowych bazy danych MongoDB. Załóżmy, że chcesz robić kopię zapasową codziennie o 3:03 rano, a następnie w systemie Linux możesz to zrobić, dodając wpis crona w crontab.
$ sudo crontab -e
Dodaj tę linię w crontab:
3 3 * * * mongodump --out /var/backups/mongo
Przywróć całą bazę danych
Do przywrócenia bazy danych możemy użyć polecenia Mongorestore z opcją --db. Odczyta pliki BSON utworzone przez Mongodump i przywróci Twoją bazę danych.
$ sudo mongorestore --db mydb /var/backups/mongo/mydb
Wyjście
2018-07-20T12:44:30.876-0500 building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500 reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500 restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500 restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500 finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500 done
Przywróć całą kolekcję
Aby przywrócić tylko jedną kolekcję z db, możesz użyć następującego polecenia:
$ mongorestore -d mydb -c users mydb/users.bson
Jeśli twoja kolekcja ma kopię zapasową w formacie JSON zamiast BSON, możesz użyć następującego polecenia:
$ mongoimport --db mydb --collection users --file users.json --jsonArray
Zalety
- Bardzo prosty w użyciu
- Masz pełny dostęp do kopii zapasowej
- Możesz umieścić swoje kopie zapasowe w dowolnej lokalizacji, takiej jak udziały NFS, AWS S3 itp.
Wady
- Za każdym razem, gdy zajmie to pełną kopię zapasową bazy danych, a nie tylko różnicę.
- W przypadku dużych baz danych wykonanie kopii zapasowej i przywrócenie bazy danych może zająć wiele godzin.
- Domyślnie nie jest to punkt w czasie, co oznacza, że jeśli dane ulegną zmianie podczas tworzenia kopii zapasowej, kopia zapasowa może spowodować niespójność. Możesz użyć opcji --oplog, aby rozwiązać ten problem. Pod koniec procesu mongodump zrobi migawkę bazy danych.
Menedżer operacji MongoDB
Ops Manager to aplikacja do zarządzania dla MongoDB, która działa w Twoim centrum danych. Stale tworzy kopie zapasowe danych i zapewnia procesy przywracania bazy danych do określonego momentu. W tej aplikacji znajduje się agent, który łączy się z instancjami MongoDB. Najpierw wykona wstępną synchronizację, aby wykonać kopię zapasową bieżącego stanu bazy danych. Agent będzie nadal wysyłał skompresowane i zaszyfrowane dane oploga do Ops Managera, aby zapewnić ciągłą kopię zapasową. Korzystając z tych danych, Ops Manager utworzy migawki bazy danych. Będzie tworzył migawkę bazy danych co 6 godzin, a dane oplog będą przechowywane przez 24 godziny. Harmonogram tworzenia zrzutów można skonfigurować w dowolnym momencie za pomocą Menedżera operacji.
Zalety
- Domyślnie jest to punkt w czasie
- Nie wpływa na wydajność produkcji z wyjątkiem początkowej synchronizacji
- Obsługa spójnych migawek klastrów podzielonych na fragmenty
- Elastyczność wykluczania niekrytycznych kolekcji
Wady
- Opóźnienie sieci wzrasta wraz z rozmiarem migawki podczas przywracania bazy danych.
Menedżer chmury MongoDB
MongoDB Cloud Manager to rozwiązanie do tworzenia kopii zapasowych w chmurze, które zapewnia przywracanie do punktu w czasie, ciągłe tworzenie kopii zapasowych online jako w pełni zarządzaną usługę. Możesz po prostu zainstalować agenta Cloud Manager, aby zarządzać tworzeniem kopii zapasowych i przywracaniem bazy danych. Przechowa dane kopii zapasowej w chmurze MongoDB.
Zalety
- Bardzo prosty w użyciu. Dobry GUI.
- Ciągła kopia zapasowa zapytań i oplog.
Wady
- Brak kontroli nad danymi kopii zapasowej. Jest przechowywany w chmurze MongoDB.
- Koszt zależy od rozmiaru danych i ilości zmian oploga.
- Proces przywracania jest powolny.
Pliki bazy danych migawek
To najprostsze rozwiązanie do tworzenia kopii zapasowych bazy danych. Możesz skopiować wszystkie podstawowe pliki (zawartość danych/katalog) i umieścić je w dowolnej bezpiecznej lokalizacji. Przed skopiowaniem wszystkich plików należy zatrzymać wszystkie trwające operacje zapisu do bazy danych, aby zapewnić spójność danych. Możesz użyć polecenia db.fsyncLock(), aby zatrzymać wszystkie operacje zapisu.
Istnieją dwa rodzaje migawek:jeden to migawki na poziomie chmury, a drugi to migawki na poziomie systemu operacyjnego.
Jeśli przechowujesz dane bazy danych u dostawcy usług w chmurze, takiego jak AWS, musisz wykonać migawki AWS EBS do tworzenia kopii zapasowych. W przeciwieństwie do tego, jeśli przechowujesz pliki DB w natywnym systemie operacyjnym, takim jak Linux, musisz wykonać migawki LVM. Migawki LVM nie są przenośne na inne maszyny. Migawki baz w chmurze są więc lepsze niż migawki oparte na systemie operacyjnym.
Zalety
- Łatwy w użyciu.
- Pełna kontrola nad migawkami. Możesz przenieść go do dowolnego centrum danych.
- Te zrzuty są zrzutami różnic, które przechowują tylko różnice w stosunku do poprzednich zrzutów.
- Nie ma potrzeby pobierania migawek w celu przywrócenia bazy danych. Możesz po prostu utworzyć nowy wolumin ze swojej migawki.
Wady
- Korzystając z tej metody, możesz przywrócić bazę danych tylko w punktach zerwania.
- Konserwacja czasami staje się bardzo skomplikowana.
- Aby koordynować kopie zapasowe we wszystkich zestawach replik (w systemie sharded), potrzebujesz specjalnego zespołu Devops.
Narzędzie do spójnej kopii zapasowej MongoDB
Spójna kopia zapasowa MongoDB to narzędzie do wykonywania spójnych kopii zapasowych klastrów MongoDB. Może wykonać kopię zapasową klastra z jednym lub wieloma fragmentami w jednym punkcie bazy danych. Używa Mongodump jako domyślnej metody tworzenia kopii zapasowych. Uruchom następujące polecenie, aby wykonać kopię zapasową za pomocą tego narzędzia.
$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo
Wszystkie kopie zapasowe generowane przez te polecenia są kompatybilne z MongoRestore. Możesz użyć polecenia mongorestore z opcją --oplogReplay, aby zapewnić spójność.
$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump
Zalety
- W pełni otwarte źródło
- Działa z klastrem podzielonym na fragmenty
- Zapewnia opcję zdalnej kopii zapasowej, takiej jak Amazon S3
- Dostępne automatyczne skalowanie
- Bardzo łatwy w instalacji i uruchomieniu
Wada
- Nie w pełni dojrzały produkt
- Bardzo niewiele opcji zdalnego przesyłania
- Nie obsługuje szyfrowania danych przed zapisaniem na dysku
- W oficjalnym repozytorium kodu brakuje odpowiednich testów
Kopia zapasowa ClusterControl
ClusterControl to zautomatyzowany system zarządzania bazą danych typu wszystko w jednym. Umożliwia łatwe monitorowanie, wdrażanie, zarządzanie i skalowanie klastrów baz danych. Obsługuje MySQL, MongoDB, PostgreSQL, Percona XtraDB i Galera Cluster. To oprogramowanie automatyzuje prawie wszystkie operacje bazy danych, takie jak wdrażanie klastra, dodawanie lub usuwanie węzła z dowolnego klastra, ciągłe tworzenie kopii zapasowych, skalowanie klastra itp. Wszystkie te czynności można wykonać za pomocą jednego GUI dostarczanego przez system ClusterControl.
ClusterControl zapewnia bardzo przyjemny GUI do zarządzania kopiami zapasowymi MongoDB z obsługą harmonogramów i kreatywnych raportów. Daje dwie opcje metod tworzenia kopii zapasowych.
- Mongodump
- Spójna kopia zapasowa Mongodb
Dzięki temu użytkownicy mogą wybrać dowolną opcję zgodnie ze swoimi potrzebami. To narzędzie przypisuje unikalny identyfikator do wszystkich kopii zapasowych i przechowuje go pod tą ścieżką:ClusterControl> Ustawienia> Kopia zapasowa> Identyfikator kopii zapasowej. Jeśli określony węzeł nie jest aktywny podczas tworzenia kopii zapasowej, narzędzie automatycznie znajdzie aktywny węzeł z klastra i przeprowadzi proces tworzenia kopii zapasowej na tym węźle. To narzędzie zapewnia również opcję planowania tworzenia kopii zapasowych przy użyciu dowolnej z powyższych metod tworzenia kopii zapasowych. Możesz włączyć/wyłączyć dowolne zadanie planowania, po prostu przełączając przycisk. ClusterControl uruchamia proces tworzenia kopii zapasowej w tle, więc nie wpłynie to na inne zadania w kolejce.
Zalety
- Łatwa instalacja i bardzo prosty w użyciu
- Wiele opcji metod tworzenia kopii zapasowych
- Planowanie kopii zapasowej jest bardzo łatwe dzięki prostemu formularzowi GUI
- Automatyczna weryfikacja kopii zapasowej
- Raporty zapasowe ze statusem
Wada
- Obie metody tworzenia kopii zapasowych wewnętrznie wykorzystują mongodump, co ma pewne problemy z obsługą bardzo dużych baz danych.
Wniosek
Dobra strategia tworzenia kopii zapasowych jest krytyczną częścią każdego systemu zarządzania bazą danych. MongoDB oferuje wiele opcji tworzenia kopii zapasowych i odzyskiwania/przywracania. Oprócz dobrej metody tworzenia kopii zapasowych bardzo ważne jest posiadanie wielu replik bazy danych. Pomaga to przywrócić bazę danych bez przestoju nawet jednej sekundy. Czasami w przypadku większych baz danych proces tworzenia kopii zapasowej może wymagać bardzo dużych zasobów. Dlatego twój serwer powinien być wyposażony w dobry procesor, pamięć RAM i więcej miejsca na dysku, aby obsłużyć tego rodzaju obciążenie. Z tych powodów proces tworzenia kopii zapasowej może zwiększyć obciążenie serwera, dlatego należy uruchamiać proces tworzenia kopii zapasowej w nocy lub poza godzinami szczytu.