Skrypt Python dla kopii zapasowej bazy danych mysql

Skrypt Python dla kopii zapasowej bazy danych mysql

To prosty skrypt Python do tworzenia kopii zapasowych baz danych MySQL za pomocą narzędzia MySQLDUMP. Ten skrypt został przetestowany z Python 3.5 i 2.7.15.

Jak używać skryptu

Ten skrypt jest bardzo łatwy w użyciu, pobieranie lub skopiuj ten skrypt w systemie lokalnym i wykonuj go za pomocą Pythona. Ten skrypt jest w stanie wziąć kopię zapasową wielu baz danych

Kopia zapasowa pojedynczej bazy danych: Jeśli chcesz użyć tego skryptu do pobierania kopii zapasowej bazy danych, edytuj skrypt jak poniżej. Na przykład nazwa bazy danych to mydb.

 Db_name = „mydb” 

Kopia zapasowa wielu baz danych: Aby wziąć udział w tworzeniu kopii zapasowych wielu baz danych, utwórz plik tekstowy, taki jak /kopie zapasowe /dbnames.TXT i dodaj nazwy baz danych jeden na wiersz jak poniżej

# Cat /Backup /Dbnames.TXT Database1 mydb 

I dodaj ten plik do skryptu jak poniżej.

 Db_name = '/backup/dbnames.tekst' 

Zmień lokalizację kopii zapasowej: Możesz zmienić poniżej zmienną, aby zmienić lokalizację ścieżki kopii zapasowej.

 Backup_path = '/backup/dbbackup/' 

Skrypt kopii zapasowych Pythona Mysql

Kliknij tutaj lub użyj poniżej polecenia, aby pobrać skrypt z GitHub lub po prostu skopiować poniżej skrypt.

#!/usr/bin/python ##########################################################################. ##################Ten skrypt Python jest używany do kopii zapasowej bazy danych MySQL#za pomocą MySQLDump i Tar Utility. # # Napisane przez: Rahul Kumar # Strona internetowa: http: // tecadmin.netto # utworzone Data: 03 grudnia 2013 # Ostatni zmodyfikowany: 17 sierpnia 2018 # testowany z: Python 2.7.15 i Python 3.5 # Wersja skryptu: 1.4#########################################################. ###########Import Wymagane biblioteki Python Importuj OS Importuj czas import rur datetime#MySQL baza danych szczegółowe. Upewnij się, że poniżej użytkownika ma wystarczające uprawnienia do tworzenia kopii zapasowych baz danych. # Aby wziąć udział w tworzeniu kopii zapasowych wielu baz danych, utwórz dowolny plik, taki jak /kopie zapasowe /dbnames.txt i umieść nazwy baz danych jeden na każdym wierszu i przypisany do zmiennej nazwy db_name. Db_host = 'localHost' db_user = 'root' db_user_password = '_MYSQL_USER_PASSWORD_' #db_name = '/backup/dbnamesList.txt 'db_name =' db_name_to_backup 'backup_path ='/backup/dbbackup ' # uzyskanie bieżącego datetime, aby utworzyć osobny folder kopii zapasowej, taki jak „20180817-123433”. DateTime = czas.Strftime ('%y%m%d-%h%m%s') dziśBackuppath = backup_path + '/' + dateTime # Sprawdzanie, czy folder kopii zapasowej już istnieje, czy nie. Jeśli nie istnieje, utworzy to. Spróbuj: OS.STAT (Todaybackuppath) Z wyjątkiem: OS.MKDIR (TodayBackuppath) # Kod do sprawdzania, czy chcesz wziąć kopię zapasową pojedynczej bazy danych lub wielokrotne kopie zapasowe w nazwie db_name. wydrukuj („Sprawdzanie pliku nazwy baz danych.") Jeśli OS.ścieżka.istnieje (nazwa db_name): file1 = Open (db_name) multi = 1 print („Znaleziono plik baz danych…”) Drukuj („Rozpoczęcie kopii zapasowej wszystkich DBS wymienionych w pliku„ + db_name) else: print („plik baz danych nie znaleziono…”) Drukuj („Rozpoczęcie kopii zapasowej bazy danych” + nazwa db_name) Multi = 0 # Rozpoczęcie faktycznego procesu kopii zapasowej bazy danych. Jeśli multi: in_file = otwart (db_name, „r”) fledch = len (in_file.readLines ()) in_file.close () p = 1 dbfile = otwarte (nazwa db_name, „r”), a rurki p ” +.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (zrzut) gzipcmd = "gzip" + rurki.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (gzipcmd) p = p + 1 dbfile.close () else: db = db_name zrzut.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (zrzut) gzipcmd = "gzip" + rurki.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (gzipcmd) print („”) print („Skrypt kopii zapasowej ukończony”) print („Twoje kopie zapasowe zostały utworzone w„ ” + TodayBackuppath +„ „Directory”)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#!/usr/bin/python ##########################################################################. #################.## Wpisane przez: Rahul Kumar# Strona internetowa: http: // tecadmin.netto# utworzone Data: 03 grudnia 2013# Ostatni zmodyfikowany: 17 sierpnia 2018# testowany z: Python 2.7.15 i Python 3.5# Wersja skryptu: 1.4 ########################################################. ###########Import Wymagane biblioteki Python Importuj Osimport Timport Timport Datetimport Rury#szczegółowe informacje o bazie danych MySQL. Upewnij się, że poniżej użytkownika ma wystarczające uprawnienia do tworzenia kopii zapasowych baz danych.# Aby wziąć udział w tworzeniu kopii zapasowych wielu baz danych, utwórz dowolny plik, taki jak /kopie zapasowe /dbnames.txt i umieść nazwy baz danych jeden na każdym wierszu i przypisany do zmiennej nazwy db_name. Db_host = 'localHost' db_user = 'root'db_user_password =' ​​_MYSQL_USER_PASSWORD _ '#db_name ='/backup/dbnamesList.txt'db_name = 'db_name_to_backup'backup_path ='/backup/dbbackup ' # uzyskanie bieżącego datetime, aby utworzyć osobny folder kopii zapasowej, taki jak „20180817-123433”.DateTime = czas.Strftime ('%y%m%d-%h%m%s') dziśBackuppath = backup_path + '/' + dateTime # Sprawdzanie, czy folder kopii zapasowej już istnieje, czy nie. Jeśli nie istnieje, utworzy to.Spróbuj: OS.STAT (Todaybackuppath) Z wyjątkiem: OS.MKDIR (TodayBackuppath) # Kod do sprawdzania, czy chcesz wziąć kopię zapasową pojedynczej bazy danych lub wielokrotne kopie zapasowe w nazwie db_name.wydrukuj („Sprawdzanie pliku nazwy baz danych.") Jeśli OS.ścieżka.istnieje (nazwa db_name): file1 = Open (db_name) multi = 1 print („Znaleziono plik baz danych…”) Drukuj („Rozpoczęcie kopii zapasowej wszystkich DBS wymienionych w pliku„ + db_name) else: print („plik baz danych nie znaleziono…”) Drukuj („Rozpoczęcie kopii zapasowej bazy danych” + nazwa db_name) Multi = 0 # Rozpoczęcie faktycznego procesu kopii zapasowej bazy danych.Jeśli multi: in_file = otwart (db_name, „r”) fledch = len (in_file.readLines ()) in_file.close () p = 1 dbfile = otwarty (nazwa db_name, „r”), podczas gdy P <= flength: db = dbfile.readline() # reading database name from file db = db[:-1] # deletes extra line dumpcmd = "mysqldump -h " + DB_HOST + " -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > „ + Rury.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (zrzut) gzipcmd = "gzip" + rurki.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (gzipcmd) p = p + 1 dbfile.close () else: db = db_name zrzut.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (zrzut) gzipcmd = "gzip" + rurki.Cytat (TodayBackuppath) + "/" + db + ".SQL "OS.System (gzipcmd) print („”) print („Skrypt kopii zapasowej ukończony”) print („Twoje kopie zapasowe zostały utworzone w„ ” + TodayBackuppath +„ „Directory”)

Wykonaj skrypt Pythona

Po pobraniu skryptu uczyń skrypt wykonalny za pomocą następującego polecenia

CHMOD +X DBBACUP.py 

i wykonaj ten skrypt jak poniżej

Python2 dbbackup.py 

Możesz także zaplanować ten skrypt, aby działał codziennie w regularnych odstępach czasu za pomocą crontab. Dodaj poniżej polecenie w crontab.

0 2 * * */usr/bin/Python dbbackup.py 

Przeczytaj więcej o crontab na 20 przydatnych przykładach do planowania pracy.

Dziękuję! do używania tego skryptu. Jeśli masz jakieś sugestie dotyczące mojego scenariusza, możesz mi napisz lub umieść komentarz poniżej. Twoja opinia pomoże mi to poprawić.