xtrabackup备份脚本python编写

                        xtrabackup备份脚本python编写
import os
import  subprocess
import  logging
import  time
from .ssh_client import MySshClient
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
backup_base='/home/backup'
def create_backup_base(ip):
   my_ssh_client = MySshClient()
   cmd='mkdir -p %s'%(backup_base)
   my_ssh_client.ssh_interactive(ip,cmd)
   logger.info('confirm create backup base no matter it if exists before')
def full_backup_database(ip,db_port):
   my_ssh_client = MySshClient()
   bktimstamp=time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime())
   backupdir='%s/%s-mysql%s-%s'%(backup_base,ip,db_port,bktimstamp)
   cmd='mkdir %s'%backupdir
   my_ssh_client.ssh_interactive(ip,cmd)
   cmd="xtrabackup --defaults-file=/etc/my%s.cnf -H %s -P %s -udbadmin -pdbadmin --backup  --target-dir=%s >%s/backup.log 2>&1 &"%(db_port,ip,db_port,backupdir,backupdir)
   my_ssh_client.ssh_interactive(ip,cmd)
   return  backupdir

def copy_backup2manger(ip,db_port):
   managerdir='/home/backup'
   backupdir=full_backup_database(ip,db_port)
   while True:
       cmd='ssh %s ps -ef|grep -i xtrabackup|grep -v grep|wc -l'%(ip)
       (status,res)=subprocess.getstatusoutput(cmd)
       if int(res)==0:
           break
       else:
           logger.info('xtrabackup is running please wait')
   cmd='scp -r %s:%s %s'%(ip,backupdir,managerdir)
   os.system(cmd)
   logger.info('xtrabackup file has been transported to the manage host')
   print(managerdir+'/'+backupdir.split('/')[-1])
   return  managerdir+'/'+backupdir.split('/')[-1]

if __name__=='__main__':
   ip=input('please input your backup target machine ip:')
   port=input('please input your backup target mysql port:')
   create_backup_base(ip)
   copy_backup2manger(ip, port)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值