linux 安装 canal 的详细步骤 - 实践
Canal 是阿里巴巴开源的 MySQL 数据库 binlog 的增量订阅&消费组件,在 Linux 系统上安装 Canal 的步骤如下:
一、环境准备
JDK 安装
Canal 依赖 Java 环境,需安装 JDK 8 及以上版本:# 以 OpenJDK 为例 sudo apt update # Ubuntu/Debian sudo apt install openjdk-11-jdk # 或 CentOS/RHEL sudo yum install java-11-openjdk-devel # 验证安装 java -version配置 MySQL
修改 MySQL 配置文件(通常是/etc/mysql/my.cnf或/etc/my.cnf):[mysqld] log-bin=mysql-bin # 开启 binlog binlog-format=ROW # binlog 格式,必须为 ROW server-id=1 # MySQL 实例唯一 ID重启 MySQL 并创建 Canal 专用账号:
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal' ; GRANT SELECT , REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' ; FLUSH PRIVILEGES ;
二、下载并安装 Canal
下载 Canal 发行包
从 Canal GitHub 仓库 下载最新稳定版(例如canal.deployer-1.1.5.tar.gz):wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz tar -zxvf canal.deployer-1.1.5.tar.gz -C /opt/canal/配置 Canal 实例
进入conf目录,复制示例配置并编辑:cd /opt/canal/conf/ cp example instance_name # instance_name 为自定义实例名,如 mysql_test cd instance_name vi instance.properties修改以下配置项:
canal.instance.master.address=127.0.0.1:3306 # MySQL 地址和端口 canal.instance.dbUsername=canal # MySQL 用户名 canal.instance.dbPassword=canal # MySQL 密码 canal.instance.defaultDatabaseName= # 监控的数据库,留空则监控所有 canal.instance.connectionCharset=UTF-8 # 字符集 canal.instance.filter.regex=.*\\..* # 表过滤规则,例如 test\\..* 表示 test 库下的所有表
三、启动 Canal
启动脚本
使用内置脚本启动 Canal 服务:cd /opt/canal/bin ./startup.sh [instance_name] # 可选实例名,不指定则启动所有实例查看日志
检查服务是否正常启动:# 查看主服务日志 cat /opt/canal/logs/canal/canal.log # 查看实例日志 cat /opt/canal/logs/instance_name/instance.log若看到
start successful则表示启动成功。
四、验证安装
客户端测试
使用 Canal 自带的客户端工具测试连接:cd /opt/canal/bin ./canal_client.sh在客户端中输入
show info查看状态。编程验证
通过代码连接 Canal Server,消费 binlog 数据(以 Java 为例):// 添加依赖(Maven) <dependency> <groupId>com.alibaba.otter< /groupId> <artifactId>canal.client< /artifactId> <version>1.1.5< /version> < /dependency> // 代码示例 CanalConnector connector = CanalConnectors.newSingleConnector( new InetSocketAddress("127.0.0.1" , 11111 ) , "instance_name" , "" , "" ) ; connector.connect( ) ; connector.subscribe(".*\\..*" ) ; while (true ) { Message message = connector.get(100 ) ; List< CanalEntry.Entry> entries = message.getEntries( ) ; // 处理 entries... }
五、停止服务
cd /opt/canal/bin
./stop.sh [instance_name] # 可选实例名,不指定则停止所有
常见问题
连接失败
检查 MySQL 配置、用户权限及网络连通性。权限不足
确保 Canal 账号拥有REPLICATION SLAVE和REPLICATION CLIENT权限。内存溢出
编辑bin/startup.sh,调整 JVM 内存参数(如JAVA_OPTS="-Xms256m -Xmx512m")。
通过以上步骤,你可以在 Linux 系统上成功安装并配置 Canal,实现 MySQL binlog 的增量订阅与消费。
浙公网安备 33010602011771号