Difference between revisions of "MongoDB"
Unnilennium (talk | contribs) |
|||
Line 212: | Line 212: | ||
[[Category:Howto]] | [[Category:Howto]] | ||
[[Category:Administration]] | [[Category:Administration]] | ||
+ | [[Category:Database]] |
Revision as of 02:36, 29 May 2022
How to install MongoDB 4.0
Install Official Repository
This should work for every version of Koozali SME
You may need to change the mongodb version as required
db yum_repositories set mongodb repository \ BaseURL https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/\$basearch/ \ EnableGroups no \ GPGCheck yes \ Name "MongoDB" \ GPGKkey https://www.mongodb.org/static/pgp/server-4.0.asc \ Visible no \ status disabled
signal-event yum-modify
yum install mongodb-org --enablerepo=mongodb
If refuses to install because of no GPG Key you can change GPGCheck above from Yes to No and try yum install... again or
rpm --import https://www.mongodb.org/static/pgp/server-4.0.asc
Or
yum install mongodb-org --enablerepo=mongodb --nogpgcheck
Start Mongo
/etc/init.d/mongod start
Add the symlinks to start automatically:
ln -s /etc/init.d/mongod /etc/rc.d/rc6.d/K03mongodb ln -s /etc/init.d/mongod /etc/rc.d/rc7.d/S57mongodb
Optional: create symlink to use mongo or mongodb as service name
ln /etc/init.d/mongod /etc/init.d/mongodb
To ensure everything is all right:
signal-event post-upgrade signal-event reboot
Additional Notes
Note - I need to test this again This is my initial observation.
As far as I can see, the link above to mongodb is not necessary.
It may need this to set on and off correctly in other service levels:
chkconfig mongod on
Create a service link in in rc7.d:
ln -s /etc/init.d/mongod /etc/rc.d/rc7.d/S57mongod
To use e-smith-service it will need a key:
config set mongod service status enabled
You should now be able to do:
service mongod start|stop|restart etc
Mongo should come up on boot.
Koozali SME v10
Install
WIP
db yum_repositories set mongodb42 repository \ BaseURL https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.2/\$basearch/ \ EnableGroups no \ GPGCheck yes \ Name "MongoDB" \ GPGKey https://www.mongodb.org/static/pgp/server-4.2.asc \ Visible no \ status disabled
signal-event yum-modify
Use the above method to add the repo and then:
yum --enablerepo=mongodb42 install mongodb-org
We need a db config entry for SME to recognise it:
config set mongod service status enabled access private
We will need a file
mkdir -p /usr/lib/systemd/system/mongod.service.d
nano /usr/lib/systemd/system/mongod.service.d/50koozali.conf
Something like:
[Unit] After=network.target network.service wan.service [Install] WantedBy=sme-server.target
Using keys
config setprop mongod service status enabled
Minimal config I use for Rocket.Chat
grep '^[[:blank:]]*[^[:blank:]#;]' /etc/mongod.conf
systemLog: verbosity: 0 destination: file logAppend: true path: /var/log/mongodb/mongod.log storage: dbPath: /var/lib/mongo journal: enabled: true processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
- Enable replication for Rocket.Chat
replication: replSetName: rs0
Once started you need to initialises the replicaset:
mongo --eval "printjson(rs.initiate())"
Dump and restore
Samples - YMMV.
Quick little script to dump the Rocket.Chat collection:
#!bin/bash echo "Dump with Users/Roles" mongodump --dumpDbUsersAndRoles -d rocketchat -o /root/backup/rocketchatmongo echo "dump all" mongodump -d rocketchat -o /root/backup/rocketchatmongo-all
And to restore:
mongorestore /root/backup/rocketchatmongo-all
Do not restore between versions.
If you export from a version eg 4.0 then restore to that version. Do not try and restore 4.0 to 4.2 or higher.
Then change your repo, and then upgrade mongo.
Backup with system
With credit to Daniel Berteaud
Action script to dump the mongo DB on pre-backup event
mkdir -p /home/e-smith/db/mongo
cat <<_EOF > /etc/e-smith/events/actions/mongodb-dump #!/bin/bash -e /usr/bin/mongodump --quiet --out /home/e-smith/db/mongo/ _EOF
chmod +x /etc/e-smith/events/actions/mongodb-dump cd /etc/e-smith/events/pre-backup ln -s ../actions/mongodb-dump ./S60mongodb-dump
Vaporise or reinitialise the database
Remove the directory contents:
rm -rf /var/lib/mongo/*
Or remove the entire directory and recreate it with the correct ownership:
rm -rf /var/lib/mongo mkdir -p /var/lib/mongo chown -R mongod:mongod /var/lib/mongo
If you have a replicaset set in /etc/mongod.conf make sure you initiate it:
mongo --eval "printjson(rs.initiate())"