python3.6指令碼備份mysql資料庫
阿新 • • 發佈:2018-12-14
環境cnetos7.3+python3.6+mysql5.7
安裝python3.6環境
1.安裝IUS軟體源
安裝EPEL依賴
sudo yum install epel-release
2.安裝python3.6
sudo yum install python36u
安裝Python3完成後的shell命令為python3.6,為了使用方便,建立一個到python3的符號連結
sudo ln -s /bin/python3.6 /bin/python3
3.安裝pip3
sudo yum install python36u-pip
安裝pip完成後的shell命令為pip3.6,為了使用方便,建立一個到pip3的符號連結
sudo ln -s /bin/pip3.6 /bin/pip3
控制檯輸入python3,如下圖所示代表安裝成功
指令碼檔案
# Import required python libraries import os import time import datetime import glob import shutil # MySQL database details to which backup to be done. Make sure below user having enough privileges to take databases backup. # To take multiple databases backup, create any file like /backup/dbnames.txt and put databses names one on each line and assignd to DB_NAME variable. #這裡填你的公網ip DB_HOST = ' ' #這裡填資料庫使用者名稱 DB_USER = ' ' #這裡填資料庫密碼 DB_USER_PASSWORD = ' ' #DB_NAME = '/backup/dbnames.txt' #這裡填要備份的資料庫 DB_NAME = ' ' #這裡填需要備份到的路徑 BACKUP_PATH = ' ' # Getting current datetime to create seprate backup folder like "12012013-071334". DATETIME = time.strftime('%Y%m%d') TODAYBACKUPPATH = BACKUP_PATH + DATETIME # Checking if backup folder already exists or not. If not exists will create it. print ('del folder three days ago') folders = glob.glob('這裡填前面填的需要備份到的路徑/*') #刪除前三條備份的檔案目錄 today = datetime.datetime.now() for item in folders: try: foldername = os.path.split(item)[1] day = datetime.datetime.strptime(foldername, "%Y%m%d") diff = today - day if diff.days >= 3: shutil.rmtree(item) except: pass print ("creating backup folder") if not os.path.exists(TODAYBACKUPPATH): os.makedirs(TODAYBACKUPPATH) # Code for checking if you want to take single database backup or assinged multiple backups in DB_NAME. print ("checking for databases names file.") if os.path.exists(DB_NAME): file1 = open(DB_NAME) multi = 1 print ("Databases file found...") print ("Starting backup of all dbs listed in file " + DB_NAME) else: print ("Databases file not found...") print ("Starting backup of database " + DB_NAME) multi = 0 # Starting actual database backup process. if multi: in_file = open(DB_NAME,"r") flength = len(in_file.readlines()) in_file.close() p = 1 dbfile = open(DB_NAME,"r") while p <= flength: db = dbfile.readline() # reading database name from file db = db[:-1] # deletes extra line dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql" os.system(dumpcmd) p = p + 1 dbfile.close() else: db = DB_NAME dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql" os.system(dumpcmd) print ("Backup script completed") print ("Your backups has been created in '" + TODAYBACKUPPATH + "' directory")
新建一個sh啟動指令碼
vi auto.sh
新增內容
#!/usr/bin/env bash
#/test/db 是我前面設定的需要備份到的路徑
#db_backup.py
cd /test/db是我的python指令碼檔名
setsid python3 db_backup.py
設定定時器執行間隔時間(我設定的是兩分鐘執行一次,具體的可根據個人需要設定)
vi /etc/crontab
在檔案末尾新增如下格式
*/2 * * * * root /test/db/auto.sh