我常用的 mongodb 命令

发布时间: 更新时间: 总字数:908 阅读时间:2m 作者: IP上海 分享 网址

记录我常用的 mongodb 命令,以备后查。

主备切换

cfg = rs.conf()
cfg.members[0].priority = 30
cfg.members[1].priority = 20
cfg.members[2].priority = 10
cfg
rs.reconfig(cfg)

添加/删除节点

replica set多服务器主从,添加,删除节点

利用 rs.reconfig 添加/删除节点

  • 添加节点
repmore:PRIMARY> config = {_id:"repmore",members:[{_id:0,host:'127.0.0.1:27017',priority :2},{_id:1,host:'127.0.0.1:27018',priority:1}]};   //添加节点
repmore:PRIMARY> rs.reconfig(config);   //使配置生效
repmore:PRIMARY> rs.status();     //查看节点状态

节点添加成功。

注意:新增节点的replSet要和其他节点要一样

  • 删除节点(删除节点前最好是先关闭需要删除的节点,之后通过命令 rs.remove 来删除)
repmore:PRIMARY> config = {_id:"repmore",members:[{_id:0,host:'127.0.0.1:27017',priority :2}]};     //删除节点
repmore:PRIMARY> rs.reconfig(config);   //使配置生效
repmore:PRIMARY> rs.status();   //查看节点状态

利用 rs.add 和 rs.remove 来添加删除节点

repmore:PRIMARY> rs.add("127.0.0.1:27018");     //添加节点
repmore:PRIMARY> rs.remove("127.0.0.1:27018");  //删除节

注意:利用rs.add和rs.remove是不用rs.reconfig来使用配置生效的。

常用命令

db.meter.findOne( {counter_name: "ip.floating.incoming.bytes.rate"})
db.meter.count( {counter_name: "ip.floating.incoming.bytes.rate", recorded_at: {$lt: ISODate("2017-10-22T03:19:14.293Z")}})

mongoexport --host 127.0.0.1 --port 27017  -d ceilometer -c  meter -q '{counter_name: "ip.floating.incoming.bytes.rate", recorded_at: {$lt: ISODate("2017-10-22T03:19:14.293Z")}}'  --fields=resource_id,resource_metadata.fixed_ips.0.ip_address,counter_volume,counter_unit,recorded_at,resource_metadata.tenant_id --type=csv -o eip.csv

mongoexport --host 127.0.0.1 --port 27017  -d ceilometer -c  meter -q '{counter_name: "ip.floating.incoming.bytes.rate", recorded_at: {$lt: ISODate("2017-07-02T00:00:00.000Z")}}'  --fields=resource_id,resource_metadata.fixed_ips.0.ip_address,counter_volume,counter_unit,recorded_at,resource_metadata.tenant_id --type=csv -o eip.csv >> export_eip.log

mongoexport --host 127.0.0.1 --port 27017  -d ceilometer -c  meter -q '{counter_name: "ip.floating.incoming.bytes.rate", recorded_at: {$lt: ISODate("2017-07-02T00:00:00.000Z")}}'  --fields=resource_id,resource_metadata.fixed_ips.0.ip_address,counter_volume,counter_unit,recorded_at,resource_metadata.tenant_id --type=csv -o /mongodb-export/eip-20170622-0702.csv >> /mongodb-export/export_eip.log 2>&1

db.meter.find({counter_name: "memory", "resource_id" : "45103dbe-a77f-40dc-a1da-7813e8ce7092"}).limit(10).pretty()

db.meter.find({ resource_id: "a93c5387-a5ac-4ac3-9e01-37a309b04ee0"}).sort({"recorded_at":1}).limit(1)
db.resource.findOne({ metadata."instance_id" : "a93c5387-a5ac-4ac3-9e01-37a309b04ee0"}).limit(1)
db.meter.find({ resource_id: "a93c5387-a5ac-4ac3-9e01-37a309b04ee0"}).sort({"recorded_at":1}).limit(1)
db.resource.findOne({ "metadata.instance_id" : "a93c5387-a5ac-4ac3-9e01-37a309b04ee0"})
db.resource.find({ "metadata.instance_id" : "a93c5387-a5ac-4ac3-9e01-37a309b04ee0"}).sort({"last_sample_timestamp":1}).limit(1)

find

db.resource.find({ "metadata.instance_id" : "6d94e545-209a-4ea3-87a7-f5b237fd11c0"}).sort({"last_sample_timestamp":-1}).limit(1);
db.resource.find({ "metadata.instance_id" : "ce9416c9-2ff9-4a50-bcfa-82b7fb0a8110"}).sort({"last_sample_timestamp":-1}).limit(1);
db.resource.find({ "metadata.instance_id" : "6d94e545-209a-4ea3-87a7-f5b237fd11c0"}).sort({"last_sample_timestamp":-1}).limit(1);
db.resource.find({ "metadata.instance_id" : "6d94e545-209a-4ea3-87a7-f5b237fd11c0"}).sort({"last_sample_timestamp":-1}).limit(1);

update

db.getCollection('cc_ObjDes').update({'bk_obj_id':'listeners'},{$set:{'bk_classification_id':'load_balance'}})
mongodump  -h 127.0.0.1 -p 27017  --db db_name --out cc_TopoGraphics-2018-06-22
mongorestore --host 127.0.0.1:27017 -udb_user -ppwd --db db_name cc_TopoGraphics.bson

oplog 调整

修改顺序:Secondary -> Primary

primary 切换 secondary 命令:

rs.stepDown()

涉及到 Replication Set 的服务:

27018 mongod-config-svr.service
27019 mongod-rs-1.service
27020 mongod-rs-2.service
27021 mongod-rs-3.service

修改一个 Secondary oplog 的步骤:

登录 Secondary 将其从集群剔除

mongo --host 10.0.0.1 --port 27018

use admin
db.shutdownServer()

实际执行

systemctl status mongod-config-svr.service

停止对应的服务

修改配置

注释掉:replication.replSetName 针对 shard (和 config replica set),注释:sharding.clusterRole 修改 net.port 为其他端口: 27022

启动

mongod --port 27022 --dbpath /data-01/mongo-conf-svr
mongod --port 27022 --dbpath /data-01/mongo-rs-1
mongod --port 27022 --dbpath /data-01/mongo-rs-2
mongod --port 27022 --dbpath /data-01/mongo-rs-3

备份 oplog

mongodump --db local --collection 'oplog.rs' --host 10.3.13.61 --port 27022 --out bak/mongo-conf-svr.oplog.rs
mongodump --db local --collection 'oplog.rs' --host 10.3.13.61 --port 27022 --out bak/mongo-rs-1.oplog.rs
mongodump --db local --collection 'oplog.rs' --host 10.3.13.61 --port 27022 --out bak/mongo-rs-2.oplog.rs
mongodump --db local --collection 'oplog.rs' --host 10.3.13.61 --port 27022 --out bak/mongo-rs-3.oplog.rs

重建 oplog

思路:确认 temp 表不存在,将 oplog.rs 旧数据放到 temp 表中,删除 oplog.rs 并新建,将 temp 表插入新的 oplog.rs ,删除 temp。

mongo --host 10.3.13.61 --port 27022

确认 temp 表不存在:

db = db.getSiblingDB('local')

Ensure that the temp temporary collection is empty by dropping the collection

show collections;
db.temp.drop()

将 oplog.rs 旧数据放到 temp 表中:

db.temp.save( db.oplog.rs.find( { }, { ts: 1, h: 1 } ).sort( {$natural : -1} ).limit(1).next() )

db.temp.find()

删除 oplog.rs:

db = db.getSiblingDB('local')
db.oplog.rs.drop()

并新建(100G):

db.runCommand( { create: "oplog.rs", capped: true, size: (40 * 1024 * 1024 * 1024) } )
db.runCommand( { create: "oplog.rs", capped: true, size: (100 * 1024 * 1024 * 1024) } )

将 temp 表插入新的 oplog.rs:

db.oplog.rs.save( db.temp.findOne() )

db.oplog.rs.find()

删除 temp:

db.temp.drop()

停止

db.shutdownServer()

修改配置文件

replication:
  oplogSizeMB: 40960

replication:
  oplogSizeMB: 102400

启动服务

systemctl start mongod-rs-1.service

参考:https://docs.mongodb.com/v3.2/core/replica-set-oplog/

Client 软件

https://robomongo.org/

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数