MySQL binary log analyzer in Golang.
func main() {
decoder, err := binlog.NewBinFileDecoder("./testdata/mysql-bin.000004")
if err != nil {
panic(err)
return
}
num := 0
maxEventCount := 0
err = decoder.WalkEvent(func(event *binlog.BinEvent) (isContinue bool, err error) {
fmt.Printf("Got %s: \n\t", binlog.EventType2Str[event.Header.EventType])
fmt.Println(event.Header)
// show details if you need
// if event.Body != nil {
// pretty.Println(event.Body)
// }
//
fmt.Println(strings.Repeat("=", 100))
count ++
return maxEventCount > num || maxEventCount == 0, nil
}, nil)
if err != nil {
panic(err)
}
}
Got FORMAT_DESCRIPTION_EVENT:
Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:119, LogPos:123, Flag:0x1
====================================================================================================
Got PREVIOUS_GTIDS_EVENT:
Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:31, LogPos:154, Flag:0x80
====================================================================================================
Got ANONYMOUS_GTID_EVENT:
Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:65, LogPos:219, Flag:0x0
====================================================================================================
Got QUERY_EVENT:
Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:79, LogPos:298, Flag:0x8
====================================================================================================
Got TABLE_MAP_EVENT:
Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:64, LogPos:362, Flag:0x0
====================================================================================================
Got WRITE_ROWS_EVENTv2:
Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:197, LogPos:559, Flag:0x0
====================================================================================================
Got XID_EVENT:
Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:31, LogPos:590, Flag:0x0
====================================================================================================
EventType | Supported |
---|---|
UNKNOWN_EVENT | ✔ |
START_EVENT_V3 | |
QUERY_EVENT | ✔ |
STOP_EVENT | |
ROTATE_EVENT | ✔ |
INTVAR_EVENT | ✔ |
LOAD_EVENT | |
SLAVE_EVENT | |
CREATE_FILE_EVENT | |
APPEND_BLOCK_EVENT | |
EXEC_LOAD_EVENT | |
DELETE_FILE_EVENT | |
NEW_LOAD_EVENT | |
RAND_EVENT | |
USER_VAR_EVENT | |
FORMAT_DESCRIPTION_EVENT | ✔ |
XID_EVENT | ✔ |
BEGIN_LOAD_QUERY_EVENT | |
EXECUTE_LOAD_QUERY_EVENT | |
TABLE_MAP_EVENT | ✔ |
WRITE_ROWS_EVENTv0 | |
UPDATE_ROWS_EVENTv0 | |
DELETE_ROWS_EVENTv0 | |
WRITE_ROWS_EVENTv1 | |
UPDATE_ROWS_EVENTv1 | |
DELETE_ROWS_EVENTv1 | |
INCIDENT_EVENT | |
HEARTBEAT_EVENT | |
IGNORABLE_EVENT | |
ROWS_QUERY_EVENT | |
WRITE_ROWS_EVENTv2 | |
UPDATE_ROWS_EVENTv2 | |
DELETE_ROWS_EVENTv2 | |
GTID_EVENT | ✔ |
ANONYMOUS_GTID_EVENT | ✔ |
PREVIOUS_GTIDS_EVENT | ✔ |
- Support all mysql binlog event.
- Get binlog event through network connections.
- Multi threads binlog dumper.
- Flash back base on row format binary log.
- more.