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.