两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 |
it:database:mongo_install [2021-07-22 19:24] – [主机设定] goldentianya | it:database:mongo_install [2024-05-25 15:42] (当前版本) – [MongoDB 架构] goldentianya |
---|
====== 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 |
| |
===== 安全 ===== | ===== 安全 ===== |
/usr/bin/mongod -f /home/mongodb/33721/etc/mongod.conf | /usr/bin/mongod -f /home/mongodb/33721/etc/mongod.conf |
db.shutdownServer({force: <boolean>,timeoutSecs: <int>}) #关闭服务, 这种方式启动的案例 systemctl 不认识 | db.shutdownServer({force: <boolean>,timeoutSecs: <int>}) #关闭服务, 这种方式启动的案例 systemctl 不认识 |
| |
| |
</code> | </code> |
| |
| 此文章提及到主节点[[https://www.jianshu.com/p/73b5ad930f47|人工降级]]为副本集。 |
===== 数据备份 ===== | ===== 数据备份 ===== |
| |
| |
<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> |
| |
==== 压缩文件备份 ==== | ==== 压缩文件备份 ==== |
| |
将目录压缩到一个文件当中 ''<color #7092be>tar -czf /home/ubuntu/Backup/`date +%F`_mongo_all.tar.gz /home/mongodata/data/</color>'' \\ 解压到原来的目录 ''<color #7092be>tar -xzf /home/mongobackup/2021-07-17_mongo_all.tar.gz -C /</color>'' | 将目录压缩到一个文件当中 <color #ff7f27>''%%tar -czf /home/ubuntu/Backup/`date +%F`_mongo_all.tar.gz /home/ssd/mongodb%%''</color> |
| |
| 解压到原来的目录 <color #ff7f27>''%%tar -xzf /home/ubuntu/Backup/2021-07-17_mongo_all.tar.gz -C /%%''</color> |
| |
:!: //解压的参数写根目录就可以了,它会按照压缩时的目录解压// 。 | :!: //解压的参数写根目录就可以了,它会按照压缩时的目录解压// 。 |
PV VG Fmt Attr PSize PFree | PV VG Fmt Attr PSize PFree |
/dev/sdc1 lvm2 --- <30.00g <30.00g | /dev/sdc1 lvm2 --- <30.00g <30.00g |
| |
| |
</code> | </code> |
| |
PV /dev/sdc1 VG datavg lvm2 [<30.00 GiB / <30.00 GiB free] | 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 ] | Total: 1 [<30.00 GiB] / in use: 1 [<30.00 GiB] / in no VG: 0 [0 ] |
| |
| |
</code> | </code> |
| |
vgreduce datavg /dev/sdd # 减少 | vgreduce datavg /dev/sdd # 减少 |
pvmove /dev/sdd [/dev/sdc] # 将物理卷 sdd 的数据导出到 /dev/sdc,也可以不添加第二个参数 | pvmove /dev/sdd [/dev/sdc] # 将物理卷 sdd 的数据导出到 /dev/sdc,也可以不添加第二个参数 |
| |
| |
</code> | </code> |
| |
=== 4 创建逻辑卷 === | === 4 创建逻辑卷 === |
| |
[[https://blog.csdn.net/debimeng/article/details/72470030|lvcreate 解释]] 创建一个名为 '"mongolv" 的逻辑卷 | 创建一个名为 '"mongolv" 的逻辑卷(([[https://blog.csdn.net/debimeng/article/details/72470030|lvcreate 解释]])) |
| |
<code bash> | <code bash> |
# lvcreate mongovg -L 5G -n mongolv #5G的卷 | # lvcreate mongovg -L 5G -n mongolv #5G的卷 |
lvcreate -l 102400 -n datalv datavg # 使用6000PE,大概 80%左右的容量 | lvcreate -l 102400 -n datalv datavg # 使用6000PE,大概 80%左右的容量 |
| |
| |
</code> | </code> |
| |
$> lvscan | $> lvscan |
ACTIVE '/dev/datavg/datalv' [<23.44 GiB] inherit | ACTIVE '/dev/datavg/datalv' [<23.44 GiB] inherit |
| |
| |
</code> | </code> |
| |
lvextend -l 15 /dev/datavg/datalv # 最终到15个LE | lvextend -l 15 /dev/datavg/datalv # 最终到15个LE |
lvextend -l +15 /dev/datavg/datalv # 加15个LE | lvextend -l +15 /dev/datavg/datalv # 加15个LE |
| |
| |
</code> | </code> |
| |
# ext4 格式 | # ext4 格式 |
resize2fs /dev/datavg/datalv | resize2fs /dev/datavg/datalv |
| |
| |
</code> | </code> |
| |
mkfs.ext4 /dev/datavg/datalv | mkfs.ext4 /dev/datavg/datalv |
mkfs.xfs /dev/datavg/datalv #也行 | mkfs.xfs /dev/datavg/datalv #也行 |
| |
| |
</code> | </code> |
| |
mkdir /home/mongosnap | mkdir /home/mongosnap |
mount /dev/datavg/datalv /home/ssd | mount /dev/datavg/datalv /home/ssd |
| |
| |
</code> | </code> |
| |
$> df -Th | $> df -Th |
/dev/mapper/datavg-datalv ext4 30G 45M 28G 1% /home/mongosnap | /dev/mapper/datavg-datalv ext4 30G 45M 28G 1% /home/mongosnap |
| |
| |
</code> | </code> |
| |
也可以设置完 ''fstab'' 文件后用 ''<color #7092be>mount -a</color>'' 命令看看是否挂载成功。 | 也可以设置完 ''fstab'' 文件后用 ''<color #7092be>mount -a</color>'' 命令看看是否挂载成功。 |
=== 7 使用 LVM 创建快照 snapshot === | === 7 使用 LVM 创建快照 snapshot === |
| 创建快照卷(([[https://qastack.cn/ubuntu/424225/setting-up-lvm-snapshot-as-a-backup-restore-point-in-ubuntu|将LVM快照设置为ubuntu中的备份/还原点]])) |
[[https://qastack.cn/ubuntu/424225/setting-up-lvm-snapshot-as-a-backup-restore-point-in-ubuntu|参考文章]] | |
| |
<code bash> | <code bash> |
# Logical volume "mdb-snap" created. | # Logical volume "mdb-snap" created. |
lvcreate -l 100%FREE -n mdb-snap -p r -s /dev/datavg/datalv | lvcreate -l 100%FREE -n mdb-snap -p r -s /dev/datavg/datalv |
| |
| |
</code> | </code> |
| |
ACTIVE Original '/dev/datavg/datalv' [<23.44 GiB] inherit | ACTIVE Original '/dev/datavg/datalv' [<23.44 GiB] inherit |
ACTIVE Snapshot '/dev/datavg/mdb-snap' [<6.56 GiB] inherit | ACTIVE Snapshot '/dev/datavg/mdb-snap' [<6.56 GiB] inherit |
| |
| |
</code> | </code> |
| |
# xfs 格式的挂载要用参数 -o nouuid | # xfs 格式的挂载要用参数 -o nouuid |
mount -o nouuid,ro /dev/datavg/mdb-snap /home/mdb-snap | mount -o nouuid,ro /dev/datavg/mdb-snap /home/mdb-snap |
| |
| |
</code> | </code> |
| |
<file sh dosnapshot.sh> | <file sh dosnapshot.sh> |
#!/bin/bash | #!/bin/bash |
| |
# db.fsyncLock() | # db.fsyncLock() |
umount /dev/datavg/mdb-snap | umount /dev/datavg/mdb-snap |
# umount /dev/datavg/mdb-snap | # umount /dev/datavg/mdb-snap |
# dd if=/dev/datavg/mdb-snap | gzip> /home/mongobackup/mdb-snap`date +%F`.gz | # 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 # 只读 | mount -o nouuid,ro /dev/datavg/mdb-snap /home/mdb-snap # 只读 |
tar -czf /home/mongobackup/`date +%F`_mongo_all.tar.gz /home/mb-snap | tar -czf /home/mongobackup/`date +%F`_mongo_all.tar.gz /home/mb-snap |
| |
| |
</file> | </file> |
| |
ls -l /var/lib #得出以下信息 | ls -l /var/lib #得出以下信息 |
drwxr-xr-x 4 mongodb mongodb 4096 Jul 15 15:01 mongodb | drwxr-xr-x 4 mongodb mongodb 4096 Jul 15 15:01 mongodb |
| |
</code> | </code> |
| |
# 权限好像不需要更改 | # 权限好像不需要更改 |
chmod -R 777 /home/mongodata | chmod -R 777 /home/mongodata |
| |
| |
</code> | </code> |
| |
ls - lat /tmp/mongodb-2222.sock # 2222 为设定的数据库端口 | ls - lat /tmp/mongodb-2222.sock # 2222 为设定的数据库端口 |
sudo chown mongodb:mongodb /tmp/mongodb-2222.sock | sudo chown mongodb:mongodb /tmp/mongodb-2222.sock |
| |
| |
</code> | </code> |
| |
===== 优化与管理 ===== | ===== 优化与管理 ===== |
| |
| 限制内存用量 |
| |
| <code> |
| storage: |
| dbPath: /var/lib/mongodb |
| journal: |
| enabled: true |
| # engine: |
| mmapv1: |
| smallFiles: true |
| wiredTiger: |
| engineConfig: |
| configString : cache_size=160M |
| </code> |