环境准备
搭建这套方案前,请确认以下基础环境已就绪:
- 操作系统:CentOS release 6.5 (Final)
- MySQL 版本:10.0.33-MariaDB-wsrep
- JDK 版本:1.8(Canal 和 Adapter 强依赖此版本,否则无法启动)
- ElasticSearch 版本:6.8.0
- Canal 版本:1.1.3
- Zookeeper
技术架构概览
整个链路的核心逻辑如下:
- 开启 MySQL 的 binary log 日志记录,并将模式修改为
ROW。 - Canal Server 模拟 MySQL Slave,获取 Master 的 binlog 信息。
- Canal Server 将解析后的 binlog 推送给 Canal Adapter。
- 采用多节点部署提升可用性,Adapter 最终将数据同步至 ES 集群。
MySQL 配置
首先需要在主库开启 binlog 并指定格式。编辑 my.cnf 文件,添加或修改以下内容:
log-bin=mysql-bin
binlog-format=ROW
server_id=1 # 配置 mysql replication 需要定义,不能和 canal 的 slaveId 重复
Canal 的原理是模拟自己为 MySQL Slave,因此必须赋予其相应的复制权限。执行以下 SQL 创建用户并授权:
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
Elasticsearch 安装与部署
下载安装包
访问 Elasticsearch 官网下载对应版本。本次教程选用 6.8.0 版本。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.0.tar.gz
新增系统用户
出于安全考虑,ES 不能使用 root 用户启动。我们需要创建一个专用用户:
# 新建用户
adduser es
# 设置密码
passwd es
# 切换用户
su es
将安装包移动到工作目录:
elasticsearch-6.8.0.tar.gz /home/es/elasticsearch


