前言
通过读取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