mongodb系列之-解读journal

本文介绍了MongoDB中的journal功能,该功能主要用于数据故障恢复和持久化数据。从1.8版本开始引入,并在2.0版本成为默认开启的功能。通过journal可以实现批量提交,提高写入性能,同时确保数据在系统非正常关闭时的最大限度保护。

      mongodb的journal,简单来说就是用于数据故障恢复和持久化数据的,它以日志方式来记录。从1.8版本开始有此功能,2.0开始默认打开此功能,但32位的系统是默认关闭的。

    journal除了故障恢复的作用之外,还可以提高写入的性能,批量提交(batch-commit),journal一般默认100ms刷新一次,在这个过程中,所有的写入都可以一次提交,是单事务的,全部成功或者全部失败,刷新时间,可以更改,范围是2-300ms。

       当系统非正常情况下突然挂掉,再次启动时候mongodb就会从journal日志中恢复数据,而确保数据不丢失,最多丢失s级别的数据(个人臆想),具体为什么,看看一下便知:

    使用db.serverStatus()可以查看状态:

   

dur:{
		commits:30,
		journaledMB:0.270336,
		writeToDataFilesMB:0.329578,
		compression:0.7986268873651776,
		commotsInWriteLock:0,
		earlyCommits:0,
		timeMs:{
			dt:3077,
			prepLogBuffer:0,
			writeToJournal:4,
			writeToDataFiles:3,
			remapPrivateView:3
		}
}

dur.timeMS.prepLogBuffer:从privateView映射到Logbuffer的时间。

 

dur.timeMS.writeToJournal:从logbuffer刷新到journalfile 的时间。
dur.timeMS.writeToDataFiles:从journalbuffer映射到MMF,然后从MMF刷新到磁盘的时间,文件系统和磁盘会影响写入性能。 
dur.timeMS.remapPrivateView:重新映射数据到PrivateView的时间,越小性能越好。

所以说开启journal后会使用更多内存,因为journal会另外使用一块内存区域(即:PrivateView)

 

再来看看开启journal后,在mongodb上读写数据和读数据的一个大致流程(画的很粗略):

 


 

link see:http://blog.mongodb.org/post/33700094220/how-mongodbs-journaling-works

 

The last step is that mongod remaps the shared view to the private view. This prevents the private view from getting too “dirty” (having too many changes from the shared view it was mapped from).

 

 从而我们可以得知,如果服务器突然宕机,那么丢失的数据也会很少,因为默认100ms journal数据就会被sync到文件中。

 



 一般来说,对于重要的数据来说,我个人建议开启此功能,以免丢失

 

 

 

 

 

  • 大小: 22.6 KB
<think>我们正在尝试安装MongoDB的特定版本5.0.2。在Ubuntu系统中,MongoDB提供了自己的仓库,我们可以通过添加该仓库并指定版本进行安装。 步骤如下: 1. 导入MongoDB的GPG密钥 2. 为MongoDB创建一个list文件(在/etc/apt/sources.list.d/目录下) 3. 更新本地包数据库 4. 安装指定版本的MongoDB包 但是,注意:MongoDB的版本号在包名中通常只包含主版本和次版本(如5.0),而不会包含修订版本(如5.0.2)。实际上,安装时我们指定主次版本,然后通过更新来获取最新的修订版本。但我们可以指定安装5.0.2版本,如果该版本在仓库中存在的话。 然而,通常情况下,我们安装的是5.0版本,然后系统会自动安装该系列的最新修订版(包括5.0.2)。但如果我们必须确保安装的是5.0.2,那么我们需要明确指定每个组件的版本号。 根据MongoDB的安装文档,我们可以这样安装指定版本: 首先,添加MongoDB的仓库。这里我们使用Ubuntu 20.04(focal)作为例子,如果你使用的是其他版本,请替换`focal`为相应的代号。 步骤: 1. 导入公钥 wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - 2. 创建list文件 echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list 3. 更新包列表 sudo apt update 4. 安装指定版本:我们可以使用以下命令安装特定版本(例如5.0.2): sudo apt install mongodb-org=5.0.2 mongodb-org-database=5.0.2 mongodb-org-server=5.0.2 mongodb-org-shell=5.0.2 mongodb-org-mongos=5.0.2 mongodb-org-tools=5.0.2 注意:每个组件都需要单独指定版本号,并且版本号必须完全匹配。 但是,请注意:在安装时,可能会遇到依赖问题,因为每个组件的依赖可能要求相同的版本。因此,我们通常将所有的组件都指定为相同的版本。 另外,为了防止自动更新(因为MongoDB建议手动升级),我们可以将MongoDB的包标记为保留,这样就不会在系统更新时自动升级了: sudo apt-mark hold mongodb-org mongodb-org-database mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools 因此,完整的命令序列如下: 注意:请确保你使用的Ubuntu版本与MongoDB仓库支持的版本一致。这里以Ubuntu 20.04 (focal)为例。 如果系统不是focal,请替换为正确的代号(如Ubuntu 18.04是bionic,Ubuntu 22.04是jammy)。但请注意,MongoDB 5.0支持Ubuntu 20.04和18.04,不支持22.04(因为5.0发布时22.04还未发布)。如果使用22.04,可能需要使用其他方法。 下面给出完整的命令:</think>要在 Ubuntu 上安装 MongoDB 5.0.2 的特定版本,需要执行以下步骤: ### 完整安装步骤: ```bash # 1. 导入 MongoDB 公钥 wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - # 2. 创建 MongoDB 5.0 的源列表文件 echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list # 3. 更新软件包索引 sudo apt update # 4. 安装指定版本 (5.0.2) sudo apt install -y \ mongodb-org=5.0.2 \ mongodb-org-database=5.0.2 \ mongodb-org-server=5.0.2 \ mongodb-org-shell=5.0.2 \ mongodb-org-mongos=5.0.2 \ mongodb-org-tools=5.0.2 # 5. 防止自动更新 sudo apt-mark hold mongodb-org* ``` ### 关键点解释: 1. **版本锁定**: - 使用 `=` 指定确切版本号(`5.0.2`) - 必须为所有组件指定相同版本 2. **apt-mark hold**: - 防止系统自动更新 MongoDB - 保持版本固定在 5.0.2 3. **版本兼容性**: - MongoDB 5.0 支持 Ubuntu 18.04/20.04/22.04 - `$(lsb_release -cs)` 自动获取当前系统代号 ### 验证安装: ```bash # 查看安装版本 mongod --version # 应显示:db version v5.0.2 # 启动服务 sudo systemctl start mongod # 检查运行状态 sudo systemctl status mongod ``` ### 常见问题处理: 1. **依赖错误**: ```bash # 先尝试修复依赖 sudo apt --fix-broken install # 清除无效包 sudo apt autoclean ``` 2. **版本不可用**: - 确保源地址正确:`https://repo.mongodb.org/apt/ubuntu` - 检查[官方安装文档](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/) 3. **升级现有版本**: ```bash # 先卸载旧版 sudo apt purge mongodb-org* sudo rm -r /var/log/mongodb /var/lib/mongodb ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值