#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:guozhen.zhang
 
 
import MySQLdb
import time
import os
 
# 创建备份binlog目录
project_path = '/data/binlog_back'  # 定义备份日志的目录
binlog_file = "/data/binlog_back/binlog_file"  # 定义获取日志的存放文件
last_binlog_file = "/data/binlog_back/last_binlog_file"  # 获取binlog日志的最后一个日志文件
dir_time = time.strftime('%Y%m%d-%H%M', time.localtime(time.time()))  # 返回当前时间的年月日作为目录名称
isExists = os.path.exists(project_path + '/' + dir_time)  # 判断该目录是否存在
if not isExists:
    os.makedirs(project_path + '/' + dir_time)
    print(project_path + '/' + dir_time + "目录创建成功")

# 定义执行备份脚本
def back_binlog():
    # 建立MySQL连接
    conn = MySQLdb.connect(host='192.168.1.20', port=3306, user='root', passwd='123a456b')
    # 刷新master的二进制日志
    cursor = conn.cursor()
    cursor.execute("flush logs;")
    # 获取binlog的存放路径
    cursor1 = conn.cursor()
    cursor1.execute("show variables like  'log_bin_basename'")
    row1 = cursor1.fetchone()[1]
    # 获取master  binlog日志的最后一个日志文件
    cmd = 'ls %s* |grep -v index|tail -1 > %s' % (row1, last_binlog_file)
    os.popen(cmd).read()
    # 获取master前一天的二进制日志
    cmd = 'find %s*  -mtime 0    -exec ls {} \;|grep -v  `cat %s` |grep -v index> %s' % (
        row1, last_binlog_file, binlog_file)
    os.popen(cmd)
    f = open(binlog_file, mode="r")
    lines = f.readlines()
    for line in lines:
        fname = line.strip()
        cmd = 'cp ' + fname + ' ' + (project_path + '/' + dir_time)
        os.system(cmd)
    f.close()
    # 关闭数据库连接
    conn.close()

# 备份二进制文件存在就执行备份,否则退出
if os.path.exists(binlog_file):
    back_binlog()
    print("backup success!")
else:
    print("binlog file not found")
    exit()

MySQL按天备份二进制日志的更多相关文章

  1. mysql数据安全之利用二进制日志mysqlbinlog备份数据

    mysql数据安全之利用二进制日志mysqlbinlog备份数据 简介:如何利用二进制日志来备份数据 什么是二进制日志: 二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是, ...

  2. mysql数据安全之利用二进制日志mysqlbinlog恢复数据

    mysql数据安全之利用二进制日志mysqlbinlog恢复数据 简介:如何利用二进制日志来恢复数据 查看二进制日志文件的内容报错: [root@xdclass-public log_bin]# my ...

  3. mysql之 innobackupex备份+binlog日志的完全恢复【转】

    前言: MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点. 备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. ...

  4. Linux数据库:MYSQL启用和查看二进制日志

    在/etc/my.cnf文件中[mysqld]下加上: server-id = 1 (在整个Mysql集群中保证唯一) log-bin = binlog  log-bin-index = binlog ...

  5. MySQL复制(二)--基于二进制日志文件(binlog)配置复制

    基础环境:   主库 从库 服务器IP地址 192.168.10.11 192.168.10.12 版本 5.7.24 5.7.24 已存在的数据库 mysql> show databases; ...

  6. MySQL 5.7开启二进制日志注意事项

    最近才开始将部分MySQL 5.6升级到MySQL 5.7, 在开启MySQL的二进制日志时,发现MySQL 5.7 与MySQL 5.6已有细微区别.如果在my.cnf配置文件中,只设置了全局系统变 ...

  7. MySQL知识总结(四)二进制日志

    1 定义 bin-log日志记录了所有的DDL和DML的语句,但不包括查询的语句,语句以事件的方式保存,描述了数据的更改过程,此日志对发生灾难时数据恢复起到了极为重要的作用. 2 开启 mysql默认 ...

  8. mysql之 innobackupex备份+binlog日志的完全恢复(命令行执行模式)

    前言:MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点.备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. 1. ...

  9. MySQL完全备份脚本:数据+二进制日志+备份日志

    一. 脚本须知 1.mysql数据文件和二进制日志文件最好保存在不同的分区或存储设备上 2.备份完成后注意修改数据的权限以防止泄露重要信息,哪些主机哪些用户可以用来恢复 3. 查看导出的2进制日志文件 ...

随机推荐

  1. JavaScript调试技巧之console.log()

    与alert()函数类似,console.log()也可以接受变量并将其与别的字符串进行拼接: 代码如下: //Use variable var name = "Bob"; con ...

  2. 加密算法大全图解 :密码体系,对称加密算法,非对称加密算法,消息摘要, Base64,数字签名,RSA,DES,MD5,AES,SHA,ElGamal,

    1. 加密算法大全: ***************************************************************************************** ...

  3. CSS 弹性盒子模型

    CSS 弹性盒子模型 https://www.w3.org/TR/2016/CR-css-flexbox-1-20160526/ CSS Flexible Box Layout Module Leve ...

  4. how to get window width in javascript

    how to get window width in javascript how to get window width in js How to Detect Screen Resolution ...

  5. USDN稳定币应用区块链旅游业

    比特币是区块链1.0时代的标志性产品,稳定币则是区块链2.0时代的标志性产品.在稳定币鼻祖USDT爆出"超发"新闻后曾引发市场的动荡,之后新兴稳定币如春笋般涌现.据不完全同济,目前 ...

  6. 「NGK每日快讯」12.1日NGK公链第28期官方快讯!

  7. ⑧SpringCloud 实战:引入 Actuator监控+整合监控页面

    Actuator是什么? Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用.这个模块是 ...

  8. Recycle 只显示一行BUG

    学习Recycle 两天了,照着网上的Adapter写了2个Demo,结果测试的时候发现,第一个Demo 显示.点击都正常,第二个Demo的Adapter合第一个一模一样,仅仅是类名不同,结果显示的时 ...

  9. JDK源码阅读-ByteBuffer

    本文转载自JDK源码阅读-ByteBuffer 导语 Buffer是Java NIO中对于缓冲区的封装.在Java BIO中,所有的读写API,都是直接使用byte数组作为缓冲区的,简单直接.但是在J ...

  10. Vue框架简介及简单使用

    目录 一.前端框架介绍 二.vue框架简介 三.vue使用初体验 1. vue如何在页面中引入 2. 插值表达式 3. 文本指令 4. 方法指令(事件指令) 5. 属性指令 四.js数据类型补充 1. ...