Automatyczne tworzenie kopii zapasowych mysql na Ubuntu

12

Mam serwer Ubuntu z bazą danych MySQL. Chciałbym skonfigurować automatyczne tworzenie kopii zapasowej tej bazy danych w nocy na innym serwerze (na przykład ovh).

Nie wiem, co byłoby najlepszym narzędziem do tego. Jeśli ktoś ma jakieś porady ...

Z góry dziękuję.

użytkownik1260928
źródło

Odpowiedzi:

29

Najłatwiejszym sposobem zautomatyzowania tego zadania byłoby połączenie zrzutów MySQL i cronjob. Wiele informacji na ten temat można znaleźć na tej i innych stronach internetowych, ale ze względu na zakończenie:

Utwórz plik mysqldump.sh

Który będzie zawierał polecenie mysql dump, które zaplanujemy w zadaniu cron (zastąp użytkownika, hasło i ścieżkę, aby pasowały do ​​twojego środowiska):

mysqldump -u root -p<mysql_root_password> --all-databases | gzip > /desired/backup/folder/mysqldb_`date +%F`.sql.gz

Edycja: Jeśli chcesz, aby skrypt przechował kopię zapasową w zdalnej lokalizacji, po prostu zamontuj odpowiednie urządzenie lub udostępnij i użyj ścieżki montowania w skrypcie.

Przetestuj skrypt

Upewnij się, że skrypt ma uprawnienia do wykonywania:

chmod +x /path/to/mysqldump.sh

Uruchom skrypt:

sh /path/to/mysqldump.sh

I sprawdź, czy działa poprawnie (plik kopii zapasowej zostanie utworzony w określonym folderze kopii zapasowej).

Utwórz i zaplanuj nowe zadanie cron

W wierszu polecenia wpisz

sudo crontab -e

I dodaj następujący wiersz na dole pliku:

30 23 * * * /path/to/mysqldump.sh

Spowoduje to wykonanie skryptu codziennie o 23:30.

Rozszerz ten prosty skrypt

Istnieje dosłownie mnóstwo rzeczy, które możesz zrobić, aby ulepszyć tę prostą metodę tworzenia kopii zapasowych:

  • Tworzenie kopii zapasowej w innym systemie
  • Monitoruj miejsce na dysku
  • Raportowanie przez e-mail
  • ...

Więc nie kończ tutaj i eksperymentuj! :-)

Użyj narzędzi do tworzenia kopii zapasowych lub usług tworzenia kopii zapasowych w chmurze

Chociaż powyższa metoda jest jedną z najłatwiejszych i można ją rozszerzyć w celu spełnienia określonych potrzeb, warto wspomnieć, że istnieją inne alternatywy:

  • narzędzia do tworzenia kopii zapasowych, takie jak AutoMySQLBackup, aplikacja typu open source, która może ułatwić proces konfiguracji powiadomień e-mail, kompresji, szyfrowania, rotacji i typu (np. przyrostowego) kopii zapasowych. Jeśli chodzi o Mai 2018, jest on dostępny dla Ubuntu Server za pośrednictwem APT.
  • oparte na chmurze usługi tworzenia kopii zapasowych, takie jak BackupBird, myRepono, Bitcan itp., które mogą być interesujące, jeśli zarządzasz kilkoma serwerami baz danych i chcesz centralnie zarządzać wszystkimi ich kopiami zapasowymi.

Należy pamiętać, że nie jestem w żaden sposób powiązany z żadnym z wyżej wymienionych rozwiązań i usług i wymieniam je tylko w celach informacyjnych, więc używaj ich na własne ryzyko.

Przydatne linki / referencje:

Cron -> https://en.wikipedia.org/wiki/Cron

Zrzut MySQL -> https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

Eduardo López
źródło
4
Użyj date +%F- automatycznie wybierze kombinację roku + miesiąca + daty dostosowaną do ustawień regionalnych użytkownika (na przykład otrzymam YYYY-MM-DD).
mur
O tak, o wiele lepiej. Zmienię odpowiedź :-)
Eduardo López
+1 Dobra odpowiedź: dokładnie to, co jest konieczne, nie więcej, nie mniej.
Jos
2
Jeśli musisz użyć sudo, aby wykonać tę operację (a) zadzwoń sudo crontab -ei nie zapomnij, aby skrypt był wykonywalny:chmod +x /path/to/mysqldump.sh
zinon
zinon - Dzięki za podpowiedzi! Zaktualizowałem odpowiedź.
Eduardo López