====== MongoDB 架构 ====== [[https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/|安装 Mongodb@5.0 ubuntu]] [[https://www.mongodb.com/docs/v5.0/tutorial/install-mongodb-on-os-x/|mac OX]] [[https://www.mongodb.com/developer/products/mongodb/mongodb-on-raspberry-pi/|树莓派只能安装4.4版本]] sudo systemctl restart mongod ===== 安全 ===== [[https://zhuanlan.zhihu.com/p/37837627|防止被黑客攻击]] 主要措施 * 启动认证登录 * 设定复杂密码 * 修改端口 * 限制内网访问 通过 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 {{tag>database mongo}} ===== 搭建副本 ===== 参考文章: [[https://jelly.jd.com/article/5f990ebbbfbee00150eb620a|MongoDB 副本集之入门]] ==== 主机设定 ==== 设定主机名字:''hostnamectl set-hostname serverpi'' 为''serverpi'' ,存储在 ''/etc/hostname'' \\ 编辑 ''/etc/hosts'' 使得服务器之间互相认识 217.160.61.19 serverionos 192.168.0.136 servcerpi ... ==== 配置用例 ==== 修改''mongod.conf'' 文件,并启动案例。详细请参阅以下上篇文章:[[https://segmentfault.com/a/1190000039403622|文章一]] [[https://www.cnblogs.com/gjc592/p/13454845.html|文章二]] [[https://www.cnblogs.com/operationhome/p/10744712.html|文章三]] /usr/bin/mongod -f /home/mongodb/33720/etc/mongod.conf /usr/bin/mongod -f /home/mongodb/33721/etc/mongod.conf db.shutdownServer({force: ,timeoutSecs: }) #关闭服务, 这种方式启动的案例 systemctl 不认识 此文章提及到主节点[[https://www.jianshu.com/p/73b5ad930f47|人工降级]]为副本集。 ===== 数据备份 ===== ==== mongodump ==== mongodump --uri="mongodb://user:pw@192.168.0.157:33720" --authenticationDatabase admin -d Stock -o ~/projects/Backup mongorestore --uri="mongodb://user:pw@143.47.185.127: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 定时任务,制定一个每周和每月的备份计划。编写备份数据的脚本如下, #/usr/bin/sh! mongo --port 33720 -u goldentianya -p 's#;zb_OfJW]P' < 然后制定计划任务 crontab -e # 系统会建立/修改一个临时脚本文件。在文件中输入 # 每周日或每月1号的凌晨2点执行数据库备份 0 2 1 * 0 /home/mongobackup/dobachup.sh