四时宝库

程序员的知识宝库

MongoDB 使用技巧记录(十)(mongodb应用实例)

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"}});

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接