项目开发 - 常用技巧
数据同步
需要控制数据同步的方向,找到基准数据,禁止双向同步。
一般情况下,如果做查询搜索功能,使用ES来模糊搜索,但是数据是存放在数据库MySQL里的,所以说我们需要把MySQL中的数据和ES进行同步,保证数据一致(以MySQL为主)。
MySQL= > ES(单向)
首次安装完ES, 把MySQL数据全量同步到ES里,写一个单次脚本
4种方式,全量同步〈首次)+ 增量同步(新数据):
- 定时任务,比如1分钟1次,找到MySQL中过去几分钟内(至少是定时周期的2倍)发生改变的数据,然后更新到ES。
- 优点:简单易懂、占用资源少、不用引入第三方中间件
- 缺点:有时间差
- 应用场景:数据短时间内不同步影响不大、或者数据几乎不发生修改
- 双写:写数据的时候,必须也去写ES; 更新删除数据库同理。〈事务,建议先保证MySQL写成功,如果ES写失败了,可以通过定时任务 + 日志 + 告警进行检测和修复(补偿))
- 用 Logstash 数据同步管道(一般要配合kafka消息队列 + beats采集器)
- Canal 监听 MySQL Binlog,实时同步