基于Python和Xtrbackup的自动化备份与还原实现(7)

for current_backup_file in list_restore_backup:
        #解压备份文件
        current_backup_name = current_backup_file.split("|")[2]
        current_backup_fullname = os.path.join(dest_dir, current_backup_name)
        if(start_flag==1):
            full_backup_path = current_backup_fullname
            start_flag = 0
            print("innobackupex --apply-log --redo-only {0}".format(full_backup_path))
        else:
            print("innobackupex --apply-log --redo-only {0} --incremental-dir={1}".format(full_backup_path,current_backup_fullname))
    #apply_log for full backup at last(remove --read-only parameter)
    print("innobackupex --apply-log {0}".format(full_backup_path))


def restore_backup_data():
    print("####################backup current database file###########################")
    datadir_path = get_config_value("datadir")
    print("mv {0} {1}".format(datadir_path,datadir_path+"_"+ datetime.datetime.now().strftime('%Y%m%d%H%M%S')))
    print("mkdir {0}".format(datadir_path))
    print("chown -R mysql.mysql {0}".format(datadir_path))
    print("################restore backup data###################")
    list_restore_backup = get_restorefile_list()
    full_restore_path= dest_dir + list_restore_backup[0].split("|")[-1].replace(".xbstream","")
    print("innobackupex --defaults-file={0} --copy-back --rsync {1}".format(cnf_file,full_restore_path))
    print("chown -R mysql.mysql {0}".format(datadir_path))


def restore_database():
    #解压缩需要还原的备份文件
    last_backup_file_path = uncompress_backup_file()
    #对备份文件apply-log
    apply_log_for_backup()
    #停止mysql服务
    stop_mysql_service()
    #恢复备份
    restore_backup_data()
    #启动MySQL服务
    start_mysql_service()
    #从binlog中恢复数据
    restore_database_binlog(last_backup_file_path)

if __name__ == '__main__':
    restore_database()

最后不要忘了清理战场:
1,解压缩的备份文件还留在指定的路径中,
2,还原之前备份的data文件,以data_日期命名的文件,也没有清理

挤时间写出来的,粗略测了一下没有问题,以实现功能为主,没有进一步封装,后续会以此为基础进行优化。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8e81d74611b96e8bac99544080a10328.html