3.4 Beheer - dkmattiUCLL/IT-Landscape GitHub Wiki
Om te beginnen roepen we de terminal (shell) van MongoDB in de container op. De oudere versie van deze terminal heette mongo, de nieuwed versie heet mongosh. Hieronder zie je de eerste command die we gaan uitvoeren:
start de MongoDB Shell op.
-u staat voor username en is de username die we in de compose.yaml meegaven.
-p staat voor password en is het paswoord dat we in de compose.yaml file meegaven.
Nu we mongosh kunnen aanspreken, kiezen we welke database we willen gebruiken met het commando use. We schrijven use en dan de database die we willen aanspreken. In ons geval is dat use IT-Landscape-Database
Om een document toe te voegen, moeten we eerst kiezen in welke collection we deze zullen steken. Het document met data: {name:"Matthias", course:"Programmeren"} zou bijvoorbeeld in de collection students moeten komen. Om dit te bekomen voer je de volgende command uit: db.students.insertOne({name"Matthias",course:"Programmeren}). na de punt na "db" zet je je collection tussen aanhalingstekens, en tussen de haakjes van insertOne zet je je BSON-object. Zo zou dit er moeten uitzien:
Je kan dit ook met meerdere documenten doen via db.students.insertMany([{name:test},{name:test1},{name:test2}])
Als je nu op Find drukt in je collection in Compass, zou je deze data ook moeten zien verschijnen.
Belangrijk om te weten!!! Niet alle documenten in een collection moeten hetzelfde formaat hebben. Ik kan gerust een document bijvoegen dat er bijvoorbeeld zo uit ziet: db.students.isertOne({lastName:"De Klerck", subject:"IT-Landscape"}).
Zoals we daarnet een document toevoegden, kunnen we er op een gelijkaardige manier ook één verwijderen. Stel je voor dat we de student met de naam "Matthias" uit de database willen gooien, dan schrijven we dat als volgt: db.students.deleteOne({name"Matthias"}). Als je meerdere studenten met de naam Matthias hebt, wordt enkel de eerste die de database vindt verwijdert. Als je alle studenten met de naam Matthias uit de database wilt gooien, gebruik je deze lijn code: db.students.deleteMany({name"Matthias"}).
Als je nu op Find drukt in je collection in Compass, zie je dat deze data ook weer verdwenen is.
Een collectie maken in mongosh kan via de command db.createCollection(). Tussen de haakjes schrijf je de naam van de collectie die je wilt maken tussen aanhalingstekens.
Als je in compass naar je database gaat en op refresh drukt, zie je de nieuwe collectie daar ook verschijnen.
Een collectie verwijderen in mongosh kan via de command db.collectienaam.drop(). In ons geval is dit db.eveningStudents.drop()
Als je in compass naar je database gaat en op refresh drukt, zie je date de collectie verdwenen is.
Ik heb even wat dummy data toegevoegd zodat we wat andere functies van de databank kunnen tonen.
Als ik bijvoorbeeld db.students.find() gebruik, kan ik alle data van een collectie zien.
Gebruik use en dan de naam van je database om deze aan te spreken. Je nieuwe database wordt pas aangemaakt wanneer hier iets in zit.
Deze is nu ook zichtbaar tussen al je andere databases op dezelfde port.
Een database verwijderen doe je via db.dropDatabase().
Je database zou nu ook in Compass verwijdert moeten zijn.
Om een back-up te maken bestaan er meerdere manieren, maar omdat wij in een docker container werken is het een klein beetje ingewikkelder.
wannneer je je powershell opstart en nog niet in mongosh zit, voer dit stukje code uit: docker exec -it mongodb_container mongodump --username root --password 12345678 --out /dump.
docker exec zegt dat er iets gaat uitgevoerd moeten worden in de container. In -it staat -i voor --interactive (zorgt ervoor dat je kan typen) en -t voor --tty ( start een shell(terminal) op in de container) -u(username) en -p(password) zijn de gegevens die in je Compose.yaml-file staan hier mee log je in. Mongodb_container is de naam van de container waarin je de command wilt uitvoeren.
mongodump is een command in MongoDB die een kopie maakt van de database waarin dit wordt uitgevoerd.
--out zegt waar dat de back-up naartoe moet. In dit geval is dit folder /dump in de container.
Je hebt nu een back-up gemaakt in je container maar nog niet op je lokale systeem. Als je dit wilt kopiëren naar je lokale computer volg je de volgende stap.
Dit is heel gelijkaardig aan een back up maken, alleen vervang je het woordje mongodump door mongorestore dit zet alle files die hij in de back-up maar niet in de database vindt, terug in de database.
Wanneer je een back-up in je container hebt, kan je dit overschrijven naar je locale pc. Navigeer eerst naar de folder waarin je de back-up wilt opslaan. Voor mij is dit de de folder waar mijn Compose.yaml file in zit. Voer dan deze command uit docker cp mongodb_container:/dump ./backup
docker cp is een kopieer command. Dit zegt dat je de folder "mongodb_container:/dump" moet kopiëren naar de folder "backup" in de folder waarin je je nu bevindt. Als deze nog niet bestaat, wordt deze aangemaakt.
Om dit bestand achteraf terug mee te geven aan de container moeten we dit mee in de volume steken, dat ziet er zo uit:
Nu blijft dit up-to-date ook na het hermaken van de container. Belangrijk is wel om de /dump-folder in de container leeg te maken voor je een nieuwe back-up maakt. Dit zorgt ervoor dat er nooit outdated data in je folders blijft staan.