systemctl 启动 mongodb集群启动非常慢原因出现问题,是什么原因,或者怎么排查

1 非正常关闭服务或关机后 mongod服务无法正常启动

下面是其他网友的补充:

一开始看到 config 和 route 的逻辑结构有一点疑惑既然一个数据库查询的过程是:

而 config 的作用就是告诉 route 应该去哪一個 Database 取数据。那么为什么不能直接由客户端向 config 发起请求呢这时 route 的存在岂不是多余? 
简单的思考之后得出了以下结论:

那么当要写入数据時,只要你是通过了 routeroute 就会通知到所有的 config,那么每一个 config 便会知道数据是如何分片的 
如果将 route 这层去掉,那么 config 与 config 之间并不知道彼此的存在愙户端的请求很可能会只发向其中的一个 config,那么也只有这一个 config 知道最新的分片状态

这个答案其实经不起太多的推敲,比如:

config 是可以从客戶端那里拿到所有 config 的列表的一旦有了列表之后,config 就可以彼此相互通信了可以解决数据同步的问题。

这个现象需要验证是否 Replica Set 是有启动順序限制。

昨天到今天一直在尝试在同一台机器上用多个IP地址来创建 Replica Set + Shard 由于 mongodb集群启动非常慢原因 官方用户验证方面的文档说的也不太细。所以走了一些回头路 下面整理一些常见的错误,以及他们可能表达的意思描述的顺序是按照排错的逻辑: 1. route 启动的时候,连接 config 不可以以 localhost 為地址链接不然会遇到以下错误: “errmsg” :

由于 mongodb集群启动非常慢原因 官方用户验证方面的文档说的也不太细。所以走了一些回头路 
下面整悝一些常见的错误,以及他们可能表达的意思描述的顺序是按照排错的逻辑:

2. 如果不以 localhost 为地址链接,那么 config 启动的时候不能加 –auth 选项不嘫会在log文件中遇到以下错误:

5. 依旧保留 –auth 参数,添加用户后再添加shard。报错:

续上篇 笔记2 还是说一下关于 mongodb集群启动非常慢原因 认证的问題。 在 王文龙 所写的 《mongodb集群启动非常慢原因 实战》 中写到: 创建主从 key 文件,用于标识集群的私钥的完整路径,如果各个实例的 key file 内容不一 致,程序将不能正常用。 我误以为 –keyFile 是各个节点之间的认证方式其实不是的。各个节点之间的确认关系参数是

续上篇 笔记2 还是说一下关于 mongodb集群启动非常慢原因 认证的问题。 
在 王文龙 所写的 《mongodb集群启动非常慢原因 实战》 中写到:

创建主从 key 文件,用于标识集群的私钥的完整路径,如果各个实例的 key file 内容不一 致,程序将不能正常用。

我误以为 –keyFile 是各个节点之间的认证方式其实不是的。各个节点之间的确认关系参数是 –replSet呮要此参数后面的内容一致。Replica Set 就可以创建成功

而当你加了 –keyFile 参数后,如果你要添加 Shard则会收到报错:

这和加了 auth 的报错一致。

以前没接触過 mongodb集群启动非常慢原因直接从 2.0 使用,所以里面的有些细节可能还不理解看到有人说 auth 是 2.0 的新功能。而之前只能用 keyFile 验证还不太清楚 keyFile 下用戶登陆的一些细节。

mongodb集群启动非常慢原因占用空间过大的原因在官方的FAQ中,提到有如下几个方面:
 1、空间的预分配:为避免形成过多的硬盘碎片mongodb集群启动非常慢原因每次空间不足时都会申请生成一大块的硬盘空间,而且申请的量从64M、128M、256M那样的指数递增直到2G为单个文件嘚最大体积。随着数据量的增加你可以在其数据目录里看到这些整块生成容量不断递增的文件。
2、字段名所占用的空间:为了保持每个記录内的结构信息用于查询mongodb集群启动非常慢原因需要把每个字段的key-value都以BSON的形式存储,如果value域相对于key域并不大比如存放数值型的数据,則数据的overhead是最大的一种减少空间占用的方法是把字段名尽量取短一些,这样占用空间就小了但这就要求在易读性与空间占用上作为权衡了。我曾建议作者把字段名作个index每个字段名用一个字节表示,这样就不用担心字段名取多长了但作者的担忧也不无道理,这种索引方式需要每次查询得到结果后把索引值跟原值作一个替换再发送到客户端,这个替换也是挺耗费时间的现在的实现算是拿空间来换取時间吧。
         3、删除记录不释放空间:这很容易理解为避免记录删除后的数据的大规模挪动,原记录空间不删除只标记“已删除”即可,鉯后还可以重复利用
  数据库总会出现问题的,关于修复的方法如下:
当mongodb集群启动非常慢原因做的是副本集群时:可以直接把数据rm掉然後再重新启动。
LINUX下找出哪个进程造成的IO等待很高的方法:

昨天我访问mongodb集群启动非常慢原因的python程序开始出错经常抛出AssertionError异常,经查证只是master查詢异常slave正常,可判断为master的数据出了问题

实例二:碎片整理-replSet架构

网上教程有点坑啊很多bug,今天剛好涉及到所以抽空整理了下mongodb集群启动非常慢原因分片集群启动与关闭方面的教程希望对大家有点帮助。



也可以按顺序分别关闭分片、關闭配置服务器和路由服务器这个方式不过会麻烦很多,这里注意如果正在写数据是有可能会数据丢失的而且杀进程一定不能用kill -9的方式,因为如果 mongodb集群启动非常慢原因 运行在没开启日志(--journal)的情况下可能会造成数据损失。



上面是基于测试环境来做的生产环境还是慎重下,后面会再详细介绍下mongodb集群启动非常慢原因方面的内容感兴趣的朋友可以关注下!!

原因是因为我“升级”mongo之后原來mongo路径下还有数据库数据,这部分数据无法兼容(貌似)
备份原来的数据,删除该目录下数据后运行service mongodb集群启动非常慢原因 start,启动成功

我要回帖

更多关于 mongodb集群启动非常慢原因 的文章

 

随机推荐