安装canal
canal:数据库增量日志解析,canal 通过伪装成mysql的一台从服务器,通过binlog获取数据库日志再进行转发处理
部署准备:
一台centos服务器
Java环境
mysql数据库
mysql配置
mysql需要配置成主服务器,增加server-id,建立数据库用户
修改my.cnf
server-id=1 ## 服务器id,主从同步要用到的
log-bin=mysql-bin ## 开启binlog
binlog_format=row ## 设置binlog模式
binlog-do-db=## 你的数据库名字,多个用逗号分割,可以删除这行
执行SQL语句增加用户
# 使用命令登录:
mysql -u root -p
# 创建用户 用户名:canal 密码:Canal@123456
create user 'canal'@'%' identified by 'Canal@123456';
# 授权 *.*表示所有库
grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by 'Canal@123456';
cd /tmp/canal-deployer
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
tar -zvxf canal.deployer-1.1.5.tar.gz
cd ../
# 移动目录
mv canal-deployer/ /usr/local/
# 进入目录
cd /usr/local/canal-deployer/
部署安装canal(单机部署)
配置项说明
$ tree conf/
conf/
|-- canal.properties (系统根配置文件)
|-- canal_local.properties (instance级别的配置文件,每个instance一份)
|-- example (数据库监听实例目录)
| |-- h2.mv.db
| |-- instance.properties
| `-- meta.dat
|-- logback.xml
|-- metrics
| `-- Canal_instances_tmpl.json
`-- spring
|-- base-instance.xml
|-- default-instance.xml
|-- file-instance.xml
|-- group-instance.xml
|-- memory-instance.xml
`-- tsdb
|-- h2-tsdb.xml
|-- mysql-tsdb.xml
|-- sql
| `-- create_table.sql
`-- sql-map
|-- sqlmap-config.xml
|-- sqlmap_history.xml
`-- sqlmap_snapshot.xml
6 directories, 18 files
我们只需要关注 example下的instance.properties
# position info
canal.instance.master.address=mysql-test:3306 # mysql连接地址
canal.instance.master.journal.name= # mysql binlog 起始文件
canal.instance.master.position= # binlog 的位置
canal.instance.master.timestamp=
canal.instance.master.gtid=
.
.省略内容
.
# username/password
canal.instance.dbUsername=canal # 创建的canal用户
canal.instance.dbPassword=Canal@123456 # canal用户的密码
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
在上面的binlog日志文件配置可不填,启动后 canal将自动获取最后的数据配置,也可以自定义起始位置,然后获取旧数据
启动进程
./bin/startup.sh
./bin/restart.sh
./bin/stop.sh
启动成功后,可以在logs目录找到日志,查看启动状态:
$ tree logs
logs
|-- canal canal主服务日志
| |-- canal.log
| `-- canal_stdout.log
`-- example mysql实例连接日志
|-- example.log
`-- meta.log
2 directories, 4 files
canal监控多个数据库
修改canal.properties, 添加example1
vim conf/canal.properties
canal.destinations = example,example1
复制example为example1,并修改example1中数据库的连接信息
cp -R conf/example conf/example1
chmod -R 777 example1
vim conf/example1/instance.properties
canal.instance.master.address=mysql-test:3306 # mysql连接地址
canal.instance.master.journal.name= # mysql binlog 起始文件
canal.instance.master.position= # binlog 的位置
canal.instance.master.timestamp=
canal.instance.master.gtid=
.
.省略内容
.
# username/password
canal.instance.dbUsername=canal # 创建的canal用户
canal.instance.dbPassword=Canal@123456 # canal用户的密码
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
重启服务
./bin/restart.sh
参考文档:
www.php20.cn
https://www.cnblogs.com/zpan2019/p/13563593.html