Example #1
0
 def test_with_delayed_statement(self):
     filename = 'testing/data/mysql-bin.delayed-event'
     parser = YBinlogP(filename)
     events = list(parser)
     assert_equal(len(events), 38)
     # Event has a timestamp way in the past relative to FDE
     assert_equal(events[30].time,
                  datetime.datetime(2013, 07, 30, 10, 2, 37))
Example #2
0
def main(filename):
    dirname = os.path.dirname(filename)
    parser = YBinlogP(filename, always_update=True)
    while True:
        for i, event in enumerate(parser):
            print event
            if event.event_type == "ROTATE_EVENT":
                next_file = os.path.join(dirname, event.data.file_name)
                parser.close()
                parser = YBinlogP(next_file, always_update=True)
        else:
            print "Got to end at %r" % (parser.tell(), )
            break
    parser.close()
Example #3
0
def main(filename):
    dirname = os.path.dirname(filename)
    parser = YBinlogP(filename, always_update=True)
    while True:
        for i, event in enumerate(parser):
            print event
            if event.event_type == "ROTATE_EVENT":
                next_file = os.path.join(dirname, event.data.file_name)
                parser.close()
                parser = YBinlogP(next_file, always_update=True)
        else:
            print "Got to end at %r" % (parser.tell(),)
            break
    parser.close()
Example #4
0
    def test_default_path(self):
        filename = 'testing/data/mysql-bin.default-path'
        parser = YBinlogP(filename)
        events = list(parser)
        assert_equal(len(events), 38)

        last_event = events[-1]
        assert_equal(last_event.event_type, EventType.rotate)
        assert_equal(last_event.data.file_name, 'mysql-bin.000008')
        assert_equal(last_event.data.next_position, 4)

        last_commit = events[-2]
        assert_equal(last_commit.event_type, EventType.xid)

        last_query = events[-3]
        assert_equal(last_query.event_type, EventType.query)
        assert_equal(last_query.data.db_name, 'foobar')
        assert_equal(last_query.data.statement,
                     'INSERT INTO test2(x) VALUES("Bananas r good")')
from ybinlogp import YBinlogP
import sys

bp = YBinlogP(sys.argv[1], always_update=True)
while True:
    for i, event in enumerate(bp):
        if event.event_type == "ROTATE_EVENT":
            next_file = event.data.file_name
            bp.clean_up()
            bp = YBinlogP(next_file, always_update=True)
            break
        else:
            print event.event_type
    else:
        print "Got to end at %r" % (bp.tell(), )
        break
bp.clean_up()
Example #6
0
#-*-coding:utf8-*-
import sys
sys.path.insert(0, "../ybinlogp/")

import os
import time
from datetime import datetime
import re
from collections import defaultdict
import redis
from ybinlogp import YBinlogP
from config import REDIS_HOST, REDIS_PORT, EXPIRE
redis_conn = redis.Redis(REDIS_HOST, REDIS_PORT)

pattern = re.compile(r'\(([0-9]+),([0-9]+),([0-9]+),([0-9]+)\)')
bp = YBinlogP(sys.argv[1], always_update=True)
g_current_file = sys.argv[1]
buffer_dict = defaultdict(list)

def get_next_filename(current_file):
    #mysql-bin.000016
    prefix, num = current_file.split(".")
    next_num = "%06i" %(int(num) + 1)
    return "%s.%s" %(prefix, next_num)

def next_file_exists(filename):
    return os.path.exists(filename)

def flush_cache_to_redis():
    for k, v in buffer_dict.items():
        if not redis_conn.exists(k):