MySQL 擅长事务处理,Elasticsearch 擅长全文检索和复杂搜索。很多系统会把 MySQL 作为权威数据源,再把搜索需要的字段整理成文档写入 Elasticsearch。
第一次上线,需要把 MySQL 的存量数据导入 ES;上线后,新增、修改和删除还要持续同步。同步任务一旦中断或重试,又会遇到漏数据、重复消费、旧值覆盖新值等问题。索引结构调整时,还得在重建数据的同时维持搜索服务。
因此,MySQL 同步 ES 要一起考虑 全量同步、增量同步、失败恢复和数据校验。
先明确同步目标
假设 MySQL 已经存了 1000 万条数据,搜索功能刚上线时,需要先读取这些存量数据,写出一份完整的 ES 索引。这一步是 全量同步,索引重建和数据修复时也会用到。
2023/8/7大约 26 分钟
