資源簡介
一鍵 使用 python mysql xtrabackup備份腳本,實測可用!,可以定制添加更多功能
代碼片段和文件信息
#!/usr/bin/env?python
#?encoding:?utf-8
#?支持mysql5.7?#?wget?https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
import?datetime
import?os
import?pymysql
import?subprocess
import?re
import?sys
import?time
import?logging.handlers
innobackupex?=?‘/usr/bin/innobackupex‘
mysql_user?=?‘root‘
mysql_password?=?‘123‘
defaults_file?=?‘/etc/my.cnf‘
mysql_host?=?‘127.0.0.1‘
mysql_port?=?3306
fullback_dir?=?‘/backup/full‘
increback_dir?=?‘/backup/incre‘
log_text?=?‘/backup/backup.‘?+?datetime.datetime.now().strftime(‘%Y%m%d‘)?+?‘.txt‘
if?not?os.path.exists(fullback_dir):
????os.makedirs(fullback_dir)
if?not?os.path.exists(increback_dir):
????os.makedirs(increback_dir)
class?Logging():
????__flag?=?None
????def?__new__(cls?*args?**kwargs):
????????if?not?cls.__flag:
????????????cls.__flag?=?super().__new__(cls)
????????return?cls.__flag
????def?__init__(selflogname):
????????????logger?=?logging.getLogger()
????????????logger.setLevel(level=logging.INFO)
????????????handler?=?logging.handlers.RotatingFileHandler(lognamemode=“a“maxBytes=1024*1024*2backupCount=1encoding=“utf-8“)
????????????formatter?=?logging.Formatter(‘%(asctime)s?-?%(name)s?-?%(levelname)s?-?%(message)s‘)
????????????handler.setFormatter(formatter)
????????????console?=?logging.StreamHandler()
????????????console.setFormatter(formatter)
????????????logger.addHandler(handler)
????????????logger.addHandler(console)
????????????self.logger?=?logger
????def?Write_error_log(selfmsg):
????????logging.error(str(msg)exc_info?=?True)
????def?Write_info_log(selfmsg):
????????logging.info(str(msg))
????def?Write_warn_log(selfmsg):
????????logging.warning(str(msg))
#?環境檢查:
def?check_env():
????log_obj.Write_info_log(‘日志文件為%s:‘%log_text)
????msg=““
????chk_1?=?not?os.path.exists(innobackupex)
????chk_2?=?not?os.path.exists(fullback_dir)
????chk_3?=?not?os.path.exists(increback_dir)
????if?chk_1:
????????msg=innobackupex?+?“文件不存在“
????????log_obj.Write_info_log(get_now_time()?+?‘:‘?+?innobackupex?+?‘文件不存在‘)
????if?chk_2:
????????msg=fullback_dir?+?“全量備份目錄不存在“
????????log_obj.Write_info_log(get_now_time()?+?‘:‘?+?fullback_dir?+?‘全量備份目錄不存在‘)
????if?chk_3:
????????msg?=?increback_dir?+“增量備份目錄不存在“
????????log_obj.Write_info_log(get_now_time()?+?‘:‘?+?increback_dir?+?‘增量備份目錄不存在‘)
????conn?=?None
????chk_4?=?False
????try:
????????conn?=?pymysql.connect(
????????????host=mysql_host
????????????port=mysql_port
????????????user=mysql_user
????????????passwd=mysql_password
????????????charset=“utf8“
????????)
????except?Exception?as?err:
????????msg=“mysql數據庫連接錯誤“
????????log_obj.Write_info_log(get_now_time()?+?‘:‘?+?str(err))
????????chk_4?=?True
????if?(chk_1?or?chk_2?or?chk_3?or?chk_4):
????????#?檢查命令,目錄是否存在,檢查Mysql是否可以連接如果否終止備份程序
????????log_obj.Write_info_log(get_now_time()?+?‘:‘?+?msg)
????????log_obj.Write_inf
評論
共有 條評論