提取MySQL binlog中指定表的操作记录

一段 简单的Python脚本,需要本地装了合适版本的mysqlbinlog工具。
支持Python 2.7+



点击(此处)折叠或打开

  1. #_*_ coding:utf-8 _*_

  2. import sys
  3. import os
  4. import io

  5. binlogfile = sys.argv[1]
  6. database_name = sys.argv[2]
  7. table_name = sys.argv[3]

  8. def format_binlog():
  9.     os.system('mysqlbinlog --base64-output=decode-rows -v '+binlogfile+'>'+binlogfile+'.txt')

  10. def pickupbinlog():
  11.     f = io.open(binlogfile+'.txt','r')
  12.     fw = io.open(database_name+'_'+table_name+'.txt','a')
  13.     priv_str = ''
  14.     priv_line = ''
  15.     goal_flag = 0
  16.     for row in f:
  17.         # 处理首行
  18.         if row[0:3] == '###' and priv_str != '###':
  19.             if database_name in row and table_name in row:
  20.                 goal_flag = 1
  21.                 fw.write(priv_line)
  22.                 fw.write(row)
  23.         # 处理末行
  24.         if row[0:3] != '###' and priv_str == '###':
  25.             goal_flag = 0
  26.         # 处理目标操作
  27.         if row[0:3] == '###' and priv_str == '###' and goal_flag == 1:
  28.             fw.write(row)
  29.         priv_str = row[0:3]
  30.         priv_line = row
  31.     f.close()
  32.     fw.close()

  33. if __name__ == '__main__':
  34.     # python2.7 pickupbinlog.py mysql-bin.001051 dbname tablename
  35.     # python3 pickupbinlog.py mysql-bin.001051 dbname tablename
  36.     format_binlog()
  37.     pickupbinlog()


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28998293/viewspace-2139079/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28998293/viewspace-2139079/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值