差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
it:database:mongo_install [2021-07-25 05:32] – [压缩文件备份] goldentianyait:database:mongo_install [2025-12-30 14:39] (当前版本) goldentianya
行 1: 行 1:
 ====== MongoDB 架构 ====== ====== MongoDB 架构 ======
  
 +[[https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/|安装 [email protected] 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
  
 ===== 安全 ===== ===== 安全 =====
行 48: 行 53:
 </code> </code>
  
 +此文章提及到主节点[[https://www.jianshu.com/p/73b5ad930f47|人工降级]]为副本集。
 ===== 数据备份 ===== ===== 数据备份 =====
  
行 53: 行 59:
  
 <code bash> <code bash>
-mongodump --uri="mongodb://user:[email protected].136:33720" --authenticationDatabase admin -d Stock -o ~/projects/Backup +mongodump --uri="mongodb://user:[email protected].157:33720" --authenticationDatabase admin -d Stock -o ~/projects/Backup 
-mongorestore --uri="mongodb://user:pw@217.160.61.19:33720" --authenticationDatabase admin -d stockapi ~/projects/Backup/stockapi+mongorestore --uri="mongodb://user:pw@143.47.185.127:33720" --authenticationDatabase admin -d Stock ~/projects/Backup/Stock
 </code> </code>
  
行 61: 行 67:
 ==== 压缩文件备份 ==== ==== 压缩文件备份 ====
  
-将目录压缩到一个文件当中 tar -czf /home/ubuntu/Backup/`date +%F`_mongo_all.tar.gz /home/ssd/mongodb+将目录压缩到一个文件当中 <color #ff7f27>''%%tar -czf /home/ubuntu/Backup/`date +%F`_mongo_all.tar.gz /home/ssd/mongodb%%''</color>
  
-解压到原来的目录 ''<color #7092be>tar -xzf /home/mongobackup/2021-07-17_mongo_all.tar.gz -C /</color>''+解压到原来的目录 <color #ff7f27>''%%tar -xzf /home/ubuntu/Backup/2021-07-17_mongo_all.tar.gz -C /%%''</color>
  
 :!: //解压的参数写根目录就可以了,它会按照压缩时的目录解压//  :!: //解压的参数写根目录就可以了,它会按照压缩时的目录解压// 
行 87: 行 93:
 0 2 1 * 0 /home/mongobackup/dobachup.sh  0 2 1 * 0 /home/mongobackup/dobachup.sh 
 </code> </code>
-==== 硬盘快照备份 ==== 
- 
-参考文章:[[https://www.cnblogs.com/despotic/p/11951886.html|linux 逻辑卷管理]][[https://www.cnblogs.com/zknublx/p/9188341.html|Linux LVM 总结]] 
- 
-=== 1 挂载一个USB并且格式化 === 
- 
-''sudo fdisk /dev/sdb'' 
-=== 2 全部转换成物理分区 === 
- 
-<code bash> 
-pvcreate /dev/sdc 
-$> pvs #显示结果 pvdisply pvscan 
-  PV         VG Fmt  Attr PSize   PFree 
-  /dev/sdc1     lvm2 ---  <30.00g <30.00g 
-</code> 
- 
-=== 3 创建卷组 VG (VolumeGroup) === 
- 
-<code bash> 
-vgcreate datavg /dev/sdc 
-$> pvs #显示结果, sdc1 有组织了,datavg 
-  PV /dev/sdc1   VG datavg          lvm2 [<30.00 GiB / <30.00 GiB free] 
-  Total: 1 [<30.00 GiB] / in use: 1 [<30.00 GiB] / in no VG: 0 [0   ] 
-</code> 
- 
-创建完可以用命令查看 ''<color #7092be>vgdisplay datavg</color>'' 其实 ''<color #7092be>vgs vgscan</color>'' 都可以。 
- 
-将来需要用到分区扩容或者减容,用一下命令 
- 
-<code bash> 
-vgextend datavg /dev/sdd # /dev/sdd 是新的物理硬盘 
-vgreduce datavg /dev/sdd # 减少 
-pvmove /dev/sdd [/dev/sdc] # 将物理卷 sdd 的数据导出到 /dev/sdc,也可以不添加第二个参数 
-</code> 
- 
-=== 4 创建逻辑卷 === 
- 
-创建一个名为 '"mongolv" 的逻辑卷(([[https://blog.csdn.net/debimeng/article/details/72470030|lvcreate 解释]])) 
- 
-<code bash> 
-# lvcreate -l 100%VG -n datalv datavg 
-# lvcreate mongovg -l 80%Free -n mongolv #80%空余 
-# lvcreate mongovg -L 5G -n mongolv      #5G的卷 
-lvcreate -l 102400 -n datalv datavg # 使用6000PE,大概 80%左右的容量 
-</code> 
- 
-<code bash> 
-$> lvs #查看结果 
-LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert 
-  datalv datavg -wi-a----- <23.44g 
-$> lvscan 
-ACTIVE   '/dev/datavg/datalv' [<23.44 GiB] inherit 
-</code> 
- 
-<color #c3c3c3>这个USB有30G左右容量,创建一个 80%左右的逻辑卷,剩下的留给快照卷。</color> 
- 
-=== 逻辑卷扩容 === 
- 
-需要两个操作,一个是逻辑卷的扩容,一个是文件系统的扩展 
- 
-<code bash> 
-vgs #查看vg是否还有剩余空间 
-lvextend -l 15  /dev/datavg/datalv   # 最终到15个LE 
-lvextend -l +15 /dev/datavg/datalv   # 加15个LE 
-</code> 
- 
-以上只是逻辑卷扩容,但文件系统没有扩大,还需要对文件系统扩容 
- 
-<code bash> 
-# xfs 格式 
-xfs_growfs /dev/datavg/datalv 
-# ext4 格式 
-resize2fs /dev/datavg/datalv 
-</code> 
- 
-=== 5 格式化 === 
- 
-建议使用 xfs 格式,比ext4格式要更优秀。 
- 
-<code bash> 
-mke2fs -t ext4 /dev/datavg/datalv 
-mkfs.ext4 /dev/datavg/datalv 
-mkfs.xfs /dev/datavg/datalv #也行 
-</code> 
- 
-=== 6 挂载 === 
- 
-<code bash> 
-mkdir /home/mongosnap 
-mount /dev/datavg/datalv /home/ssd 
-</code> 
- 
-如果要开机就挂载 
- 
-<code bash> 
-vim /etc/fstab 
-# 加入一下一行 
-/dev/mapper/datavg-datalv /home/ssd ext4 defauts 0 0 
-# 重启后查看是否已经挂载。 
-$> df -Th 
-/dev/mapper/datavg-datalv ext4   30G   45M   28G   1% /home/mongosnap 
-</code> 
- 
-也可以设置完 ''fstab'' 文件后用 ''<color #7092be>mount -a</color>'' 命令看看是否挂载成功。 
-=== 7 使用 LVM 创建快照 snapshot ===  
-创建快照卷(([[https://qastack.cn/ubuntu/424225/setting-up-lvm-snapshot-as-a-backup-restore-point-in-ubuntu|将LVM快照设置为ubuntu中的备份/还原点]])) 
- 
-<code bash> 
-vim /etc/fstab 
-# lvcreate -L 100M -n mdb-snap -s /dev/datavg/datalv 
-lvcreate -l 100%FREE -n mdb-snap -s /dev/datavg/datalv 
-# Logical volume "mdb-snap" created. 
-lvcreate -l 100%FREE -n mdb-snap -p r -s /dev/datavg/datalv 
-</code> 
- 
-<color #c3c3c3>参数说明\\ 
--s: snapshot 创建快照\\ 
-对 datavg 下面的逻辑卷 datalv 进行快照,快照名称mb-snap</color> 
- 
-查看结果 
- 
-<code bash> 
-$> lvs 
-  LV       VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert 
-  datalv   datavg owi-aos--- <23.44g 
-  mdb-snap datavg swi-a-s---  <6.56g      datalv 0.72 
-$> lvscan 
-  ACTIVE   Original '/dev/datavg/datalv' [<23.44 GiB] inherit 
-  ACTIVE   Snapshot '/dev/datavg/mdb-snap' [<6.56 GiB] inherit 
-</code> 
- 
-<color #c3c3c3>显示 datalv 是原始卷 'Original',MdB-snap 是快照卷 Snapshot</color> 挂载快照卷到文件系统,进行查看。 
- 
-<code bash> 
-mkdir /home/mdb-snap 
-mount -o ro /dev/datavg/mdb-snap /home/mdb-snap/ 
-# xfs 格式的挂载要用参数 -o nouuid 
-mount -o nouuid,ro /dev/datavg/mdb-snap /home/mdb-snap 
-</code> 
- 
-<color #c3c3c3>-o ro : 使用只读的方式将快照卷挂载到 /home/mb-01\\ 
-防止快照卷中的数据被破坏</color> 
- 
-<note tip>快照卷与原卷必须在同一个VG里头。快照卷无需与原卷一样大,10%就OK</note> 
- 
-日常维护时需要的脚本 
- 
-<file sh dosnapshot.sh> 
-#!/bin/bash 
-# db.fsyncLock() 
-umount /dev/datavg/mdb-snap 
-lvremove -f /dev/datavg/mdb-snap 
-lvcreate -l 100%FREE -n mdb-snap -s /dev/datavg/datalv 
-# db.fsyncUnlock(); # 先解锁,然后慢慢备份 
-# umount /dev/datavg/mdb-snap 
-# dd if=/dev/datavg/mdb-snap | gzip> /home/mongobackup/mdb-snap`date +%F`.gz 
-mount -o nouuid,ro /dev/datavg/mdb-snap /home/mdb-snap # 只读 
-tar -czf /home/mongobackup/`date +%F`_mongo_all.tar.gz /home/mb-snap 
-</file> 
- 
-更高效的恢复数据方式为。将快照文件恢复到逻辑卷,然后删除掉自己。 <color #7092be>lvconvert –merge /dev/datavg/mdb-snap</color> 
- 
-{{tag>database mongo 文件系统}} 
- 
- 
-===== 数据库迁移 ===== 
- 
-参考文章 [[https://zhuanlan.zhihu.com/p/113645698|mongo复制data文件迁移数据出错解决方案]] 
- 
-查看文件夹信息 ''ls -l'' 
-<code> 
- 
-ls -l /var/lib #得出以下信息 
-drwxr-xr-x  4 mongodb   mongodb   4096 Jul 15 15:01 mongodb 
-</code> 
- 
-//<color #c3c3c3>第一个字符表示文件的类型,- 表示这是一个普通文件;d表示这是一个文件夹。 接下来的9个字符表示,三种用户的读、写、运行的权限。如第一行 rwxr-xr-x,表示文件所有者有r (读)、w(写)、x(运行)的权限;属组有 读权限 、没有写权限,有运行权限;其他人有 读权限 、没有写权限,有运行权限。 第二个数字表示文件的连接 和书。 第三个和第四个分别表示文件的属主和属组。 最后分别是文件大小、最后修改日期和时间、文件的路径。 Lesen = 4 Schreiben = 2 Ausführen = 1 chmod -R 751</color>// 
- 
-复制数据内容到新的目录: ''cp -R /var/lib/mongodb/* /home/mongodata/data'' 
- 
-检查文件数目是否出错 ''ls | wc -l'' 
- 
-更改文件所有人以及权限,同样操作日志文件 ''/var/log/mongodb/mongod.log'' 
- 
-<code bash> 
-chown -R mongodb:mongodb /home/mongodata/data 
-# drwxr-xr-x 5 mongodb mongodb 4096 Jul 15 15:09 mongodata 
-  drwxr-xr-x 4 mongodb mongodb 4096 Jul 15 15:18 mongodb 
-# 权限好像不需要更改 
-chmod -R 777 /home/mongodata 
-</code> 
- 
-如果启动失败,查看一下sock文件的权限 
- 
-<code bash> 
-ls - lat /tmp/mongodb-2222.sock # 2222 为设定的数据库端口 
-sudo chown mongodb:mongodb /tmp/mongodb-2222.sock 
-</code> 
- 
-===== 优化与管理 ===== 
- 
  
it/database/mongo_install.1627191133.txt.gz · 最后更改: 2021-07-25 05:32 由 goldentianya
回到顶部
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0