跳转到主要内容

MongoDB的多主复制

项目描述

这是一个允许您设置MongoDB多主复制的工具。它明确地由MongoDB的制造商10gen支持。

它通过查询一个副本集的oplog并将操作应用到另一个副本集来实现。它通过为复制的每个文档标记其来源来支持双向复制。

安装

要安装,请使用pip

pip install MongoMultiMaster

MongoDB设置

MMM需要访问每个主机的副本集oplog。这意味着它不适用于配置为独立服务器的服务器。要将独立服务器转换为单实例副本集,首先您需要在启动时告诉它它所在的集合

$ mongod --replSet foo

然后,要启动副本集,您需要在mongo shell中执行以下操作

> rs.initiate()

MongoMultiMaster复制设置

一旦创建了副本集的主节点,您需要告诉MMM服务器的位置。这是通过一个YAML配置文件完成的。下面包含两个服务器的示例配置文件

server_a:
  id: '2c88ae84-7cb9-40f7-835d-c05e981f564d'
  uri: 'mongodb://localhost:27019'
server_b:
  id: '0d9c284b-b47c-40b5-932c-547b8685edd0'
  uri: 'mongodb://localhost:27017'

首先,让我们验证没有配置,并且我们可以连接到配置文件中的所有服务器

$ mmm -c test.yml clear-config
About to clear config on servers: ['server_a', 'server_b'], are you sure? (yN) y
Clear config for server_a
Clear config for server_b
$ mmm -c test.yml dump-config
=== Server Config ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb://localhost:27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb://localhost:27017

=== server_a Replication Config
=== server_b Replication Config

接下来,我们将设置两个复制的集合

$ mmm -c test.yml replicate --src=server_a/test.foo --dst=server_b/test.foo
$ mmm -c test.yml replicate --src=server_a/test.bar --dst=server_b/test.bar

并确认它们已正确配置

$ mmm -c test.yml dump-config
=== Server Config ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb://localhost:27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb://localhost:27017

=== server_a Replication Config
=== server_b Replication Config
     - test.foo <= server_a/test.foo
     - test.bar <= server_a/test.bar

现在,让我们使复制双向

$ mmm -c test.yml replicate --src=server_b/test.foo --dst=server_a/test.foo
$ mmm -c test.yml replicate --src=server_b/test.bar --dst=server_a/test.bar

并验证其正确性...

$ mmm -c test.yml dump-config
=== Server Config ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb://localhost:27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb://localhost:27017

=== server_a Replication Config
     - test.foo <= server_b/test.foo
     - test.bar <= server_b/test.bar
=== server_b Replication Config
     - test.foo <= server_a/test.foo
     - test.bar <= server_a/test.bar

现在我们可以运行复制器了

$ mmm -c test.yml run

注意事项

  • 如果你写了很多内容,复制可能会落后。这完全没有被处理。

  • 复制从第一次调用 mmm run 的时间开始。你应该能够停止/启动 mmm 并从上次停止的地方继续。

  • 主服务器之间的冲突没有被处理;如果你经常同时在两个头部上写入同一份文档,你可能会出现不同步。

  • 复制在每个文档中插入一个账务字段,以表示最后写入文档的服务器 UUID。这稍微增加了每个文档的大小。

如果你在没有彻底测试的情况下在生产系统中使用 MMM,可能会遇到尖锐的边缘、其他未发现的错误和许多令人讨厌的事情。但如果你喜欢冒险,欢迎尝试。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

MongoMultiMaster-0.0.4dev.tar.gz (11.0 kB 查看散列)

上传时间

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面