背景
业务架构图
根据 微服务重构:Mysql+DTS+Kafka+ElasticSearch解决跨表检索难题所描述,我们使用了Es解决微服务重构中遇到的Mysql库拆分问题,业务架构图如下所示:
Kakfa消息堆积导致的数据一致性问题
在下午14:15左右,收到用户反馈,短暂时间内,出现了业务数据一致性问题
具体表现是:用户提交了一个页面操作,但是在查询接口里,没有返回最新的操作结果
具体校验是:通过问题反馈,我们直接对比DB和Es的具体索引,确实发现es的索引数据没有更新到
binLog/redoLog/undoLog对比
log类型 | 日志类型 | 作用 | 数据类型 | 用法 | 支持级别 |
redo log | 物理日志 - 在xx数据页做了xx修改” |
称为重做日志,当MySQL服务器意外崩溃或者宕机后,保证已经提交的事务持久化到磁盘中(持久性) | redo log 数据主要分为两类: - 内存中的日志缓冲(redo log buffer) - 磁盘上的日志文件(redo logfile) |
- 崩溃恢复 | Innodb存储引擎 |
undo log | 物理日志 - 在xx数据页做了xx修改” |
事务可以进行回滚从而保证事务操作原子性则是通过undo log 来保证的 | undo log 数据主要分两类: - insert undo log - update undo log |
- 事务回滚 - MVCC |
Innodb存储引擎 |
bin log | 逻辑日 |