项目开发 - 常用技巧

数据同步

需要控制数据同步的方向,找到基准数据,禁止双向同步。

一般情况下,如果做查询搜索功能,使用ES来模糊搜索,但是数据是存放在数据库MySQL里的,所以说我们需要把MySQL中的数据和ES进行同步,保证数据一致(以MySQL为主)。

MySQL= > ES(单向)

首次安装完ES, 把MySQL数据全量同步到ES里,写一个单次脚本

4种方式,全量同步〈首次)+ 增量同步(新数据):

  1. 定时任务,比如1分钟1次,找到MySQL中过去几分钟内(至少是定时周期的2倍)发生改变的数据,然后更新到ES。
    • 优点:简单易懂、占用资源少、不用引入第三方中间件
    • 缺点:有时间差
    • 应用场景:数据短时间内不同步影响不大、或者数据几乎不发生修改
  2. 双写:写数据的时候,必须也去写ES; 更新删除数据库同理。〈事务,建议先保证MySQL写成功,如果ES写失败了,可以通过定时任务 + 日志 + 告警进行检测和修复(补偿))
  3. 用 Logstash 数据同步管道(一般要配合kafka消息队列 + beats采集器)
  4. Canal 监听 MySQL Binlog,实时同步