Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个实例上设置Neo4j复制_Neo4j_Neo4j Ha - Fatal编程技术网

在两个实例上设置Neo4j复制

在两个实例上设置Neo4j复制,neo4j,neo4j-ha,Neo4j,Neo4j Ha,我计划为neo4j配置某种类型的2节点复制,类似于mysql复制。由于我的资源有限,我不想为两个以上的云计算实例付费。另外,我对neo4j数据库的实时或近实时拷贝感到满意。因此,我能想到的方法是: 借助仲裁器实例在两个计算节点上配置HA。在第一个节点上设置一个neo4j实例(主节点),在第二个节点上设置另一个neo4j实例(从节点)+另一个neo4j实例(仲裁器,仅用于仲裁,无数据记录)实例 或 使用neo4j备份工具为在线备份设置cron。大约每小时设置一次增量备份。不确定它可能给prod服务

我计划为neo4j配置某种类型的2节点复制类似于mysql复制。由于我的资源有限,我不想为两个以上的云计算实例付费。另外,我对neo4j数据库的实时或近实时拷贝感到满意。因此,我能想到的方法是:

  • 借助仲裁器实例在两个计算节点上配置HA。在第一个节点上设置一个neo4j实例(主节点),在第二个节点上设置另一个neo4j实例(从节点)+另一个neo4j实例(仲裁器,仅用于仲裁,无数据记录)实例
  • 使用neo4j备份工具为在线备份设置cron。大约每小时设置一次增量备份。不确定它可能给prod服务器带来的负载,计划对此进行测试 我更倾向于第一种方法,因为我可以获得更实时的数据库拷贝(我还可以通过即时故障切换实现HA/负载平衡,但这不是现在的优先事项)

    请让我知道

    • 两种方法中哪一种更好
    • 如果有其他方法达到相同或相同的效果
    • 如果上述任何一种方法不适用或存在缺陷

    我对Neo4j有点陌生,所以请原谅我的无知。谢谢

    。您已经提到了可用的解决方案

    TL;博士我喜欢第一种选择

    簇 通常,建议的布局为3个节点(2个从节点+1个主节点)。 但是您的布局-2个节点(1个主节点+1个从节点+1个仲裁节点)也是可行的。特别是如果一台服务器可以处理您的工作负载

    好东西:

    • 几乎是“实时”复制品
    • 利用资源处理更大工作量的可能性
    • 更好的可用性
    注:

    • 如果在主节点上有10mb/秒的写负载,那么在从节点上也会应用相同的负载。这应该不会影响从机的读取(除了写入负载非常大)
    • 维护成本高于单实例安装。您应该计划如何处理集群升级、配置更新和插件更新
    • 分支数据。在集群环境中,当两个节点具有不同的数据时,可能会出现“大脑分裂”的情况,并且应该决定应该保留哪些数据。Neo4j处理此类情况非常好。但您应该记住,在非常罕见的情况下可能会发生小数据丢失
    备份 好东西:

    • 简单。只需从数据库进行备份
    • 一致性检查。进行备份时,该工具将运行一致性检查,以验证数据库是否未损坏。备份不可能破坏实时数据库。如果有任何问题-将通过备份实用程序的日志通知您。有关如何执行备份的详细信息,请参见下文
    • 数据库。Neo4j备份是功能齐全的数据库。你们可以启动指向备份数据库的服务器,做你们不想做的一切
    • 增量备份。您可以尽可能频繁地执行增量备份
    注:

    • Neo4j垂直伸缩性非常好(取决于数据库的大小)。它可以在单个实例上处理巨大的负载(我们在中型计算机上每秒有高达3k的请求)。因此,您可以为Neo4j服务器提供一台更大的机器,并为备份提供其他更小(更便宜)的机器
    如何执行备份?

    需要记住的一件事是,实时数据库仍然可以完全运行。备份实用程序不会停止或阻止任何操作

    提交数据库中的事务时,所有更改都附加到事务日志中

    • 没有以前的备份时:复制整个存储
    • 当有以前的备份和事务日志可用时:复制新的事务日志并将其重放到存储中
    • 当有以前的备份且事务不可用时:放弃现有存储,复制现有存储
    为什么事务日志不可用?您的配置可能会说只保留最新的事务日志(即1小时),或者根本不保留

    相关设置:

    其他

    无论如何,您应该考虑集群环境中的备份事件。任何事情都可能在任何时刻失败

    一般来说,一切都取决于您的负载和数据库大小

    如果您的数据库足够小,可以完全放入内存,并且一台机器足以处理所有负载,那么一个Neo4j实例就足够了。做备份就行了


    如果您不想获得更好的可扩展性/可用性和实时工作副本,那么群集设置是最佳选择。

    我不知道您真正的问题是什么。在Neo4j的站点上,可以完整地记录设置多实例集群(带或不带仲裁器)。与备份相同。你在哪些具体问题上犹豫不决?无论如何,这属于ServerFault,而不是StackOverflow,因为这是一个基础架构问题,而不是编程问题。@DavidMakogon很抱歉,我已经编辑了我的问题。基本上,我需要验证和专家意见,我计划做什么是正确的,或者是否有更好的方法。我刚刚开始这方面的工作,但在互联网上找不到太多的文档/写入。没有“更好”的方法-一个是HA,一个是备份。它们是两个完全不同的东西。另外,如果云太贵,将3台服务器带到另一个提供商(我不会说名字),neo4j不难管理,您将拥有真正的HA+备份。维护真正的HA设置与维护2+仲裁器设置是一样的工作。这是非常详细和深刻的。正是我想要的。您还提到,在进行备份时,该工具会运行一致性检查,以验证数据库是否未损坏。这是真的吗。在线备份是否有可能会破坏实时数据库。是吗