MySQL 擅长事务处理,Elasticsearch 擅长全文检索和复杂搜索。很多系统会把 MySQL 作为权威数据源,再把搜索需要的字段整理成文档写入 Elasticsearch。
这样做之后,麻烦会集中在以下环节:
- 第一次上线时,MySQL 里的存量数据怎么导入?
- MySQL 后续发生新增、修改和删除,怎样持续更新 ES?
- 同步任务重复消费、乱序或者中断时,怎样避免旧数据覆盖新数据?
- 索引结构调整或数据不一致时,怎样重建并平滑切换?
一套可用的同步方案通常要同时考虑 全量同步、增量同步、失败恢复和数据校验。只解决其中一个环节,很容易在上线或故障恢复时卡住。
2023/8/7大约 23 分钟

