当使用Canal配合Golang时,可以编写一个简单的应用程序来监听MySQL数据库的变更,并将变更信息打印出来。以下是一个简单的示例:
package main
import (
"fmt"
"github.com/siddontang/go-mysql/canal"
"log"
)
func main() {
cfg := canal.NewDefaultConfig()
cfg.Addr = "127.0.0.1:3306" // MySQL服务器地址和端口
cfg.User = "root" // MySQL用户名
cfg.Password = "password" // MySQL密码
c, err := canal.NewCanal(cfg)
if err != nil {
log.Fatalf("Failed to create Canal instance: %v", err)
}
// 监听所有表的变更事件
c.SetEventHandler(&MyEventHandler{})
err = c.Run()
if err != nil {
log.Fatalf("Failed to start Canal: %v", err)
}
}
type MyEventHandler struct {
canal.DummyEventHandler
}
func (h *MyEventHandler) OnRow(e *canal.RowsEvent) error {
fmt.Printf("Table: %s, Action: %s, Rows: %+v\n", e.Table.Name, e.Action, e.Rows)
return nil
}
以上代码使用github.com/siddontang/go-mysql/canal库连接到MySQL数据库,并注册了一个自定义的事件处理器MyEventHandler。当有数据变更时,会调用OnRow()方法打印相应的表名、操作类型和行数据。
注意:在运行此示例之前,请根据实际情况修改MySQL服务器地址、用户名和密码,并确保已安装相关依赖库。
内容由零声教学AI助手提供,问题来源于学员提问




