关于远程 mongodb 数据同步到本地 Elasticsearch 问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nleg
V2EX    MongoDB

关于远程 mongodb 数据同步到本地 Elasticsearch 问题

  •  
  •   nleg 2024-01-28 22:49:47 +08:00 3147 次点击
    这是一个创建于 619 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为 mongo 对搜索不太友好,我想搭建 ES 方便搜索,但是专门买个服务器又太贵了。。

    我想问一下大佬们,有没有什么方案能够每次开机都同步远程 mongodb 数据库到本地的 ES 中。。

    这样我就能实现在本地搜索了。
    8 条回复    2024-01-30 21:58:32 +08:00
    nleg
        1
    nleg  
    OP
       2024-01-28 23:07:59 +08:00
    Monstache 能实现吗?
    Mithril
        2
    Mithril  
       2024-01-29 03:02:34 +08:00
    MongoDB 有 Change Stream ,你可以理解为 bin log 。实际上是一部分的 oplog 。

    他有个 token ,你可以拿到从这个 token 以后的所有数据库变更。

    但实际上是基于 oplog 的,你如果太长时间没同步,或者那个 oplog 设置很少,操作太多的话可能就给顶掉了。如果你数据的变更不太多,或者你可以大部分时间实时同步下来,那就没问题。

    也有很多方案是基于全量扫描然后自己找变更的,你如果数据量不太大倒还行,数据量大了这么搞相当于增加了额外的负担。

    或者你数据库本身设计的很好,每个记录都有变更时间,那你每次只刷上次变更以后的就行,比刷那个 change stream 还要靠谱一些。只是删除需要额外处理,比如并不真的删除数据,而是给个 flag ,或者移到另一个 collection 里,那用这个方法倒也能同步了。
    nleg
        3
    nleg  
    OP
       2024-01-29 09:50:05 +08:00
    @Mithril Monstache 好像就是基于 oplog 的,我现在的数据量不多可能就几十万,增量一天估计也就 10 万左右,最高可能达到千万级以上,按照你这么说,我是不是可以设置一个 flag 同步完设置为 true 下次只取为 false 的同步?还是你有更好的建议?,感谢!
    Mithril
        4
    Mithril  
       2024-01-29 09:59:37 +08:00
    @nleg 个人意见,如果你想在数据库内设置一个字段用来控制到 ES 的同步,那么这个字段最好不要每次同步完就改,不然这些都是额外的 IO ,毫无意义。
    特别是当你 ES 的索引有问题,你需要恢复状态或者全量同步的时候,你这么搞就完全做不了了。

    你这数据量如果不涉及删除的话,只要增加个 update datetime 字段就行。如果修改也不要,那就 create datetime 就够了。
    每次启动的时候,ES 里面找个最大的 datetime ,然后从 mongodb 里面找所有比他大的 document ,分批拉回来就行。

    这样你不管差多少数据都能同步回来,控制好批量查询和插入的速度就行了。也不用在乎什么 oplog 或者 change stream 。
    lanfangzi
        5
    lanfangzi  
       2024-01-29 13:48:32 +08:00
    debezium
    kestrelBright
        6
    kestrelBright  
       2024-01-29 13:56:26 +08:00
    flink cdc
    wdmcode
        7
    wdmcode  
       2024-01-29 15:58:59 +08:00
    flink cdc +1
    nleg
        8
    nleg  
    OP
       2024-01-30 21:58:32 +08:00
    @Mithril 感谢你 我尝试使用你的方案
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2828 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 13:33 PVG 21:33 LAX 06:33 JFK 09:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86