1. 准备一台 linux 服务器(以 CentOs 为例)
2. 安装 golang 运行环境
- https://golang.google.cn/dl/ 下载 go1.11.4linux-amx64.tar.gz
- 将下载的二进制包解压至 /usr/local目录
tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz
- 将 /usr/local/go/bin 目录添加至PATH环境变量:
export PATH=$PATH:/usr/local/go/bin
注:其他环境,详见 http://www.runoob.com/go/go-environment.html
==========================================》 至此,恭喜,你总算有了go的运行环境
依赖组件
mkdir -p ~/go/src/github.com/
1) 阿里Canal 服务端部署
0. Master 数据库配置
- binlog 文件格式修改程row模式
- 因为 canal 的原理是将自己伪装成 mysql slave,所以需要需要创建一个slave用户并做相应的配置
(slaveId不能与master数据库现有slave的id重复)
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
针对已有的账户可通过grants查询权限:
show grants for 'canal'
1.下载canal安装包:
2. 将压缩包 canal.deployer-1.1.2.tar.gz 解压至自己用户目录下
tar -zxvf canal.deployer-1.1.2.tar.gz
3. 修改默认实例的配置文件: vim conf/example/instance.properties
4. 按需修改 公共配置文件:vim conf/canal.properties
现象证明,此处 canal.destinations 不配置可行,只要配置了 canal.auto.scan 之后,canal 会自动扫描识别 conf/ 目录下的实例。
5. 启动 canal 服务端 监听数据库对应的表的binlog事件
cd ~/canal.deployer-1.1.2/bin
执行./startup.sh(日志可以在 log 目录下的日志文件查看)
===============================================> 至此,canal服务成功启动。
2) 阿里Canal-go客户端部署
客户端 准备工作
1. protobuf 环境准备
1-1 https://github.com/golang/protobuf 下载 golang protobuf,将下载的文件解压后,并重新命名为 "protobuf"
1-2 cd $GOROOT
1-3 mkdir -p ./github.com/golang
1-4 将 protobuf 目录移到 $GOROOT/github.com/golang 下
2. CanalClient canal-go 工程环境搭建
2-1 cd $GOROOT
2-2 mkdir -p ./github.com/CanalClient
2-3 cd ./github.com/CanalClient
2-4 下载 canal-go (两种方法)
1)从 https://github.com/CanalClient/canal-go 下载 canal-go-master.zip,解压并重命名 canal-go,
将 canal-go 目录放到 $GOROOT/github.com/CanalClient 下
2)cd $GOROOT/github.com/CanalClient ,直接通过 git clone 命令拉取
git clone https://github.com/CanalClient/canal-go.git
有人可能会问,"为什么要指定这么发杂的目录",请看下 canal-go 目录中 samples/main.go 中引用的相对路径就是这样,所以 。。
(当然,你也可以修改)
==========================================》
canal golang环境的客户端已部署完毕,下面可以愉快地运行 /samples/main.go 了
- mkdir -p ~/canal_client
- mv main.go ~/canal_client
- 通过 go build 编译 main.go ,会生成一个 二进制可运行文件 canal_client
- 运行 ./canal_client