MongoDB 使用技巧记录(十)
一:清理mongodb数据库,释放空间
方法1
.删除数据库
db.dropDatabase();
方法2
导出数据
mongodump -d databasename -o /path/to/dump_dir
echo 'db.dropDatabase()' | mongo
mongorestore -d /path/to/dump_dir
导出数据:
mongodump --host 10.0.0.60 --port 27017 -d LoggingLibrary -o mongo_60
导入数据:
mongorestore --host 10.0.0.60 --port 27017 -d LoggingLibrary -o mongo_60
导出数据:
mongodump --host 192.168.0.228 --port 27017 -d hkweb -o .
导入数据:
./mongorestore --host dds-wz90ec4bd8d439d41.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u root -p hk_2016Aug15 -d hkweb importdata/hkweb
导出单个collections
./mongoexport --host 10.0.0.60 --port 27017 -d LoggingLibrary -c Comment -o /root/Comment.data
二:replSet 故障模拟
一 主节点损坏
1.停止primary DB
ps -ef|grep mongo
kill -9 PID
2.查看日志
tail -f /data/mongodblog/mongodb.log
replSet not trying to sync from 192.168.146.170:27017, it is vetoed for 9 more seconds
[rsHealthPoll] replSet member 192.168.146.170:27017 is now in state DOWN
[conn642] replSet info voting yea for 192.168.146.171:27017 (1)
[rsMgr] not electing self, 192.168.146.171:27017 would veto with 'I am already primary, 192.168.146.172:27017 can try again once I've stepped down'
3.启动节点
查看日志,已经转为备份节点
如果优先级高,则会自动恢复为主节点
[rsMgr] not electing self, 192.168.146.172:27017 would veto with '192.168.146.171:27017 has lower priority than 192.168.146.170:27017'
[rsHealthPoll] replSet member 192.168.146.170:27017 is now in state PRIMARY
3.删除一个节点
>rs.remove("192.168.146.172:27017");
2015-01-22T14:46:29.607+0800 DBClientCursor::init call() failed
2015-01-22T14:46:29.643+0800 Error: error doing query: failed at src/mongo/shell/query.js:81
2015-01-22T14:46:29.646+0800 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2015-01-22T14:46:29.647+0800 reconnect 127.0.0.1:27017 (127.0.0.1) ok
>rs.status();
可以发现只有2个节点了
4.增加一个节点
删除节点数据
rm -rf /data/mongodbdata/data/*
启动mongo 实例
>rs.status();
检查当前副本集
>rs.add("192.168.146.172:27017");
添加一个实例
>rs.status();
检查状态
新加replSet 状态,逐渐由 rs1:STARTUP2
转为 rs1:SECONDARY
三:删除collection集合记录
> use HospitalLoggingLibrary
switched to db HospitalLoggingLibrary
> show collections;
ErrorLog
InfoLog
WarningLog
system.indexes
> db.InfoLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});
WriteResult({ "nRemoved" : 1106901 })
> db.ErrorLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});
WriteResult({ "nRemoved" : 1220489 })
> db.WarningLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});
WriteResult({ "nRemoved" : 1044965 })
>
db.AppBehavior.remove({CreateDateTime:{$lt:"2016-10-01T05:09:03Z"}});