MongoDB 架构

安全

防止被黑客攻击 主要措施

  • 启动认证登录
  • 设定复杂密码
  • 修改端口
  • 限制内网访问

通过 MongoDB 自带的 bindip 参数在我的实践中并不管用,这里采用的是 Linux 自带的iptables 功能,限制允许访问 MongoDB 端口的IP地址:

# 拒绝所有访问27027端口的请求
$ sudo iptables -I INPUT -p tcp --dport 27027 -j DROP
# 允许本地访问mongo端口
$ sudo iptables -I INPUT -s 127.0.0.1 -p tcp --dport 27027 -j ACCEPT
$ sudo iptables-save

搭建副本

参考文章: MongoDB 副本集之入门

主机设定

设定主机名字:hostnamectl set-hostname serverpiserverpi ,存储在 /etc/hostname
编辑 /etc/hosts 使得服务器之间互相认识

217.160.61.19 serverionos
192.168.0.136 servcerpi
...

配置用例

修改mongod.conf 文件,并启动案例。详细请参阅以下上篇文章:文章一 文章二 文章三

/usr/bin/mongod   -f /home/mongodb/33720/etc/mongod.conf
/usr/bin/mongod   -f /home/mongodb/33721/etc/mongod.conf
db.shutdownServer({force: <boolean>,timeoutSecs: <int>}) #关闭服务, 这种方式启动的案例 systemctl 不认识

此文章提及到主节点人工降级为副本集。

数据备份

mongodump

mongodump --uri="mongodb://user:[email protected]:33720" --authenticationDatabase admin -d Stock -o ~/projects/Backup
mongorestore --uri="mongodb://user:[email protected]:33720" --authenticationDatabase admin -d Stock ~/projects/Backup/Stock

注意备份前锁写操作 db.fsyncLock() 以及备份结束后开通写操作 db.fsyncUnlock()

压缩文件备份

将目录压缩到一个文件当中 tar -czf /home/ubuntu/Backup/`date +%F`_mongo_all.tar.gz /home/ssd/mongodb

解压到原来的目录 tar -xzf /home/ubuntu/Backup/2021-07-17_mongo_all.tar.gz -C /

:!: 解压的参数写根目录就可以了,它会按照压缩时的目录解压

利用系统 crontab 定时任务,制定一个每周和每月的备份计划。编写备份数据的脚本如下,

dobachup.sh
#/usr/bin/sh!
mongo --port 33720 -u goldentianya -p 's#;zb_OfJW]P' <<EOF
db.fsyncLock()
EOF
tar -czf /home/mongobackup/`date +%F`_mongo_all.tar.gz /home/ssd/mongodb
mongo --port 33720 -u goldentianya -p 's#;zb_OfJW]P' <<EOF
db.fsyncUnlock()
EOF
# 删除6天以前的文件
find  /home/ubuntu/apis/test/temp/  -mtime  +6 | xargs rm

然后制定计划任务

crontab -e # 系统会建立/修改一个临时脚本文件。在文件中输入
# 每周日或每月1号的凌晨2点执行数据库备份
0 2 1 * 0 /home/mongobackup/dobachup.sh 
it/database/mongo_install.txt · 最后更改: 2025-12-30 14:39 由 goldentianya
回到顶部
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0