Debezium kafka elasticsearch 配置

使用debezium + kafka + kafka connect,使用debezium来读取binlog,并通过kafka connect将读取的内容放入kafka topic中。应用再消费这个kafka队列,并把消费的信息写入Elasticsearch。这样可以Mysql数据库中表的行列的变化就可以同步写入Elasticsearch之中。

Debezium是一个CDC(change data capture)系统。所起的角色如下图。 可以安装配置Debezium去监控数据库。然后应用就可以消费每个行级别的改变。 只有已提交的更改才是可见的,不用担心事务(transaction)或者更改被回滚(roll back)。

1.先安装docker
docker安装 2.安装zookeeper 通过docker, 命令如下:
docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:0.9
3.docker安装kafka:
docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:0.9
4.安装mysql :
docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.9
启动mysql客户端
docker run -it --rm --name mysqlterm --link mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
把$符号的参数换成具体的参数即可进入mysql的客户端。

kafka下载后解压 启动命令 1. bin/zookeeper-server-start.sh config/zookeeper.properties 2. bin/kafka-server-start.sh config/server.properties 3. bin/connect-distributed.sh config/connect-distributed.properties 启动kafka connect

创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
列出所有topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
发送消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
消费消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning


docker 启动mysql
docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.8
复制代码

elasticsearch 增加模板 使用的版本为4.2.1 下载地址参考 download.elastic.co/elasticsear…

elasticsearch外网IP无法访问题
1. vim config/elasticsearch.yml
2.增加:network.host: 0.0.0.0
3.重启ok
若报问题
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
     ulimit -n 65535
     参加官网文档链接(https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-system-settings.html#limits.conf)
复制代码

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 解决办法:切换root账户 vim /etc/sysctl.conf 增加一行 vm.max_map_count=655360 接着执行 sysctl -p

curl -XPUT http://localhost:9200/_template/dbcart_template_0 -d ' { "template": "dbcart*", "order": 0, "mappings": { "default": { "_source": { "enabled": true } }, "type": { "properties":{"orderNumber":{"index":"not_analyzed","type":"string"},"quantity":{"index":"not_analyzed","type":"string"},"productId":{"index":"not_analyzed","type":"string"}} } } }'

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值