canal 安装教程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: canal 安装教程

什么是canal?

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

基于日志增量订阅和消费的业务包括

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理

当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

canal通过伪装成mysql的一台从服务器,通过binlog获取数据库日志再进行转发处理

部署准备

准备一台centos服务器

准备一台mysql服务器(也可以是一起的)

安装java```bash yum list java-1.8* yum install java-1.8.0-openjdk* -y

mysql需要配置成主服务器,增加server-id,建立数据库用户等  
修改my.cnf   
```bash
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

本文只先说明单机部署canal

配置项说明:

sh-4.4# 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
sh-4.4#

我们只需要关注 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.instance.dbPassword=123456
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==

在上面的binlog日志文件配置可不填,启动后 canal将自动获取最后的数据配置,也可以自定义起始位置,然后获取旧数据

找到项目中的 /bin/start.sh文件,执行即可守护进程启动:

./bin/startup.sh 
./bin/restart.sh 
./bin/stop.sh

启动成功后,可以在logs目录找到日志,查看启动状态:

sh-4.4# tree logs
logs
|-- canal canal主服务日志
|   |-- canal.log  
|   `-- canal_stdout.log
`-- example  mysql实例连接日志
    |-- example.log
    `-- meta.log
2 directories, 4 files
sh-4.4#

go客户端连接

通过引入一个小小的canal 客户端,即可连接数据,具体教程可查看:

https://github.com/withlin/canal-go

运行截图:

image.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
canal 关系型数据库 MySQL
Canal服务搭建
Canal服务搭建
1161 1
Canal服务搭建
|
6月前
|
canal 监控 关系型数据库
Canal使用和安装总结
Canal使用和安装总结
303 2
|
8月前
|
canal SQL 关系型数据库
Canal入门
Canal入门
220 1
|
8月前
|
NoSQL 关系型数据库 MySQL
mongoDb的的下载安装使用
mongoDb的的下载安装使用
53 0
|
8月前
|
Java iOS开发 MacOS
Elasticsearch 6.5源码编译最新版
Elasticsearch 6.5源码编译最新版
48 0
Elasticsearch 6.5源码编译最新版
|
8月前
|
前端开发 Java iOS开发
elasticsearch8.1源码编译笔记
elasticsearch8.1源码编译笔记
149 0
|
8月前
|
存储 关系型数据库 MySQL
mysql5.7安装教程图文详解
mysql5.7安装教程图文详解
188 0
|
消息中间件 存储 Kafka
(四)kafka从入门到精通之安装教程
Kafka是一个高性能、低延迟、分布式的分布式数据库,可以在分布式环境中实现数据的实时同步和分发。Zookeeper是一种开源的分布式数据存储系统,它可以在分布式环境中存储和管理数据库中的数据。它的主要作用是实现数据的实时同步和分发,可以用于实现分布式数据库、分布式文件系统、分布式日志系统等。Zookeeper的设计目标是高可用性、高性能、低延迟,它支持多种客户端协议,包括TCP和HTTP,可以方便地与其他分布式系统进行集成。
136 0
|
关系型数据库 MySQL 数据安全/隐私保护
mysq安装教程
mysq安装教程
148 0
|
canal SQL 缓存
Canal1.1.6安装部署
Canal1.1.6安装部署
381 0