Zdecydowałem się całkowicie zrezygnować z używania ispmanager, ponieważ zajmuje ono zasoby i służy tylko jednemu - backupowi danych. Ale ponieważ można to zrobić osobiście, utrzymanie panelu na serwerze dla dziesięciu stron nie ma sensu.
Dlatego pierwszym zadaniem jest tworzenie kopii zapasowych baz danych mysql. Bazy danych mają niewielki rozmiar, więc używana będzie najprostsza wersja kopii zapasowych - tworzenie archiwów i umieszczanie ich w określonym folderze serwera.
Oczywiście, bezpieczniej byłoby wysłać kopię zapasową sftp gdzieś do innego serwera w innym centrum danych (i kraju, który już tam jest), ale ponieważ moje witryny zmieniają się kilka razy w miesiącu, pobieranie kopii zapasowych co dwa dni nie jest trudne według zawodu. :)
Nie miałem doświadczenia w pisaniu skryptów w Bashu do tej chwili. Ale nie było to trudne, biorąc pod uwagę liczne przykłady skryptów kopii zapasowych mysql na różnych stronach dotyczących administracji serwerem.
Sam skrypt mysqlbackup.sh:
#! / bin / bash # Inicjalizuj zmienne TMPDIR = "sqlfiles" BACKUPDIR = "/ storage" USER = "root" PASS = "xxx" TIMEY = $ (data +% Y-% m-% d) # Sprawdź dostępność folderów dla kopii zapasowych jeśli [! -d "$ BACKUPDIR"]; następnie mkdir -m 0700 "$ BACKUPDIR" fi # Sprawdź dostępność katalogu tymczasowego jeśli [! -d "$ BACKUPDIR / $ TMPDIR"]; następnie mkdir -m 0700 "$ BACKUPDIR / $ TMPDIR" fi # Zapisz kopie cd "$ BACKUPDIR / $ TMPDIR" dla bazy danych w `mysql -s -r -e 'POKAŻ BAZY DANYCH' | grep -v Baza danych | grep -v informacja_schemat | grep -v performance_schema | grep -v mysql`; wykonaj mysqldump $ database> $ database.sql; done # Utwórz archiwum cd "$ BACKUPDIR" bazy danych tar -cjf - "$ TIMEY" .tbz2 "$ TMPDIR" bazy danych chmod 0600 - "$ TIMEY" .tbz2 # Usuń folder tymczasowy rm -r $ TMPDIR echo "Bazy danych zapisane!" wyjdź 1
Praca z mysql odbywa się bezpośrednio od użytkownika root, ponieważ ma on dostęp do wszystkich baz danych jednocześnie.
Database information_schema , mysql , performance_schema są wykluczone z kopii zapasowej. Następnie wszystkie bazy danych są umieszczane w archiwum bzip2 i przechowywane w określonym folderze, skąd można je później pobrać.
Zadanie wykonania skryptu raz dziennie jest zapisane w programie planującym Cron, na przykład o pierwszej nad ranem.
00 01 * * * sh ~ / mysqlbackup.sh
Jeśli w ustawieniach korony zostanie ustawiony prawidłowy adres e-mail, raport zostanie wysłany na pocztę, na której zostaną zapisane zapisane bazy danych.
PS Możesz także tworzyć kopie zapasowe i kilka razy dziennie. Aby to zrobić, musisz określić czas utworzenia w nazwie archiwum, aby plik nie został nadpisany.
Coś w skrypcie nigdy nie używa hasła do mysql
Dobra, stracony czas. Ale tylko dlatego, że używam pliku .my.cnf w moim głównym katalogu głównym. W tym formacie jest zarejestrowany login i hasło:
Powinieneś dodać to do postu wcześniej. :)
Dzięki, dowiedziałeś się o my.cnf :)
Moja wersja wdrożenia, czy ktoś może się przydać:
https://github.com/wdda/backupper_mysql