上海做网站的知名企业,设计制作个人网站,自己怎么做企业网站,成都住建局官网智慧工地文章目录 0. 环境介绍0. 前置步骤1. 安装Kibana和Elasticsearch2. 安装Canal和Canal Adapter2.1 修改数据库配置2.1.1 修改配置2.1.2 验证mysql binlog配置2.1.3 查看日志文件2.1.4 用JDBC代码插入数据库 2.2 安装Canal Server2.3 安装Canal Adapter修改两处配置文件配置文件取… 文章目录 0. 环境介绍0. 前置步骤1. 安装Kibana和Elasticsearch2. 安装Canal和Canal Adapter2.1 修改数据库配置2.1.1 修改配置2.1.2 验证mysql binlog配置2.1.3 查看日志文件2.1.4 用JDBC代码插入数据库 2.2 安装Canal Server2.3 安装Canal Adapter修改两处配置文件配置文件取消注释一定要自己手动删除#不要用快捷键。否则***会导致文件格式出问题*** 参考 ClientAdapter: Canal的Adapter配置项目 Sync ESCanal的Adapter中ES同步的配置项 使用 Docker 部署 canal 服务 docker canal-server canal-adapter mysql Canal基于Docker同步mysql数据到elasticsearch Canal部署过程中的错误 0. 环境介绍
Canal 1.1.4Canal Adapter 1.1.4Kibana: 6.8.8ElasticSearch: 6.4.3
由于Canal 1.1.4只能适配 ElasticSearch: 6.4.3因此使用了上述的版本。 Kibana选择 6.8.8是因为他可以用中文但我没有配置成功。此外Kibana的6.8可以和ES6.4结合。其他情况下需要版本一一对应
关于Kibana和ES的版本对应以及中文设置问题可以参考
Kibana 汉化相关配置 i18n 及版本问题Kibana将语言设置为中文Elasticsearch和Kibana版本对应关系
0. 前置步骤
dokcer服务网络准备 参考让ELK在同一个docker网络下通过名字直接访问, 首先用docker设置一个网络以后所有相关的容器都放到这里。
docker network create mynetworkES的内存准备 命令行输入
sysctl -w vm.max_map_count2621441. 安装Kibana和Elasticsearch
参考我之前的博客Ubuntu服务器ELK部署与实践。 注不同的版本对应的配置方案也需要修改我的修改有
Kibana修改 原配置7.8.0
server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: [http://elasticsearch:9200]
# 操作界面语言设置为中文
i18n.locale: zh-CN现配置6.8.8
server.port: 5601
server.host: 0.0.0.0
server.basePath: /kibana # 这个是用来配置nginx访问用的
# server.host: 127.0.0.1
# 注意看这里的参数变了
elasticsearch.url: http://elasticsearch:9200
# 操作界面语言设置为中文
# 6.4不支持
# i18n.locale: zh-CN此外由于版本变更相关的API也发生了变更请多多留意 Create index API 7.8.0 Create index 6.4
数据来自Kaggle的新闻因此按照数据字段名称新建如下字段
PUT news_2
{mappings: {_doc: {properties: {id: {type: text,index: true},title: {type: text,analyzer: ik_max_word},_desc: {type: text,analyzer: ik_max_word},image: {type: text,analyzer: ik_max_word},url: {type: text,analyzer: ik_max_word},news_source: {type: text,analyzer: ik_max_word},_date: {type: date}}}}
}2. 安装Canal和Canal Adapter
Canal是用来做数据库slave的他的原理就是读取数据库的日志文件实现实时同步相比logstash的cron表达式可以更加实时。
2.1 修改数据库配置
2.1.1 修改配置
首先新建数据库的docker镜像
docker run -p 3306:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORDroot \
-d mysql:5.7接下来去/data/mysql/conf路径下新建my.cnf文件输入以下内容
[mysqld]
#binlog setting
log-binmysql-bin # 开启logbin
binlog-formatROW # binlog日志格式
server-id1 # mysql主从备份serverId,canal中不能与此相同docker restart重启mysql
2.1.2 验证mysql binlog配置
新建新闻表
CREATE SCHEMA MyTest;use MyTest;create table News
(
id INT(11),
title VARCHAR(2125),
desc VARCHAR(2125),
image VARCHAR(2125),
url VARCHAR(2125),
source VARCHAR(2125),
date Date
)DEFAULT CHARSETutf8;检查该新闻表的状态
mysql -u root -p // mysql登录
show databases;
use MyTest; // 开启数据库
show variables like log_%;
show variables like binlog_format;
show master status; // binlog日志文件 mysql-bin.000001
reset master; // 重置日志以下截图来自https://blog.csdn.net/qq_32836247/article/details/116561732展示了应有的配置结果
2.1.3 查看日志文件
cd /var/lib/mysql // 进入日志文件目录
mysqlbinlog -vv mysql-bin.000001 // row格式查看日志2.1.4 用JDBC代码插入数据库
这个就自己实现吧。不用全部插入因为Adapter要基于新的日志和ES同步。
2.2 安装Canal Server
首先安装canal-server复制配置文件到外面
# 启动docker
docker pull canal/canal-server:v1.1.4
docker run --name canal-server -id canal/canal-server:v1.1.4# 复制配置文件
docker cp canal-server:/home/admin/canal-server/conf/ /data/canal_/canal
docker cp canal-server:/home/admin/canal-server/logs/ /data/canal_/canal# 删除并重新启动
docker stop canal-server docker rm canal-serverdocker run --name canal -p 11111:11111 \
-v /data/canal_/canal/conf/example/instance.properties:/home/admin/canal-server/conf/example/instance.properties \
-v /data/canal_/canal/conf/canal.properties:/home/admin/canal-server/conf/canal.properties \
-v /data/canal_/canal/logs/:/home/admin/canal-server/logs/ \
--network mynetwork \ # 这个是我“让ELK在同一个docker网络下通过名字直接访问”博客中新建的网络以后所有127.0.0.1都写成docker的name就可以
-d canal/canal-server:v1.1.4修改Server配置文件example/instance.properties 注意canal.properties中的destination要和后续的Canal Adapter保持一致
验证服务是否启动成功
docker exec -it [c_id]/bin/bash
cd canal-server/bin/
./start.sh // 启动服务
cd canal-server/logs/example/
tail -100f example.log // 查看日志 2.3 安装Canal Adapter
# 启动docker
docker pull slpcat/canal-adapter:v1.1.4
docker run --name canal-adapter -id slpcat/canal-adapter:v1.1.4# 复制配置文件
docker cp canal-adapter:/opt/canal-adapter/conf /data/canal_/canal-dapter
docker cp canal-adapter:/opt/canal-adapter/logs /data/canal_/canal-dapter# 删除并重新启动
docker stop canal-adapter docker rm canal-adapterdocker run --name canal-adapte -p 8081:8081 \
-v /data/canal_/canal-dapter/conf:/opt/canal-adapter/conf \
-v /data/canal_/canal-dapter/logs:/opt/canal-adapter/logs \
--network mynetwork \
-d slpcat/canal-adapter:v1.1.4修改两处配置文件
配置文件取消注释一定要自己手动删除#不要用快捷键。否则会导致文件格式出问题 配置文件详解 ClientAdapter: Canal的Adapter配置项目 application.ymapplication.yml Sync ESCanal的Adapter中ES同步的配置项 user.yml 修改配置文件application.yml。 name logger就是在发生数据修改的时候直接实时更新到log中如下图
修改完上述配置可以看到name为es的canalAdapters被启动了。因此要去es文件夹下修改注意以下字段的配置。目前只是能够运行起来至于业务实际应用可能还有待验证。