3.4 Beheer - dkmattiUCLL/IT-Landscape GitHub Wiki

image

Terminal(shell) oproepen in container.

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:

image

mongosh

start de MongoDB Shell op.

-u

-u staat voor username en is de username die we in de compose.yaml meegaven.

-p

-p staat voor password en is het paswoord dat we in de compose.yaml file meegaven.

Database aanspreken

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

image

Document(en) toevoegen.

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:

image 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.

image

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"}).

Document(en) verwijderen

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"}).

image Als je nu op Find drukt in je collection in Compass, zie je dat deze data ook weer verdwenen is.

image

Een collectie maken

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.

image Als je in compass naar je database gaat en op refresh drukt, zie je de nieuwe collectie daar ook verschijnen.

image

Een collectie verwijderen

Een collectie verwijderen in mongosh kan via de command db.collectienaam.drop(). In ons geval is dit db.eveningStudents.drop()

image Als je in compass naar je database gaat en op refresh drukt, zie je date de collectie verdwenen is.

image

Een overzicht krijgen

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.

image

Een nieuwe database maken

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.

image Deze is nu ook zichtbaar tussen al je andere databases op dezelfde port.

image

Een database verwijderen

Een database verwijderen doe je via db.dropDatabase().

image Je database zou nu ook in Compass verwijdert moeten zijn.

Een Backup maken in de container

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.

image

docker exec -it mongodb_container

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

mongodump is een command in MongoDB die een kopie maakt van de database waarin dit wordt uitgevoerd.

--out /dump

--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.

Een back-up terugzetten in je database

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.

image

Een back-up maken op je lokale pc

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 image

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.

image

Om dit bestand achteraf terug mee te geven aan de container moeten we dit mee in de volume steken, dat ziet er zo uit:

image 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.



image image

⚠️ **GitHub.com Fallback** ⚠️