V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
JCZ2MkKb5S8ZX9pq
V2EX  ›  MongoDB

请教一个 mongodb 的小白问题 复制集绕了我半天结果发现不是一码事儿

  •  
  •   JCZ2MkKb5S8ZX9pq · 2018-09-27 18:32:00 +08:00 · 3191 次点击
    这是一个创建于 2252 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状

    • 现在家里有一台 mac 的本本丢着跑爬虫,数据入 mongodb。
    • 偶尔要出门给客户延时点数据分析的结果,或者去客户那边实时导点东西。现在是直接电脑带去的。
    • 但这样电脑带出去的时候爬虫就停了。
    • 不想买服务器,太贵。

    需求

    • 刚好想换本本了,等于有两台 mbp。
    • 有没有办法,一台在家跑爬虫,一台出门演示。
    • 出门演示的数据库可以稍微滞后一点,但希望回家之后能同步。
    • 除了手动 dump 再拷过去,有啥其它更新外带机上数据库的方法嘛?

    自动化省事点的,请高手指教下~

    4 条回复    2018-10-16 17:52:23 +08:00
    akalxs
        1
    akalxs  
       2018-10-16 15:05:43 +08:00
    复制集。

    复制集最少需要三个个实例,通过 oplog 拉取复制。
    所以你两台电脑,家里爬虫用的那台部署两个实例,跑业务的部署一个,形成一个复制集。

    家里的两个实例随便一个指定为 primary,提供写操作。剩下两个为 secondary。
    你跑业务的 mbp 一入家中的网,会自动拉取数据,你带出去后也不影响家里的读写。
    JCZ2MkKb5S8ZX9pq
        2
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-10-16 15:13:59 +08:00
    @akalxs 如果

    机器 A 为 Primary,同时机器 A 上运行一个 Arbiter。
    这台机器主要爬取数据。
    机器 B 不在线时,这台机器运行复制集中的 2 个(2/3),应该没有问题。

    但是,
    机器 B 作为 Secondary。
    那么机器 B 带出去的时候,3 个复制集只有 1 个在机器 B 上,会不会导致 mongo 运行不起来?
    akalxs
        3
    akalxs  
       2018-10-16 15:32:49 +08:00   ❤️ 1
    @JCZ2MkKb5S8ZX9pq
    不会,你跑业务的时我相信不会对 B 的那台进行写入,所以只要你开启读写分离 slaveok,那你带出去演示的时候读是没问题的。
    JCZ2MkKb5S8ZX9pq
        4
    JCZ2MkKb5S8ZX9pq  
    OP
       2018-10-16 17:52:23 +08:00
    @akalxs OK,那我试试。感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3195 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:37 · PVG 08:37 · LAX 16:37 · JFK 19:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.