- 备份
-
- 停机拷贝
- mongodump/mongorestore
- fsync
> db.runCommand({"fsync":1,"lock":1}){"info" : "now locked against writes, use db.fsyncUnlock() to unlock","seeAlso" : "http://dochub.mongodb.org/core/fsynccommand","ok" : 1}锁定后所有对数据库的写操作全部被会阻塞,读取操作不会受影响,此时可以进行文件拷贝进行备份,完成后执行> db.$cmd.sys.unlock.findOne();
{ "ok" : 1, "info" : "unlock requested" }
> db.currentOp();
{ "inprog" : [ ] }解锁,写入正常。
-
- 修复
运行中数据库的修复,db.repairDatabase(),使用程序{"repairDatabase":1}
- 复制
-
- 主从复制
-
- 复制集(Replica Sets)
test环境复制集部署
-
-
- 创建不同的实例目录
-
-
-
- 分别带参数启动实例rs.initiate()
-
./mongod --port 27018 --dbpath /data/rs/rs0-1 --replSet rs0
./mongod --port 27019 --dbpath /data/rs/rs0-2 --replSet rs0
注意:操作系统主机名一定要在/etc/hosts里加入对应的配置,否则下面的操作会报错
-
-
- 初始化主复制
-
rs.initiate()
查看一下状态
rs.status()
加入其它成员
rs.add("host:27018")
rs.add("host:27019")
查看状态
-
-
- 测试
-
db.slaveOk(),然后执行db.test.find(),刚才插入的文档能找出来,ok,基本完成。
- 增加节点
mkdir -p /data/rs/rs0-3
./mongod --port 27020 --dbpath /data/rs/rs0-3 --replSet rs0
mongo 连接到活动节点
rs.add("host:27020")
rs.status(),直接到同步完成
通过数据库快照(--fastsync)和 和和 和oplog增加节点
通过数据库快照(--fastsync)和 和和 和oplog增加节点
cp -r /data/rs/r0-3 /data/rs0-4(注意,需要在停止服务的时候进行复制)
./mongod --port 27021 --dbpath /data/rs/rs0-4 --replSet rs0
mongo 连接到活动节点
rs.add("host:27020")
rs.status(),直接到同步完成
- 减少节点