FAQ
查找关于RDI的常见问题的答案
RDI 使用哪种许可证?
您必须为RDI与Redis Enterprise购买商业许可证。这包括为暂存数据库提供两个额外的Redis Enterprise分片(主分片和副本分片)。
RDI 如何跟踪源数据库中的数据变化?
RDI 使用针对每个支持的源数据库特定的机制:
- Oracle: RDI 使用
logminer
来解析 Oracle 的binary log
和archive logs
。这会在数据库视图中列出 RDI 可以查询的任何更改。 - MySQL/MariaDB: RDI 使用
binary log replication
来获取所有提交。 - PostgreSQL: RDI 使用
pgoutput
插件。 - SQL Server: RDI 使用 CDC 机制。
RDI 能处理多少数据?
RDI 使用处理单元的概念。每个处理单元使用 1 个 CPU 核心,假设每条记录的大小约为 1KB,则可以每秒处理约 10,000 条记录。这个吞吐量可能会根据列的数量、数据转换的数量以及网络速度而略有变化。通常,一个处理单元足以让 RDI 处理来自关系数据库的流量。
RDI 可以与任何 Redis 数据库一起工作吗?
编号。RDI 设计并测试仅适用于 Redis Enterprise。暂存数据库只能使用 6.4 或更高版本。目标 Redis 数据库可以是任何版本,并且可以是 Active-Active 复制设置或自动分层数据库的副本。
RDI 能否自动跟踪源数据库模式的变化?
如果您没有配置RDI来捕获模式中的特定表集,那么当添加新表时,它将检测到这些新表。同样,RDI将捕获新表列和列名的更改,除非您为特定列集配置了它。请记住,目标数据库中的Redis键将更改以反映新的或重命名的表和列。
当日志显示RDI内存不足时,我应该担心吗?
有时Debezium日志会包含一条消息,说RDI内存不足。这不是错误,而是一条信息性消息,说明RDI正在对Debezium应用背压。更多信息请参见架构指南中的背压机制。
当RDI无法写入目标Redis数据库时会发生什么?
RDI 将持续尝试将更改写入目标,并在必要时尝试重新连接。当目标断开连接时,RDI 将继续从源数据库捕获更改事件,并将其添加到暂存数据库中的流中。这一过程将持续到暂存数据库存储新事件的空间不足为止。当 RDI 检测到这种情况时,它会应用“背压”机制,减少从源数据库捕获数据的频率,从而降低完全耗尽空间的风险。源数据库用于记录更改的系统可以保留更改数据至少几个小时,RDI 可以在目标连接恢复或暂存数据库有更多可用空间时立即赶上这些更改。
如果数据损坏或无效,RDI会做什么?
收集器以结构化的JSON格式向RDI报告数据。如果JSON数据的结构无效或转换作业中存在致命错误,则RDI无法转换数据。当这种情况发生时,RDI将原始数据存储在“死信队列”中,并附带一条消息说明被拒绝的原因。死信队列作为RDI暂存数据库中的上限流存储。您可以使用Redis Insight或CLI中的redis-di get-rejected
命令查看其内容。