mysql增量备份脚本(python3)

#!/usr/bin/python3
import time
import mysql.connector
import os
import zipfile

binlog_path = '/var/lib/mysql'
backup_path = '/root'
time_YMD = time.strftime("/%Y/%m/%d", time.localtime())
time_MHS = time.strftime("_%H-%M-%S", time.localtime())

def mysql_conn():
    mydb = mysql.connector.connect(
     host="127.0.0.1",
     user="root",
     passwd="cbst789",
     port="3360"
    )
    return mydb

def binlog_zip(inpath,outpath):
    db_file = zipfile.ZipFile(outpath,'w',zipfile.ZIP_DEFLATED)
    db_file.write(inpath)
    db_file.close()

def get_binlog(sql):
    mydb = mysql_conn()
    mycursor = mydb.cursor()
    mycursor.execute(sql)
    for i in mycursor:
       binlog = i
    mycursor.close()
    return binlog

def flush_binlog(sql):
    mydb = mysql_conn()
    mycursor = mydb.cursor()
    mycursor.execute(sql)
    mycursor.close()

def start_backup():
    binlog_file = get_binlog('show master status')
    in_name = binlog_path + '/' + binlog_file[0]
    out_name = backup_path + time_YMD + '/binlog' + time_MHS + '.zip'
    if not os.path.isdir(backup_path + time_YMD):
       os.makedirs(backup_path + time_YMD)
    binlog_zip(in_name,out_name)
    if os.path.isfile(out_name):
       flush_binlog('flush logs')
       new_binlog = get_binlog('show master status')
       print ('备份成功,路径为 {0} 最新binlog日志为 {1}'.format(out_name,new_binlog[0]))
       #os.remove(in_name)    #删除原binlog文件
    else:
       print ('备份失败')

start_backup()

 

MySQL备份脚本的编写可以分为以下几个步骤: 1. 确定备份的方式和时间 备份方式一般有全量备份和增量备份两种方式,全量备份会备份所有的数据,而增量备份只备份最近一次备份之后的数据变更。同时需要确定备份的时间,可以选择每天的固定时间进行备份,也可以选择每周、每月等周期进行备份。 2. 编写备份脚本 备份脚本可以使用Bash或者Python脚本语言编写,以下是一个Bash备份脚本的示例: ``` #!/bin/bash # MySQL备份脚本 # 备份文件存放路径 backup_path=/data/backup/mysql # 备份文件名前缀 backup_prefix=mysql_backup # MySQL登录信息 mysql_user=root mysql_password=123456 mysql_host=localhost mysql_port=3306 # 备份文件名 backup_file=$backup_prefix$(date +%Y%m%d%H%M%S).sql.gz # 创建备份文件存放目录 mkdir -p $backup_path # 使用 mysqldump 命令备份数据库 mysqldump -u$mysql_user -p$mysql_password -h$mysql_host -P$mysql_port --all-databases | gzip > $backup_path/$backup_file # 删除过期备份文件,保留最近7天的备份 find $backup_path -name "$backup_prefix*" -mtime +7 -exec rm {} \; ``` 3. 配置定时任务 将备份脚本保存到服务器中,然后通过配置定时任务来实现定期备份。可以使用crontab命令来配置定时任务,例如下面的示例是每天凌晨2点执行备份脚本: ``` 0 2 * * * /bin/bash /path/to/backup_script.sh ``` 以上是MySQL备份脚本的简单编写方法,可以根据实际业务需求进行适当修改。同时需要注意备份文件的存储安全问题,建议将备份文件存储在独立的服务器或者存储设备中,以防数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值