【笔记】通过读取Mysql的binlog实现监测数据库变动

前言

通过读取Mysql的binlog实现监测数据库中数据增删改的变动

源代码

cfg.Addr:配置Mysql服务的IP地址和端口号
cfg.User:配置用户名
cfg.Password:配置密码,如果没有密码可以不配置
cfg.Dump.TableDB:配置需要监测的数据库,如果不配置表示监测所有数据库
cfg.Dump.Tables:配置需要监测的数据表,如果不配置表示监测当前数据库的所有数据表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package main

import (
"github.com/go-mysql-org/go-mysql/canal"
"github.com/siddontang/go-log/log"
)

type MyEventHandler struct {
canal.DummyEventHandler
}

func (h *MyEventHandler) OnRow(e *canal.RowsEvent) error {
log.Infof("%s %v\n", e.Action, e.Rows)
return nil
}

func (h *MyEventHandler) String() string {
return "MyEventHandler"
}

func main() {
cfg := canal.NewDefaultConfig()
cfg.Addr = "127.0.0.1:3306"
cfg.User = "root"
cfg.Password = "root"
cfg.Dump.TableDB = "数据库名"
cfg.Dump.Tables = []string{"数据表名"}

c, err := canal.NewCanal(cfg)
if err != nil {
log.Fatal(err)
}

c.SetEventHandler(&MyEventHandler{})

c.Run()
}

完成

参考文献

go-mysql-org/go-mysql