Zoeken…


Opmerkingen

Als u niet tegen het gebruik van een Ruby-hulpprogramma bent, is Genghis een klassieker: http://genghisapp.com/

Maar voor schaalbaar productiegebruik, ga naar MongoHQ.
http://www.mongohq.com/

Ook de Mongo Monitoring Service van 10Gen, de makers van Mongo:
https://mms.mongodb.com/

MongoClient is geschreven in Meteor, volledig gratis, open source en cross-platform.

RoboMongo Native platformonafhankelijke MongoDB managementtool

Een overgeërfde database analyseren

Er zijn twee geweldige hulpprogramma's voor black-box-analyse van databases. Ten eerste is variety.js, waarmee u een overzicht op hoog niveau krijgt. De tweede is schema.js, waarmee je in de collecties kunt duiken voor meer informatie over de afzonderlijke velden. Bij het erven van een productie-Mongo-database kunnen deze twee hulpprogramma's u helpen begrijpen wat er aan de hand is en hoe de collecties en documenten zijn gestructureerd.

variety.js

mongo test --eval "var collection = 'users'" variety.js

schema.js

mongo --shell schema.js 

Maak verbinding met een database op * .meteorapp.com

De vlag --url kan lastig te gebruiken zijn. Er is een venster van 60 seconden om te verifiëren en vervolgens wordt de gebruikersnaam / het wachtwoord willekeurig opnieuw ingesteld. Zorg er dus voor dat robomongo open en klaar is om een nieuwe verbinding te configureren wanneer u de opdracht uitvoert.

# get the MONGO_URL string for your app  
meteor mongo --url $METEOR_APP_URL

Download een database van * .meteor.com

Hetzelfde als voorheen, maar je moet de info naar het mongodump commando kopiëren. Je moet de volgende opdrachten belachelijk snel uitvoeren en het vereist hand / oog coördinatie. Wees gewaarschuwd! Dit is een belachelijk hacky! Maar leuk! Zie het als een videogame! : D

# get the MONGO_URL string for your app  
meteor mongo --url $METEOR_APP_URL

# then quickly copy all the info into the following command
mongodump -u username -p password --port 27017 --db meteor_app_url_com --host production-db-b1.meteor.io

Gegevens exporteren van lokale Meteor-ontwikkelingsinstantie?

Met deze opdracht maakt u een map / dump en slaat elke verzameling op in een afzonderlijk BSON blob-bestand. Dit is de beste manier om een back-up van databases te maken of over te dragen tussen systemen.

mongodump --db meteor

Gegevens herstellen vanuit een dumpbestand

Het analoog aan het meteordump commando is meteorrestore . U kunt een gedeeltelijke import uitvoeren door de specifieke te importeren verzameling te selecteren. Vooral handig na het uitvoeren van een drop-opdracht.

# make sure your app is running
meteor

# then import your data
mongorestore --port 3001 --db meteor /path/to/dump

# a partial import after running > db.comments.drop()
mongorestore --port 3001 --db meteor /path/to/dump -c comments.bson

Een verzameling exporteren naar JSON

Voer meteoor uit, open een ander terminalvenster en voer de volgende opdracht uit.

mongoexport --db meteor --collection foo --port 3001 --out foo.json

Importeer een JSON-bestand in Meteor

Importeren naar een standaard Meteor-instantie is vrij eenvoudig. Merk op dat u een --jsonArray-optie kunt toevoegen als uw json-bestand als een array van een ander systeem wordt geëxporteerd.

mongoimport --db meteor --port 3001 --collection foo --file foo.json

Gegevens kopiëren tussen enscenering en lokale databases

Mongo ondersteunt het kopiëren van databases naar databases, wat handig is als u grote databases in een ensceneringsdatabase hebt die u naar een lokale ontwikkelingsinstantie wilt kopiëren.

// run mongod so we can create a staging database
// note that this is a separate instance from the meteor mongo and minimongo instances
mongod

// import the json data into a staging database
// jsonArray is a useful command, particularly if you're migrating from SQL
mongoimport -d staging -c assets < data.json --jsonArray

// navigate to your application
cd myappdir

// run meteor and initiate it's database
meteor

// connect to the meteor mongodb
meteor mongo --port 3002

// copy collections from staging database into meteor database
db.copyDatabase('staging', 'meteor', 'localhost');

Compact een Mongo-database op een Ubuntu-box

Toekenning vooraf. Mongo reserveert schijfruimte in lege containers, dus als het tijd is om iets naar schijf te schrijven, hoeft het niet eerst bits uit de weg te schudden. Dit gebeurt door een verdubbelingsalgoritme, waarbij altijd de hoeveelheid vooraf toegewezen schijfruimte wordt verdubbeld totdat deze 2 GB bereikt; en vervolgens is elk prealloc-bestand 2 GB. Nadat gegevens vooraf zijn toegewezen, wordt de toewijzing niet meer ongedaan gemaakt, tenzij u dit specifiek aangeeft. Het waarneembare MongoDB-ruimtegebruik gaat dus meestal automatisch omhoog, maar niet omlaag.

Enig onderzoek naar de preallocatie van Mongo ...
verminderen-MongoDB database-file-size
mongo-prealloc-files-nemen-up-kamer

// compact the database from within the Mongo shell
db.runCommand( { compact : 'mycollectionname' } )

// repair the database from the command line
mongod --config /usr/local/etc/mongod.conf --repair --repairpath /Volumes/X/mongo_repair --nojournal

// or dump and re-import from the command line
mongodump -d databasename
echo 'db.dropDatabase()' | mongo databasename
mongorestore dump/databasename

Een replicaset resetten

Verwijder de lokale databasebestanden. Sluit gewoon de Mongo-shell af, navigeer naar het / dbpath (waar u het ook instelt) en verwijder de bestanden in die map.

Maak op afstand verbinding met een Mongo-exemplaar op * .meteor.com

Wist je van de --url vlag? Heel handig.

meteor mongo --url YOURSITE.meteor.com

Toegang tot Mongo-logboekbestanden op een lokale meteoorinstantie

Ze zijn niet gemakkelijk toegankelijk. Als u de opdracht 'meteor bundle' uitvoert, kunt u een tar.gz-bestand genereren en vervolgens uw app handmatig uitvoeren. Als je dat doet, zou je toegang moeten hebben tot de mongo-logs ... waarschijnlijk in de map .meteor / db. Als je echt toegang nodig hebt tot mongodb-logboekbestanden, stel je een reguliere mongodb-instantie in en verbind je Meteor met een externe mongo-instantie door de omgevingsvariabele MONGO_URL in te stellen:

MONGO_URL='mongodb://user:password@host:port/databasename'

Zodra dat is gebeurd, zou u toegang moeten hebben tot logs op de gebruikelijke plaatsen ...

/var/log/mongodb/server1.log

Roteer logbestanden op een Ubuntu Box

Moet je die logbestanden roteren, anders zullen ze uiteindelijk al je schijfruimte in beslag nemen. Begin met wat onderzoek ...
MongoDB-log-file-groei
rotate-log-files

Logbestanden kunnen worden bekeken met de volgende opdracht ...

ls /var/log/mongodb/

Maar om rotatie van logbestanden in te stellen, moet u het volgende doen ...

// put the following in the /etc/logrotate.d/mongod file
/var/log/mongo/*.log {
    daily
    rotate 30
    compress
    dateext
    missingok
    notifempty
    sharedscripts
    copytruncate
    postrotate
        /bin/kill -SIGUSR1 `cat /var/lib/mongo/mongod.lock 2> /dev/null` 2> /dev/null || true
    endscript
}

// to manually initiate a log file rotation, run from the Mongo shell
use admin
db.runCommand( { logRotate : 1 } )


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow