MySQL开启日志
对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下
创建用户及授权
授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant
CREATE USER canal IDENTIFIED BY 'canal';GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;FLUSH PRIVILEGES;
安装RocketMQ
Java
安装
```shell cd /opt/tools/ tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/soft/
vi /etc/profile
在末尾加入如下三行配置
注意:请不要换行,请不要换行,请不要换行,请不要换行,请不要换行,请不要换行
export JAVA_HOME=/opt/soft/jdk1.8.0_211 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
保存修改后,退出
让配置生效
source /etc/profile
验证
java -version
出现以下内容说明安装成功
java version “1.8.0_211” Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
<a name="IBDXi"></a>
### Maven
<a name="pXayE"></a>
#### 安装
```shell
cd /opt/soft/
tar -zxvf apache-maven-3.8.1-bin.tar.gz
vi /etc/profile
## 在末尾加入如下三行配置
## 注意:请不要换行,请不要换行,请不要换行,请不要换行,请不要换行,请不要换行
export PATH=$PATH:/opt/soft/maven/apache-maven-3.8.1/bin
## 保存修改后,退出
## 让配置生效
source /etc/profile
## 验证
mvn --version
## 出现以下内容说明安装成功
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /opt/soft/maven/apache-maven-3.8.1
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: /usr/java/java8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
阿里云镜像
修改 /opt/soft/maven/apache-maven-3.8.1/conf/settings.xml文件
# jar包存放位置
<localRepository>/opt/soft/maven/apache-maven-3.8.1/repos</localRepository>
# 阿里镜像
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
单机环境搭建
项目构建
tar -zxvf rocketmq-rocketmq-all-4.9.0.tar.gz
cd rocketmq-all-4.9.0/
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/rocketmq-4.9.0/rocketmq-4.9.0/bin
启动 NameServer
cd /opt/soft/rocketmq/rocketmq-rocketmq-all-4.9.0/distribution/target/rocketmq-4.9.0/rocketmq-4.9.0
nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log
启动 Broker
nohup sh bin/mqbroker -n localhost:9876 &
tail -f ~/logs/rocketmqlogs/broker.log
测试发送和接收消息
生产者发送消息
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
消费者消费消息
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
关闭服务
sh mqshutdown broker
sh mqshutdown namesrv
安装RocketMQ-Console
编译
tar -zxvf rocketmq-externals-rocketmq-console-1.0.0.tar.gz
cd /opt/soft/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console
# 编译
mvn clean package -Dmaven.test.skip=true
启动
nohup java -jar target/rocketmq-console-ng-1.0.0.jar &
tail -200f nohup.out
没有报错,就启动成功了
访问地址:http://121.37.152.227:8080/,这个地址根据真实地址自己改
配置
更改中文
配置Broker
Canal RocketMQ快速开始
下载
在https://github.com/alibaba/canal/releases下载
解压
mkdir /opt/soft/canal
# 上传下载好的canal
cd /opt/soft/canal
tar -zxvf canal.deployer-1.1.5.tar.gz
配置canal
mkdir /opt/soft/canal/conf
vi canal.properties
修改配置
# 服务模式:tcp(默认), kafka, rocketMQ, rabbitMQ
canal.serverMode = rocketMQ
# 是否格式化为JSON
canal.mq.flatMessage = true
# rocketmq 生产者组
rocketmq.producer.group = kxt_db
# rocketmq namesrv 地址
rocketmq.namesrv.addr = 192.168.0.20:9876
# rocketmq 失败重试次数
rocketmq.retry.times.when.send.failed = 0
# rocketmq vip通道是否开启
rocketmq.vip.channel.enabled = false
# rocketmq tag
rocketmq.tag = kxt_db
配置instance
mkdir /opt/soft/canal/conf
vi example/instance.properties
修改配置
canal.instance.master.address=192.168.0.20:3306
# binlog 名称
canal.instance.master.journal.name=
# binlog 位置
canal.instance.master.position=
# username/password
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
# table regex 所有的表,这里可以优化为自己需要的表,具体配置,参考:https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart
canal.instance.filter.regex=.*\\..*
# mq config
#canal.mq.topic=kxt_one_number_xian
# dynamic topic route by schema or table regex
# 将kxt_one_number_xian_zb库下的所有表日志,发送到kxt_one_number_xian_zb topic
# 将kxt_one_number_xian_0802库下的所有表日志,发送到kxt_one_number_xian_0802 topic
canal.mq.dynamicTopic=kxt_one_number_xian_zb:kxt_one_number_xian_zb,kxt_one_number_xian_0802:kxt_one_number_xian_0802
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#canal.mq.dynamicTopicPartitionNum=test.*:4,mycanal:6
启动canal服务
sh bin/startup.sh
关闭服务
sh bin/stop.sh
创建MongoDb库
创建库
创建用户
canal-data
Canal-data 是一个数据迁移工具,依赖阿里巴巴开源项目canal,实现了MySQL数据迁移到其他数据库,如:MySQL、MongoDb、Elasticsearch、Redis等。
代码结构
— canal-data
——— badge-service
——— canal-data-autoconfigure
——— canal-data-core
——— canal-data-db
- canal-data-core:共用类
- canal-data-autoconfigure:自动配置
- canal-data-db:数据迁移(如果只是数据迁移,请关注此项目)
- badge-service:徽章服务
canal-data-db
配置
server:
port: 7788
spring:
application:
name: canal-data-db
data:
mongodb:
host: 192.168.0.204
database: badgeData
password: KXTsoft2010
username: badge
port: 27017
canal:
server-mode: rocketMQ
mq:
topic: kxt_one_number_xian
rocketmq:
namesrv:
addr: 192.168.0.20:9876
tag: kxt_db
customer:
group: kxt_db
启动canal-data-db
nohup java -jar canal-data-db-1.0.0.jar &
测试数据同步
添加工单,看是否可以同步到MongoDb,如果可以,就配置成功
badge-service
配置
badge-service 是徽章服务,需要配合一号通产品使用,所以需要nacos进行配置和服务管理,本地配置文件几乎不用改。主要是要配置nacos
nacos配置
创建 badge-mongodb-dev.yaml 配置文件
spring:
data:
mongodb:
host: 192.168.0.204
database: badgeData
password: zhangbo
username: zhangbo
port: 27017
启动badge-service
nohup java -jar badge-service-1.0.0.jar &
常见问题
- canal 启动 Could not find first log file name in binary log index file
遇到这个问题时,先停止canal,然后删除example文件夹除了instance.properties文件的其他所有文件,然后重启canal



