提取MySQL binlog中指定表的操作記錄


  • #_*_ coding:utf-8 _*_

    import sys
    import os
    import io

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

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

    def pickupbinlog():
    f = io.open(binlogfile+'.txt','r')
    fw = io.open(database_name+'_'+table_name+'.txt','a')
    priv_str = ''
    priv_line = ''
    goal_flag = 0
    for row in f:
    # 處理首行
    if row[0:3] == '###' and priv_str != '###':
    if database_name in row and table_name in row:
    goal_flag = 1
    fw.write(priv_line)
    fw.write(row)
    # 處理末行
    if row[0:3] != '###' and priv_str == '###':
    goal_flag = 0
    # 處理目標操作
    if row[0:3] == '###' and priv_str == '###' and goal_flag == 1:
    fw.write(row)
    priv_str = row[0:3]
    priv_line = row
    f.close()
    fw.close()

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


  • 免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM