项目作者: liipx

项目描述 :
MySQL binary log analyzer in Golang.
高级语言: Go
项目地址: git://github.com/liipx/go-mysql-binlog.git
创建时间: 2018-09-16T11:24:35Z
项目社区:https://github.com/liipx/go-mysql-binlog

开源协议:Apache License 2.0

下载


go-mysql-binlog

License
Go Report Card

MySQL binary log analyzer in Golang.

中文说明

Example

  1. func main() {
  2. decoder, err := binlog.NewBinFileDecoder("./testdata/mysql-bin.000004")
  3. if err != nil {
  4. panic(err)
  5. return
  6. }
  7. num := 0
  8. maxEventCount := 0
  9. err = decoder.WalkEvent(func(event *binlog.BinEvent) (isContinue bool, err error) {
  10. fmt.Printf("Got %s: \n\t", binlog.EventType2Str[event.Header.EventType])
  11. fmt.Println(event.Header)
  12. // show details if you need
  13. // if event.Body != nil {
  14. // pretty.Println(event.Body)
  15. // }
  16. //
  17. fmt.Println(strings.Repeat("=", 100))
  18. count ++
  19. return maxEventCount > num || maxEventCount == 0, nil
  20. }, nil)
  21. if err != nil {
  22. panic(err)
  23. }
  24. }

Output:

  1. Got FORMAT_DESCRIPTION_EVENT:
  2. Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:119, LogPos:123, Flag:0x1
  3. ====================================================================================================
  4. Got PREVIOUS_GTIDS_EVENT:
  5. Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:31, LogPos:154, Flag:0x80
  6. ====================================================================================================
  7. Got ANONYMOUS_GTID_EVENT:
  8. Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:65, LogPos:219, Flag:0x0
  9. ====================================================================================================
  10. Got QUERY_EVENT:
  11. Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:79, LogPos:298, Flag:0x8
  12. ====================================================================================================
  13. Got TABLE_MAP_EVENT:
  14. Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:64, LogPos:362, Flag:0x0
  15. ====================================================================================================
  16. Got WRITE_ROWS_EVENTv2:
  17. Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:197, LogPos:559, Flag:0x0
  18. ====================================================================================================
  19. Got XID_EVENT:
  20. Time:2018-09-22 18:24:30 +0800 CST, ServerID:1537611870, EventSize:31, LogPos:590, Flag:0x0
  21. ====================================================================================================

Progress

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

TODO

  1. Support all mysql binlog event.
  2. Get binlog event through network connections.
  3. Multi threads binlog dumper.
  4. Flash back base on row format binary log.
  5. more.