安装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';

下载canal: https://github.com/alibaba/canal/releases

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

posted @ 2022-07-25 15:07  海中明月  阅读(763)  评论(0编辑  收藏  举报