Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MongoDB London 2011 - MongoDB Command Line Tools
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Russell Smith
April 20, 2012
Technology
210
1
Share
MongoDB London 2011 - MongoDB Command Line Tools
Russell Smith
April 20, 2012
More Decks by Russell Smith
See All by Russell Smith
Ops Skills and Tools for Beginners [MongoDB World 2014]
ukd1
0
140
3 Infrastructure + workflow lessons from an early stage startup
ukd1
0
130
Bitcoin Ops & Security Primer
ukd1
1
180
Gearman & Kohana
ukd1
2
1k
Geo & capped collections with MongoDB
ukd1
1
160
Cassandra London UG July 2011 - Riak vs Cassandra
ukd1
1
320
MongoDB - Map Reduce
ukd1
2
250
MongoDB London UG, April 2011 - MongoDB Introduction
ukd1
1
130
Seedhack 2011 - Introducing MongoDB
ukd1
1
150
Other Decks in Technology
See All in Technology
ハーネスエンジニアリングの概要と設計思想
sergicalsix
9
5k
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
300
The Journey of Box Building
tagomoris
4
2.9k
[最強DB講義]推薦システム | 基礎編
recsyslab
PRO
1
170
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
11
34k
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
220
自立を加速させる神器 - EMOasis #11
stanby_inc
0
140
AndroidアプリとCopilot Studioの統合
nakasho
0
110
AI駆動1on1〜AIに自分を育ててもらう〜
yoshiakiyasuda
0
120
EBS暗号化に失敗してEC2が動かなくなった話
hamaguchimmm
2
200
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
250
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
4
1.8k
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
290
Optimising Largest Contentful Paint
csswizardry
37
3.6k
First, design no harm
axbom
PRO
2
1.2k
GraphQLとの向き合い方2022年版
quramy
50
15k
Building an army of robots
kneath
306
46k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Transcript
mongo* Just what do those commands do? By Russell Smith
Friday, 20 April 12
/usr/bin/whoami • Russell Smith • Consultant for UKD1 Limited •
I Specialise in helping companies going through rapid growth; • Code, architecture, infrastructure, devops, sysops, capacity planning, etc • <3 MongoDB, Neo4j, MySQL, Riak, Gearman, Kohana, PHP, Debian, Puppet, etc... Friday, 20 April 12
Huh? • MongoDB ships with a variety of CLI tools
• Some popular; mongodump, mongorestore, mongostat, mongo • Some less so; mongosniff, mongoexport, mongoimport, bsondump, etc Friday, 20 April 12
Core Friday, 20 April 12
mongo • Probably the most commonly used • ‘Hidden’ gems;
• ~/.mongorc.js - will be executed by default • --eval “some js” - evaluates Javascript and exits Friday, 20 April 12
mongo (cont.) ~ mongo test --eval "printjson(db.getCollectionNames())" MongoDB shell version:
2.1.0-pre- connecting to: test [ "fs.chunks", "fs.files", "system.indexes", "system.profile", "test" ] ~ mongo test --quiet --eval "printjson(db.getCollectionNames())" [ "fs.chunks", "fs.files", "system.indexes", "system.profile", "test" ] Friday, 20 April 12
~/.mongorc.js x = db.queue.count({state:4}); if (x > 0) { print('WARNING:
' + x + ' hung jobs'); } Friday, 20 April 12
~/.mongorc.js ~ mongo MongoDB shell version: 2.1.0-pre- connecting to: test
WARNING: 2 hung jobs > Friday, 20 April 12
mongod • The server itself • Useful: • --fastsync -
allows (much) faster starting of a replset member by using a (recent) snapshot of a peer • --keyFile - replset / sharding authentication file Friday, 20 April 12
mongos • Sits in front of your shard servers and
directs queries • --keyFile Friday, 20 April 12
Common Friday, 20 April 12
mongodump • Used to take backups • Common options: •
--oplog • -d • -c Friday, 20 April 12
mongodump (cont.) ~ mongodump -d test -c queue -q "{state:4}"
connected to: 127.0.0.1 DATABASE: test to dump/test test.queue to dump/test/queue.bson 2 objects Friday, 20 April 12
mongorestore • Restores backups taken with mongodump • Interesting options;
• --filter • --oplogReplay • Possible performance issues with custom (non ObjectId) _id Friday, 20 April 12
mongorestore (cont.) mongorestore -d test -c queue --filter "{state:4}" dump/test/queue.bson
connected to: 127.0.0.1 Mon Sep 19 07:34:03 dump/test/queue.bson Mon Sep 19 07:34:03 going into namespace [test.queue] 764 objects found 2 objects processed Friday, 20 April 12
mongostat • Produces periodically updated stats • Useful in watching
server load & spotting general performance issues Friday, 20 April 12
Cursor paging Common operations fsync flushes Total data size locked
active clients queues Friday, 20 April 12
mongostat (cont’d) • Watch for; • faults (page faults) •
idx miss (index btree page misses) • locked (percentage of time globally locked) • repl (it should normally be M or SEC) Friday, 20 April 12
Others Friday, 20 April 12
mongoexport • Useful to export data for use with another
database or program • You may specify down to the field level using a filter if needed • Can export as; • JSON (default) • CSV Friday, 20 April 12
mongoimport • Imports data in to mongodb • Currently supports
importing; • JSON • CSV • TSV Friday, 20 April 12
mongoimport (cont’d) • Useful options include; • --upsert - allows
updating objects that exist already (see --upsertFields) • --headerline - if your CSV / TSV contains headers • -f / --fields - specify field names Friday, 20 April 12
bsondump • Convert bson -> json bsondump test.bson --type json
{ "_id" : ObjectId( "4e72f51414345f302b0eea2e" ), "test" : 1 } 1 objects found Friday, 20 April 12
bsondump (cont.) • Debug info: bsondump test.bson --type debug ---
new object --- size : 36 _id type: 7 size: 17 test type: 1 size: 14 etc Friday, 20 April 12
mongofiles ~ mongofiles put test.txt connected to: 127.0.0.1 added file:
{ _id: ObjectId('4e761b07c21062d06b349819'), filename: "test.txt", chunkSize: 262144, uploadDate: new Date(1316363015625), md5: "d41d8cd98f00b204e9800998ecf8427e", length: 12256 } done! Friday, 20 April 12
mongofiles (cont.) ~ mongofiles list connected to: 127.0.0.1 test.txt 12256
Friday, 20 April 12
mongotop • New in 1.9 • Collection level load stats
Friday, 20 April 12
mongosniff • Used for sniffing the traffic between client /
server • Can forward traffic • Only really useful for debugging... Friday, 20 April 12
Friday, 20 April 12
mongo-perf • Does not ship with mongodb See : https://github.com/mongodb/mongo-perf
• I can’t compile it, but it probably works Friday, 20 April 12
Useful third party tools Friday, 20 April 12
tungsten replicator • http://code.google.com/p/tungsten-replicator/ • http://code.google.com/p/tungsten-replicator/wiki/ mysql> create table foo(id
int primary key, msg varchar(35)); Query OK, 0 rows affected (0.05 sec) mysql> insert into foo values(1, 'hello from MySQL!'); Query OK, 1 row affected (0.00 sec) > db.foo.find() { "_id" : ObjectId("4dc77bacad9092bd1aef046d"), "id" : "1", "data" : "hello from MySQL!" } Friday, 20 April 12
automongobackup • A port of the popular AutoMySQLBackup • Rotates
& compresses backups • https://github.com/micahwedemeyer/automongobackup Friday, 20 April 12
mongolog • Full query logging • Uses mongosniff • Will
be on github soon Friday, 20 April 12
Other interesting projects • Eliots Munin plugins : https://github.com/erh/mongo-munin •
gridfs-fuse : https://github.com/mikejs/gridfs-fuse Friday, 20 April 12
Further reading • Tungsten with Mongo details http://scale-out-blog.blogspot.com/2011/05/introducing-mysql-to-mongodb.html • Javascript
shell API http://api.mongodb.org/js/current/ • Admin UI’s http://www.mongodb.org/display/DOCS/Admin+UIs • Hacking the shell http://bit.ly/r2vghH Friday, 20 April 12
Questions? Friday, 20 April 12