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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 047cd5292c7718b3ecd45303f5ffe5c94ca6c0851a064a7ed136d997b6e1dad1 |
|
MD5 | 23d661c7c8fb60f19624f5d7bf742a0d |
|
BLAKE2b-256 | e874c44093dd69af10070ed6a833512c2975085c8e76aa64cf573105d89446ab |