目的:為了解決修改關鍵或者基礎數據導致項目出現問題,所以,備份是很有必要的,並且解決備份文件過多的問題。
前提:備份的本機必須安裝Mysql,否則Mysql命令報錯。
使用:linux一般自帶python,執行腳本:python sql_bak.py 即可。
(PS: 如果不小心python后面沒輸入內容,可輸入exit()即可推薦python命令行)
# -*- coding: utf-8 -*- # Import required python libraries # pancx 2019-04-10 import os import time import datetime import shutil # MySQL database details to which backup to be done. Make sure below user having enough privileges to take databases backup. #數據庫ip DB_HOST = "www.tencentcdb.com" #數據庫端口 DB_PORT = "10111" #這里填數據庫用戶名 DB_USER = "root" #數據庫密碼 DB_USER_PASSWORD = "\'(ink^zm+36ygZvgXPjq#*k_Xd=&18!\'" #需要備份的數據庫 DB_NAMES = "order,act,ggg" #需要備份到的路徑 BACKUP_PATH = "/sqlbak/" # Getting current datetime to create seprate backup folder like "20190412". DATETIME = time.strftime('%Y%m%d') TODAYBACKUPPATH = BACKUP_PATH + DATETIME # Checking if backup folder already exists or not. If not exists will create it. if not os.path.exists(TODAYBACKUPPATH): os.makedirs(TODAYBACKUPPATH) today = datetime.datetime.now() for item in os.listdir(BACKUP_PATH): try: foldername = os.path.split(item)[1] day = datetime.datetime.strptime(foldername, "%Y%m%d") diff = today - day if diff.days >= 90: print('- - - del folder three months ago: ' + BACKUP_PATH + item) shutil.rmtree(BACKUP_PATH + item) except: pass # Code for checking if you want to take single database backup or assinged multiple backups in DB_NAME. DBS = DB_NAMES.split(",") for DB_NAME in DBS: # Starting actual database backup process. DB_PATH = TODAYBACKUPPATH + "/" + DB_NAME + ".sql.gz" print("- - - baking '" + DB_NAME + ".sql'") dumpcmd = "mysqldump -h" + DB_HOST + " -P" + DB_PORT + " -u" + DB_USER + " -p" + DB_USER_PASSWORD + " --databases " + DB_NAME + " --set-gtid-purged=OFF |gzip > " + DB_PATH os.system(dumpcmd) print("- - - Your backups has been created in '" + TODAYBACKUPPATH + "' directory") # mysqldump: [Warning] Using a password on the command line interface can be insecure. 在命令行輸入密碼,就會提示這些安全警告信息(警告信息可忽略)