WiredTiger

MongoDB之Too many open files

非 Y 不嫁゛ 提交于 2020-11-11 04:48:28
在Linux下有时会遇到cannot open /dev/urandom Too many open files的问题。其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默认是65535)。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈,对于MongoDB来说,默认的文件打开数一般是不够的,需要使用ulimit去进行设置,以下是常见的MongoDB的最大打开文件数不足的报错。 -server: log pre-alloc server error: Too many open files 2019-01-31T22:18:26.744+0800 E STORAGE [thread1] WiredTiger (24) [1548944306:744242][5485:0x7f03b00ea700], log-server: log server error: Too many open files 2019-01-31T22:18:27.518+0800 E - [conn51828] cannot open /dev/urandom Too many open files 1. ulimt命令用途 1. 利用ulimit命令可以对资源的可用性进行控,Linux系统打开文件最大数量限制(进程打开的最大文件句柄数设置)。 2. -H选项和

数据库怎么选择?| 文末送书

不问归期 提交于 2020-10-02 22:15:44
武培轩 推荐搜索 MySQLRedisElasticsearchJavaSpring Boot数据结构 所有数据库管理系统的主要工作都是「可靠地存储数据」并使其对用户可用。我们使用数据库作为数据的主要来源,帮助我们在应用程序的不同部分之间共享数据。我们使用数据库,而不是在每次创建新应用程序时寻找存储和检索信息的方法,也不是每次都去发明一种组织数据的新方法。这样一来,我们就可以专注于应用程序逻辑而不是基础设施。 数据库是模块化的系统,由多个部分组成:接受请求的传输层、决定以最高效方式运行查询的查询处理器、执行操作的执行引擎以及存储引擎。 存储引擎(或数据库引擎)是数据库的一个软件组件,它负责在内存和磁盘上存储、检索和管理数据,而设计它的目的是长久保存每个节点的数据[REED78]。数据库可以响应复杂的查询,存储引擎则会更细粒度地看待数据并提供一组简单的数据操作API,允许用户创建、更新、删除和检索数据记录。从某个角度来看,数据库是构建在存储引擎之上的应用程序,它提供了表结构(schema)、查询语言、索引、事务和许多其他有用的特性。 为了获得灵活性,键和值都可以是没有预设格式的任意字节序列。它们的排序和表示语义是在更高级别的子系统中定义的。例如,你可以在一个表中使用int32(32位整数)作为键,而在另一个表中使用ascii(ASCII字符串);从存储引擎的角度来看

修改副本集成员的oplog大小

邮差的信 提交于 2020-08-15 23:47:29
在Mongodb3.6版本开始,可以使用命令[ replSetResizeOplog ]来修改副本集成员的oplog大小, 从secondry节点开始修改,然后依次到主节点(只能在运行了WiredTiger存储引擎的副本集成员上执行)。 如果副本集强制执行身份验证,则必须以具有修改本地数据库权限的用户身份进行身份验证,例如clusterManager或clusterAdmin角色。 我们可以通过命令查看oplog的大小 rs1:PRIMARY> use local switched to db local rs1:PRIMARY> db.oplog.rs.stats().maxSize NumberLong("16777216000") rs1:PRIMARY> maxSize字段以字节为单位显示集合大小(上边显示大概16GB) 需要注意的是我们更改oplog大小,运行replSetResizeOplog将所需的大小(以兆字节为单位)作为大小参数传递。指定的大小必须大于990,即990兆字节,也就是修改时单位是MB。 我们将secondry节点的oplog 20G修改为50G; rs1:SECONDARY> rs.slaveOk() rs1:SECONDARY> use local switched to db local rs1:SECONDARY> db.oplog.rs

Mongo Spark Connector中的分区器(一)

心已入冬 提交于 2020-08-13 08:43:17
  MongoSpark为入口类,调用MongoSpark.load,该方法返回一个MongoRDD类对象,Mongo Spark Connector框架本质上就是一个大号的自定义RDD,加了些自定义配置、适配几种分区器规则、Sql的数据封装等等,个人认为相对核心的也就是分区器的规则实现;弄清楚了其分析器也就搞明白了Mongo Spark Connector 。 当前实现的分区器(Partitioner):    MongoPaginateByCountPartitioner 基于总数的分页分区器    MongoPaginateBySizePartitioner 基于大小的分页分区器    MongoSamplePartitioner 基于采样的分区器    MongoShardedPartitioner 基于分片的分区器    MongoSinglePartitioner 单分区分区器    MongoSplitVectorPartitioner 基于分割向量的分区器   这里根据源码简单介绍MongoSinglePartitioner与MongoSamplePartitioner分区器,这或许就是用得最多的两种分区器,他的默认分区器(DefaultMongoPartitioner)就是MongoSamplePartitioner分区器; 该分区默认的PartitionKey为

MongoDB 事务,复制和分片的关系

蓝咒 提交于 2020-08-11 05:27:01
摘要: 本文尝试对Mongo的复制和分布式事务的原理进行描述,在必要的地方,对实现的正确性进行论证,希望能为MongoDB内核爱好者提供一些参考。 1.前言 MongoDB基于wiredTiger提供的泛化SI的功能,重构了readHistory(readMajority)的能力 基于wiredTiger提供的AllCommittedTimestamp API,重构了前缀一致的主从复制(Prefix-Consistent-Replication) 引入混合逻辑时钟(HLC),每个节点(Mongos/Mongod)的逻辑时钟维持在接近的值,基于此实现ChangeStream, 结合HLC与CLOCK-SI,实现分布式事务, HLC 和泛化SI,CLOCK-SI两篇Paper可以作为理解MongoDB的设计的理论参考(这里并没有说MongoDB是Paper的实现)。 本文尝试对Mongo的复制和分布式事务的原理进行描述,在必要的地方,对实现的正确性进行论证,希望能为MongoDB内核爱好者提供一些参考。 2.MongoDB副本集事务介绍 MongoDB 副本集的事务 MongoDB副本集的复制是基于raft协议,相比于Paxos,raft协议实现简单,但是raft协议只支持 single-master ,对应的,MongoDB的副本集是主从架构,而且只有 主节点支持写入操作

Percona MongoDB HotBackup热备份工具

只愿长相守 提交于 2020-08-08 14:09:13
Percona MongoDB HotBackup热备份工具 前言: 目前官方MongoDB社区版是不支持Hot Backup热备份的,我们只能通过mongodump等逻辑备份工具导出bson文件,再mongorestore导入,类似MySQL的mysqldump工具。 在备份副本集时,我们需指定--oplog选项记录备份间产生的增量数据,类似mysqldump --single-transaction --master-data=2(做一致性快照并记录当前的binlog点)。 对副本集的成员恢复,需先切成单机版,mongorestore必须指定--oplogReplay选项,以恢复到某一时刻的快照,最后还需填充oplog(增量数据以哪个位置点开始断点续传),mongorestore -d local -c oplog.rs dump/oplog.bson,最后一步再切为副本集成员重新启动。 中小型数据库备份起来简单快捷,如果过TB级的数据量,那将是痛苦的。 如果你的oplog设置过小,很有可能在备份恢复这段时间,oplog被覆盖重写,那么你将永远无法加入副本集集群里。 概述: Percona MongoDB3.2版本默认开始支持WiredTiger引擎的在线热备份,解决了官方版只能通过mongodump逻辑备份这一缺陷。 参考文献: https://www.percona.com

MongoDB副本集replica set (二)--副本集环境搭建

不想你离开。 提交于 2020-08-05 18:59:41
(一)主机信息 操作系统版本:centos7 64-bit 数据库版本 :MongoDB 4.2 社区版 ip hostname 192.168.10.41 mongoserver1 192.168.10.42 mongoserver2 192.168.10.43 mongoserver3 (二)副本集搭建过程 首先需要在3台服务器上安装MongoDB软件,安装过程见: https://www.cnblogs.com/lijiaman/p/12983589.html 。安装完成之后,即可进行后续的配置,具体操作如下: (1)在一台机器上创建keyfile openssl rand -base64 756 > /mongo/mongo- keyfile chmod 400 /mongo/mongo-keyfile (2)拷贝feyfile到所有节点 scp /mongo/mongo-keyfile root@ 192.168 . 10.42 :/mongo/ scp /mongo/mongo-keyfile root@ 192.168 . 10.43 :/mongo/ (3)以启用身份验证的方式开启所有节点 这里将所有参数设置到配置文件里面,方便管理,配置文件如下: [root@mongodbserver1 mongo]# cat /etc/ mongod.conf # mongod

mongodb启用密码认证连接

帅比萌擦擦* 提交于 2020-08-05 04:01:15
先无认证方式启动mongodb数据库 /Users/zlp/develop/mongodb/4.2.1/bin/mongod -f config.yaml > /dev/null 2>&1 & config.yaml systemLog: destination: file path: '/Users/zlp/develop/mongodb/logs/mongo.log' net: port: 37017 bindIp: 127.0.0.1 storage: engine: wiredTiger dbPath: /Users/zlp/develop/mongodb/db421 security: authorization: disabled 设置管理员账号密码 1)连接客户端 > /Users/zlp/develop/mongodb/4.2.1/bin/mongo --port 37017 2)选择admin数据库 Enterprise > use admin 3)创建管理员用户密码、角色、权限等信息 Enterprise > db.createUser({user:"admin", pwd:"12345", roles:[{role:"userAdminAnyDatabase", db:"admin"},{role:"backup", db:"admin"}, {role:

【赵强老师】MongoDB的inMemory存储引擎

橙三吉。 提交于 2020-08-05 01:47:01
一、MongoDB的存储引擎概述 存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引擎(Storage Engine),MongoDB支持的存储引擎有:WiredTiger,MMAPv1和In-Memory。从MongoDB 3.2 版本开始,WiredTiger成为MongDB默认的Storage Engine,用于将数据持久化存储到硬盘文件中。目前,MongoDB支持以下三种存储引擎: WiredTiger :WiredTiger提供文档级别(Document-Level)的并发控制,检查点(CheckPoint),数据压缩和本地数据加密( Native Encryption)等功能。从MongoDB 3.2 版本开始,WiredTiger成为MongDB默认的Storage Engine。 MMAPv1 :在MongoDB 3.2版本前,MMAPv1是默认的数据存储引擎。 In-Memory Storage Engine :In-Memory存储引擎将数据存储在内存中,除了少量的元数据和诊断(Diagnostic)日志,In-Memory存储引擎不会维护任何存储在硬盘上的数据(On-Disk Data),避免Disk的IO操作

centos7下安装mongodb

拈花ヽ惹草 提交于 2020-07-26 07:57:11
centos7下安装mongodb chenlongjs 2020-03-03 20:14:47 746 收藏 2 分类专栏: 个人问题总结 服役器配置 版权 mongodb介绍 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo几乎可以实现类似关系数据库单表查询的绝大部分功能,还支持对数据建立索引。 下载解压mongodb 下载压缩包 我这里选择的是先在官网下载好,然后复制到服务器下 我下载的是 mongodb-linux-x86_64-rhel70-4.0.10.tgz 1)定位到 usr 目录 cd /usr1 2)新建mongodb目录 然后再把下载好的压缩包复制到这里来,我用的是winSCP这个软件直接拖拉过来的 mkdir -m 777 mongodb12 3)解压到 usr/mongodb 目录下,并重命名文件夹 tar zxvf mongodb-linux-x86_64-rhel70-4.0.10.tgz1 在这里插入图片描述 4)重命名文件夹 mv mongodb-linux-x86_64-rhel70-4.0.10 mongodb-4.0.101 配置环境变量和初始化操作 1)配置环境变量 vi /etc