设为首页 加入收藏

TOP

基于Python和Xtrbackup的自动化备份与还原实现(七)
2019-08-13 05:35:48 】 浏览:162
Tags:基于 Python Xtrbackup 自动化 备份 还原 实现
,")[1].strip()
                backup_position = backup_position.split(" ")[1].replace("'", "")
                pass
            else:
                continue
        # /usr/local/mysql57_data/mysql8000/log/bin_log/mysql_bin_1300
        binlog_config = get_config_value("log-bin")
        binlog_path = os.path.dirname(binlog_config)
        binlog_files = os.listdir(binlog_path)


        #如果没有找到binlog,忽略binlog的还原
        if not binlog_files:
            exit(1)


        #对binlog文件排序,按顺序遍历binlog,获取binlog的最后的修改时间,与stop_at做对比,判断还原的过程是否需要某个binlogfile
        binlog_files.sort()


        binlog_files_for_restore = []
        # 恢复数据库的指定时间点
        stop_at_time = datetime.datetime.strptime(stop_at, '%Y-%m-%d %H:%M:%S')
        for binlog in binlog_files:
            if (".index" in binlog or "relay" in binlog):
                continue


            #保留最后一个备份中的binlog,以及其后面的binlog,这部分binlog会在还原的时候用到
            if (int(binlog.split(".")[-1]) >= int(backup_position_binlog_file.split(".")[-1])):
                binlog_files_for_restore.append(binlog)



        binlog_file_count = 0
        #第一个文件,从上最后一个差异备份的position位置开始,最后一个文件,需要stop_at到指定的时间
        for binlog in binlog_files_for_restore:
            if not os.path.isdir(binlog):
                #binlog物理文件的最后修改时间
                binlog_file_updatetime = datetime.datetime.strptime(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.stat(binlog_path+"/"+binlog).st_mtime)),'%Y-%m-%d %H:%M:%S')
                #判断binlog的生成时间,是否大于stop_at,对于修改时间大于stop_at的日志,需要全部还原,不需要stop_at指定截止点
                if  stop_at_time > binlog_file_updatetime :
                    if (binlog_file_count < 1):
                        if (len(binlog_files_for_restore) == 1):
                            # 找到差异备份之后的第一个binlog,需要根据差异备份的position,来过来第一个binlog文件
                            restore_commond = '''mysqlbinlog {0}  --skip-gtids=true --start-position={1}  --stop-datetime="{2}" | mysql mysql -h{3} -u{4} -p{5} -P{6}''' \
                                .format(binlog, backup_position, stop_at, host, u

首页 上一页 4 5 6 7 8 9 下一页 尾页 7/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据库包括哪些技术? 下一篇Redis分布式锁实现理解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目