一、Replica Set 集群分为两种架构:
接下来就以3台服务器为例,部署具有仲裁的框架。
Primary的配置文件:
Secondary的配置文件
Arbiter的配置文件
启动三台服务器上的mongdb
关闭进程
三、配置Replica Set
登录三台服务器中任意一台,登录mongo(如果报错就将配置文件中:security 内容暂时先去掉)
查看Replica Set配置
四、验证Replica Set
在Primary中插入数据
在Secondary中,默认是不允许读
六、故障模拟
停止Primary上的mongo进程,在Secondary上登录mongo查看
发现原Secondary变成Primary,并且可以进行查询。
开启原Primary服务器上的mongo进程,该服务器变成了Secondary。
七、数据备份和恢复
mongodump从MongoDB中读取数据,保存为BSON文件,mongorestore读取BSON文件恢复到MongoDB中。适用于小型MongoDB的备份和恢复。
mongodump备份的时候只备份MongoDB中的文档,使用mongorestore恢复之后需要重建索引
根据前面的备份恢复到一个新的Replica Set集群中其中一台服务器上。
恢复
恢复的过程中,不要启用认证。否则在将其他机器加入到Replica Set集群中来的时候,会出现无法认证的问题。
1、首先在一台服务器上开启一个干净mongo服务(无任何数据),做为 Primary
mongd.conf配置文件内容
2、开启mongod服务
3、创建单个Replica Set
登录mongo,然后创建单个Replica Set
创建结果:
{
"ok" : 1,
"operationTime" : Timestamp(1560394449, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1560394449, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
创建好了之后,就可以查看当前的数据库
可以发现,目前就三个基本的数据库。
4、恢复数据
结果
2019-06-13T10:55:33.817+0800 preparing collections to restore from
2019-06-13T10:55:33.829+0800 reading metadata for admin.test from /data/mongobak/2019-06-12/admin/test.metadata.json.gz
2019-06-13T10:55:33.832+0800 reading metadata for test.users from /data/mongobak/2019-06-12/test/users.metadata.json.gz
2019-06-13T10:55:33.834+0800 reading metadata for reporting.reporting from /data/mongobak/2019-06-12/reporting/reporting.metadata.json.gz
2019-06-13T10:55:33.841+0800 reading metadata for admin.reporting from /data/mongobak/2019-06-12/admin/reporting.metadata.json.gz
2019-06-13T10:55:33.861+0800 restoring test.users from /data/mongobak/2019-06-12/test/users.bson.gz
2019-06-13T10:55:34.085+0800 restoring admin.test from /data/mongobak/2019-06-12/admin/test.bson.gz
2019-06-13T10:55:34.123+0800 no indexes to restore
2019-06-13T10:55:34.123+0800 finished restoring test.users (1 document)
2019-06-13T10:55:34.123+0800 restoring admin.reporting from /data/mongobak/2019-06-12/admin/reporting.bson.gz
2019-06-13T10:55:34.175+0800 restoring reporting.reporting from /data/mongobak/2019-06-12/reporting/reporting.bson.gz
2019-06-13T10:55:34.230+0800 no indexes to restore
2019-06-13T10:55:34.230+0800 finished restoring admin.test (2 documents)
2019-06-13T10:55:34.233+0800 no indexes to restore
2019-06-13T10:55:34.233+0800 finished restoring reporting.reporting (1 document)
2019-06-13T10:55:34.234+0800 no indexes to restore
2019-06-13T10:55:34.234+0800 finished restoring admin.reporting (1 docum