当前位置: 首页 > news >正文

maxwell 输出消息到 redis

文章目录

  • 1、maxwell 输出消息到 redis
    • 1.1、启动一个Maxwell容器,它会连接到指定的MySQL数据库,捕获变更事件,并将这些事件以Redis发布/订阅的形式发送到指定的Redis服务器
    • 1.2、在已运行的 Redis 容器中执行 Redis 命令行界面(CLI)工具
      • 解决方法
      • 示例
      • 完整命令示例
      • 注意事项
    • 1.3、tingshu_album 数据库中 新增数据
    • 1.4、tingshu_album 数据库中 更新数据
    • 1.5、tingshu_album 数据库中 删除数据
    • 1.6、总结

1、maxwell 输出消息到 redis

在这里插入图片描述
Reference - Maxwell’s Daemon:https://maxwells-daemon.io/config/
redis-producer:https://maxwells-daemon.io/config/#redis-producer
在这里插入图片描述

1.1、启动一个Maxwell容器,它会连接到指定的MySQL数据库,捕获变更事件,并将这些事件以Redis发布/订阅的形式发送到指定的Redis服务器

docker run -it --rm zendesk/maxwell bin/maxwell --user=$MYSQL_USERNAME \--password=$MYSQL_PASSWORD --host=$MYSQL_HOST --producer=stdout
docker run -it --rm zendesk/maxwell bin/maxwell --user=maxwell \--password=maxwell --host=192.168.74.148 --port=3306 --producer=redis \--redis_host=192.168.74.148 --redis_port=6379 --redis_auth=123456 --redis_type=pubsub --redis_key=maxwell

您提供的命令是一个Docker命令,用于运行Zendesk Maxwell这个容器化应用程序。Maxwell是一个变更数据捕获(CDC)工具,用于从MySQL数据库捕获变更事件并将它们发布到其他系统,如Redis、Kafka等。下面是对该命令的详细解释:

docker run -it --rm zendesk/maxwell bin/maxwell \--user=maxwell \--password=maxwell \--host=192.168.74.148 \--port=3306 \--producer=redis \--redis_host=192.168.74.148 \--redis_port=6379 \--redis_auth=123456 \--redis_type=pubsub \--redis_key=maxwell
  • docker run: 这是Docker用来创建和启动一个新的容器实例的命令。
  • -it: 这两个选项告诉Docker在前台运行容器,并且保持交互模式打开,使得可以在容器内部执行命令。
  • –rm: 这个选项指示Docker在容器退出后自动删除容器,有助于保持系统清洁。
  • zendesk/maxwell: 这是指定要运行的Docker镜像的名称,即Zendesk提供的Maxwell镜像。
  • bin/maxwell: 这是Maxwell可执行文件的路径,告诉Docker运行这个特定的二进制文件。
  • –user=maxwell: 指定连接到MySQL数据库的用户名。
  • –password=maxwell: 指定连接到MySQL数据库的密码。
  • –host=192.168.74.148: 指定MySQL数据库服务器的IP地址。
  • –port=3306: 指定MySQL数据库服务器的端口号。
  • –producer=redis: 指定Maxwell应该将变更事件发布到Redis。
  • –redishost=192.168.74.148: 指定Redis服务器的IP地址。
  • –redisport=6379: 指定Redis服务器的端口号。
  • –redisauth=123456: 指定连接到Redis服务器的认证密码。
  • –redistype=pubsub: 指定Redis的发布/订阅模式作为消息传递机制。Publish/Subscribe,即发布/订阅模式。
  • –rediskey=maxwell: 指定在Redis中使用的键名,Maxwell将变更事件发布到这个键对应的频道。
    执行这个命令会启动一个Maxwell容器,它会连接到指定的MySQL数据库,捕获变更事件,并将这些事件以Redis发布/订阅的形式发送到指定的Redis服务器。
[root@localhost ~]# docker run -it --rm zendesk/maxwell bin/maxwell \
>     --user=maxwell \
>     --password=maxwell \
>     --host=192.168.74.148 \
>     --port=3306 \
>     --producer=redis \
>     --redis_host=192.168.74.148 \
>     --redis_port=6379 \
>     --redis_auth=123456 \
>     --redis_type=pubsub \
>     --redis_key=maxwell
2024-09-19 10:13:40 INFO  Maxwell - Starting Maxwell. maxMemory: 1031798784 bufferMemoryUsage: 0.25
2024-09-19 10:13:40 INFO  Maxwell - Maxwell v1.41.2 is booting (MaxwellRedisProducer), starting at Position[BinlogPosition[spzxbinlog.000003:6061], lastHeartbeat=0]
2024-09-19 10:13:40 INFO  MysqlSavedSchema - Restoring schema id 1 (last modified at Position[BinlogPosition[spzxbinlog.000003:156], lastHeartbeat=0])
2024-09-19 10:13:41 INFO  BinlogConnectorReplicator - Setting initial binlog pos to: spzxbinlog.000003:6061
2024-09-19 10:13:41 INFO  BinaryLogClient - Connected to 192.168.74.148:3306 at spzxbinlog.000003/6061 (sid:6379, cid:43)
2024-09-19 10:13:41 INFO  BinlogConnectorReplicator - Binlog connected.

1.2、在已运行的 Redis 容器中执行 Redis 命令行界面(CLI)工具

[root@localhost ~]# docker exec -it spzx-redis redis-cli
127.0.0.1:6379> 
[root@localhost ~]# docker exec -it spzx-redis redis-cli
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
(error) NOAUTH Authentication required.

当你尝试在 Redis 容器中使用 SUBSCRIBE 命令时收到 (error) NOAUTH Authentication required. 错误,这意味着 Redis 服务器需要认证才能执行命令。Redis 从版本 3.0 开始支持密码认证功能。

解决方法

要在 Redis 中执行需要认证的操作,你需要先使用 AUTH 命令提供正确的密码。以下是具体的步骤:

  1. 连接到 Redis:
    使用 docker exec -it spzx-redis redis-cli 连接到 Redis CLI。

  2. 提供认证:
    使用 AUTH 命令提供 Redis 服务器所需的密码。假设密码是 yourpassword,命令如下:

    AUTH yourpassword
    
  3. 执行订阅操作:
    成功认证后,你可以继续执行订阅命令:

    SUBSCRIBE maxwell
    

示例

假设 Redis 的密码是 maxwell,你可以按照以下步骤操作:

  1. 连接到 Redis CLI:

    docker exec -it spzx-redis redis-cli
    
  2. 提供认证:

    AUTH maxwell
    
  3. 执行订阅操作:

    SUBSCRIBE maxwell
    

完整命令示例

你可以在一次命令中完成认证和订阅:

docker exec -it spzx-redis redis-cli -n 0 << 'EOF'
AUTH maxwell
SUBSCRIBE maxwell
EOF

或者,你也可以在 Redis CLI 中逐条输入命令:

docker exec -it spzx-redis redis-cli
127.0.0.1:6379> AUTH maxwell
127.0.0.1:6379> SUBSCRIBE maxwell

注意事项

  • 密码安全:

    • 确保使用强密码,并且不要在命令行中明文显示密码。可以考虑使用环境变量或其他方式传递密码。
  • Redis 配置文件:

    • 确保 Redis 的配置文件(redis.conf)中设置了 requirepass 选项,并指定了正确的密码。

通过上述步骤,你应该能够成功地通过认证并执行 Redis 的订阅命令。如果仍然遇到问题,请检查 Redis 的配置和密码是否正确。

[root@localhost ~]# docker exec -it spzx-redis redis-cli
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "maxwell"
3) (integer) 1

1.3、tingshu_album 数据库中 新增数据

在这里插入图片描述

[root@localhost ~]# docker exec -it spzx-redis redis-cli
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "maxwell"
3) (integer) 1
1) "message"
2) "maxwell"
3) "{\"database\":\"tingshu_album\",\"table\":\"base_category1\",\"type\":\"insert\",\"ts\":1726741946,\"xid\":6478,\"commit\":true,\"data\":{\"id\":16,\"name\":\"maxwell\",\"order_num\":0,\"create_time\":\"2024-09-19 10:32:26\",\"update_time\":\"2024-09-19 10:32:26\",\"is_deleted\":0}}"

在这里插入图片描述

1.4、tingshu_album 数据库中 更新数据

在这里插入图片描述

[root@localhost ~]# docker exec -it spzx-redis redis-cli
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "maxwell"
3) (integer) 1
1) "message"
2) "maxwell"
3) "{\"database\":\"tingshu_album\",\"table\":\"base_category1\",\"type\":\"insert\",\"ts\":1726741946,\"xid\":6478,\"commit\":true,\"data\":{\"id\":16,\"name\":\"maxwell\",\"order_num\":0,\"create_time\":\"2024-09-19 10:32:26\",\"update_time\":\"2024-09-19 10:32:26\",\"is_deleted\":0}}"
1) "message"
2) "maxwell"
3) "{\"database\":\"tingshu_album\",\"table\":\"base_category1\",\"type\":\"update\",\"ts\":1726742253,\"xid\":7197,\"commit\":true,\"data\":{\"id\":16,\"name\":\"plus\",\"order_num\":0,\"create_time\":\"2024-09-19 10:32:26\",\"update_time\":\"2024-09-19 10:37:33\",\"is_deleted\":0},\"old\":{\"name\":\"maxwell\",\"update_time\":\"2024-09-19 10:32:26\"}}"

在这里插入图片描述

1.5、tingshu_album 数据库中 删除数据

在这里插入图片描述

[root@localhost ~]# docker exec -it spzx-redis redis-cli
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> SUBSCRIBE maxwell
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "maxwell"
3) (integer) 1
1) "message"
2) "maxwell"
3) "{\"database\":\"tingshu_album\",\"table\":\"base_category1\",\"type\":\"insert\",\"ts\":1726741946,\"xid\":6478,\"commit\":true,\"data\":{\"id\":16,\"name\":\"maxwell\",\"order_num\":0,\"create_time\":\"2024-09-19 10:32:26\",\"update_time\":\"2024-09-19 10:32:26\",\"is_deleted\":0}}"
1) "message"
2) "maxwell"
3) "{\"database\":\"tingshu_album\",\"table\":\"base_category1\",\"type\":\"update\",\"ts\":1726742253,\"xid\":7197,\"commit\":true,\"data\":{\"id\":16,\"name\":\"plus\",\"order_num\":0,\"create_time\":\"2024-09-19 10:32:26\",\"update_time\":\"2024-09-19 10:37:33\",\"is_deleted\":0},\"old\":{\"name\":\"maxwell\",\"update_time\":\"2024-09-19 10:32:26\"}}"
1) "message"
2) "maxwell"
3) "{\"database\":\"tingshu_album\",\"table\":\"base_category1\",\"type\":\"delete\",\"ts\":1726742435,\"xid\":7622,\"commit\":true,\"data\":{\"id\":16,\"name\":\"plus\",\"order_num\":0,\"create_time\":\"2024-09-19 10:32:26\",\"update_time\":\"2024-09-19 10:37:33\",\"is_deleted\":0}}"

在这里插入图片描述

1.6、总结

在这里插入图片描述

http://www.lryc.cn/news/441265.html

相关文章:

  • infoNCE损失和互信息的关系
  • Java学习路线指南
  • 在SpringCloud中实现服务间链路追踪
  • [数据集][目标检测]红外微小目标无人机直升机飞机飞鸟检测数据集VOC+YOLO格式7559张4类别
  • TS Vue项目中使用TypeScript
  • 打工人、设计师必备的AI抠图工具
  • MyBatis中一对多关系的两种处理方法
  • 视频美颜SDK与直播美颜工具的实现原理与优化方案
  • Linux 安装JDK8和卸载
  • javascript 浏览器打印不同页面设置方向,横向纵向打印
  • Maven 的多种打jar包方式详细介绍、区别及使用教程——附使用命令
  • 计算机毕业设计 基于协同过滤算法的个性化音乐推荐系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • Arthas 全攻略:让调试变得简单
  • icpc江西:L. campus(dij最短路)
  • 日志收集工具 Fluentd vs Fluent Bit 的区别
  • PostgreSQL技术内幕11:PostgreSQL事务原理解析-MVCC
  • Java-面向对象编程(基础部分)
  • SMS over IP原理
  • Linux中使用Docker容器构建Tomcat容器完整教程
  • 【机器学习】7 ——k近邻算法
  • 2024.09.09 校招 实习 内推 面经
  • 浅谈Linux中的环回设备
  • 聚焦汽车智能化与电动化,亚洲领先的汽车工业技术博览会 2025年11月与您相约 AUTO TECH 华南展
  • (史上最全)线程池
  • 【ShuQiHere】 支持向量机(SVM)详解:从理论到实践,这一篇就够了
  • log4j2线程级动态日志级别
  • 百度Android IM SDK组件能力建设及应用
  • CSS-Grid布局详解
  • Give azure openai an encyclopedia of information
  • Nginx越界读取缓存漏洞(CVE-2017-7529)