Differences between revisions 3 and 14 (spanning 11 versions)
Revision 3 as of 2017-12-07 09:02:59
Size: 855
Editor: PieterSmit
Comment:
Revision 14 as of 2020-04-08 11:41:34
Size: 3243
Editor: PieterSmit
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
 *  * mongobackup + restore scripts [[MongoDb/MongoBackupRestore]]
 * https://hub.docker.com/r/mongoclient/mongoclient/
   * $ docker run -it mongoclient/mongoclient
   * $ docker run -it mongo mongoexport --version

== Login ==
 * $ mongo 10.32.2.4 --authenticationDatabase admin --username test --password mypass
 * > db
    test
 * > show dbs
 * > use 9spokes
 * > db.getCollection("")
 * > show collections
 * db.getCollection("config_data").find()


== Backup/Export ==
 * Use mongodump mongorestore for full bson that handles all mongo types.
 * To get json formatted data {{{
u=<user>
p=<password>
d=<mydb>
h-<host ip>
mongo --quiet "mongodb://$u:$p@$h/$d?authSource=admin" --eval "db.getCollectionNames().join('\n')" | \
grep -v system.indexes | \
xargs -L 1 -I {} mongoexport -u $u -p $p -h $h --db $d --authenticationDatabase admin --jsonArray --pretty --collection {} --out {}.json
}}}


== Basic mongo find and update examples ==
 * > db.getCollection('widget_data').find({"obj_type":"summary", "obj_category":"Widget", "obj_origin":"sample"}).pretty()
 * patch/update {{{
db.widget_data.update( {"obj_type":"summary", "obj_category":"Widget", "obj_origin":"sample"}, {$set: {
    "data_sets" : [
        {
            "rows" : [
                {
                    "col_1" : "Total",
                    "col_2" : "10"
                },
                {
                    "col_1" : "Limit",
                    "col_2" : "20"
                },
                {
                    "col_1" : "Max",
                    "col_2" : "50"
                }
            ]
        }
    ]

}}

)
}}}
Line 26: Line 81:
}} }}}




=== Slow / Long running queries ===
 * * $ mongo 10.32.2.4 --authenticationDatabase admin --username test --password mypass
 * > db.currentOp()
 * > db.currentOp({"secs_running": {$gte: 3}})

 * Count documents in <db> <collection>
   * use <db>;
   * db.<collection>.count()
 
 * DB locks
   * > db.serverStatus().globalLock
   * > db.serverStatus().locks

 * DB version , want > 3.2 wiretiger document level locking
   * > db.version()

 * DB memory usage should be less than ram
   * > db.serverStatus().mem
   * > db.serverStatus().wiredTiger.cache

 * Check number of connections
   * db.serverStatus().connections

 * Check indexs on a collection
   * db.<collection>.getIndexes()

MongoDB nosql notes

Login

  • $ mongo 10.32.2.4 --authenticationDatabase admin --username test --password mypass
  • > db

    • test
  • > show dbs

  • > use 9spokes

  • > db.getCollection("")

  • > show collections

  • db.getCollection("config_data").find()

Backup/Export

  • Use mongodump mongorestore for full bson that handles all mongo types.
  • To get json formatted data

    u=<user>
    p=<password>
    d=<mydb>
    h-<host ip>
    mongo --quiet "mongodb://$u:$p@$h/$d?authSource=admin" --eval "db.getCollectionNames().join('\n')" | \
    grep -v system.indexes | \
    xargs -L 1 -I {} mongoexport -u $u -p $p -h $h --db $d --authenticationDatabase admin --jsonArray --pretty --collection {} --out {}.json

Basic mongo find and update examples

  • > db.getCollection('widget_data').find({"obj_type":"summary", "obj_category":"Widget", "obj_origin":"sample"}).pretty()

  • patch/update

    db.widget_data.update( {"obj_type":"summary", "obj_category":"Widget", "obj_origin":"sample"}, {$set: {
        "data_sets" : [ 
            {
                "rows" : [ 
                    {
                        "col_1" : "Total",
                        "col_2" : "10"
                    }, 
                    {
                        "col_1" : "Limit",
                        "col_2" : "20"
                    }, 
                    {
                        "col_1" : "Max",
                        "col_2" : "50"
                    }
                ]
            }
        ]
    
    }}
    
    )

Replicaset

  • View members
    •  mongo admin --host $ip -u root -p $pass  -eval "rs.status()" 

  • Check if current server is the write
    •  mongo admin --host $ip -u root -p $pass --quiet --eval "db.isMaster()['ismaster']"  

Recover password

  • stop the mongod service
  • edit /etc/mongod.conf
    •    :PRIMARY>  use admin
         :PRIMARY> db.createUser({user:"root",pwd:"mongopwd",roles:[{role:"root",db:"admin"}]});
         :PRIMARY> db.changeUserPassword("root","mongopwd")
    • mongo admin --host 192.168.70.13 -u root -p mongopassword --eval 'rs.initiate({_id: "local_sandbox-MongoDB", members: [{_id: 0, host: "192.168.70.11:27017"},{_id: 1, host: "192.168.70.12:27017"},{_id: 2, host: "192.168.70.13:27017"}]})'

Slow / Long running queries

  • * $ mongo 10.32.2.4 --authenticationDatabase admin --username test --password mypass
  • > db.currentOp()

  • > db.currentOp({"secs_running": {$gte: 3}})

  • Count documents in <db> <collection>

    • use <db>;

    • db.<collection>.count()

  • DB locks
    • > db.serverStatus().globalLock

    • > db.serverStatus().locks

  • DB version , want > 3.2 wiretiger document level locking

    • > db.version()

  • DB memory usage should be less than ram
    • > db.serverStatus().mem

    • > db.serverStatus().wiredTiger.cache

  • Check number of connections
    • db.serverStatus().connections
  • Check indexs on a collection
    • db.<collection>.getIndexes()

...


CategoryLinux

MongoDb (last edited 2020-07-24 00:29:21 by PieterSmit)