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
Russell Smith
April 20, 2012
Technology
1
180
MongoDB London 2011 - MongoDB Command Line Tools
Russell Smith
April 20, 2012
Tweet
Share
More Decks by Russell Smith
See All by Russell Smith
Ops Skills and Tools for Beginners [MongoDB World 2014]
ukd1
0
120
3 Infrastructure + workflow lessons from an early stage startup
ukd1
0
110
Bitcoin Ops & Security Primer
ukd1
1
160
Gearman & Kohana
ukd1
2
960
Geo & capped collections with MongoDB
ukd1
1
130
Cassandra London UG July 2011 - Riak vs Cassandra
ukd1
1
280
MongoDB - Map Reduce
ukd1
2
210
MongoDB London UG, April 2011 - MongoDB Introduction
ukd1
1
96
Seedhack 2011 - Introducing MongoDB
ukd1
1
120
Other Decks in Technology
See All in Technology
Rustから学ぶ 非同期処理の仕組み
skanehira
1
130
AWSで推進するデータマネジメント
kawanago
1
1.3k
生成AIでセキュリティ運用を効率化する話
sakaitakeshi
0
520
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
370
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
440
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
350
Agile PBL at New Grads Trainings
kawaguti
PRO
1
390
職種の壁を溶かして開発サイクルを高速に回す~情報透明性と職種越境から考えるAIフレンドリーな職種間連携~
daitasu
0
140
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
310
roppongirb_20250911
igaiga
1
200
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
160
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1k
Featured
See All Featured
Site-Speed That Sticks
csswizardry
10
810
Code Reviewing Like a Champion
maltzj
525
40k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
How GitHub (no longer) Works
holman
315
140k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
A Tale of Four Properties
chriscoyier
160
23k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
13k
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