热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mongodb安装和维护

基础知识:介绍JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式mongoshellmongoisafullJavaScriptshell,soanyJavaScriptfunction,syntax,orclasscanbeusedintheshell.本文不介绍自动分片的
基础知识:
介绍 JSON JSON(Javascript Object Notation) 是一种轻量级的数据交换格式 mongo shell mongo is a full Javascript shell, so any Javascript function, syntax, or class can be used in the shell. 本文不介绍自动分片的机制和部署.
mongos ,这个程序相当于一个数据库的路由器,可以实现自动分片(auto-sharding) .
replication set的部署安装
Replica Sets 使用 n 个 Mongod 节点,构建具备自动容错转移(auto-failover)、自动恢复(auto-recovery) 的高可用方案
生产环境都必须是replication set模式,因为主从不能保障服务高可用.
至少保证有3个节点(或者2个节点+1个 arbiter. , 一般为2~7个node) 1.安装
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.3.tgz
mkdir $HOME/app
cd app
tar zxvf ../mongodb-linux-x86_64-1.6.5.tgz
ln -s mongodb-linux-x86_64-1.6.5 mongodb
cd
vi .bash_profile ,添加到Path路径.PATH=$HOME/app/mongodb/bin:$PATH:$HOME/bin
2. 配置
source  .bash_profile
创建数据目录,日志目录和配置文件目录,编辑参数文件
cd
mkdir data
mkdir data/db
mkdir data/log
mkdir data/conf
vi /home/mongodb/data/conf/mongodb.cnf
dbpath=/home/mongodb/data/db
logpath=/home/mongodb/data/log/mongodb.log
fork=true
logappend=true
解释:
?dbpath:默认/data/db
?port:默认27017,还有一个http端口28017   (监听端口+1000)
?fork:以daemon方式启动
?logpath:日志路径,增加?logappend,以追加日志的方式,否则每次启动会覆盖旧日志.
?config or  -f :可以用命令行参数也可以使用配置文件.
创建启动脚本
vi  /home/mongodb/start_mongodb.sh
#!/bin/bash
#source $HOME/.bash_profile
BIN_PATH=$HOME/app/mongodb/bin
cd $BIN_PATH
./mongod -f /home/mongodb/data/conf/mongodb.cnf ?rest ?replSet myset
解释:
启动加?rest ,可以在web页面执行一些管理命令.方便我们查看replication set状态.
?replSet  复制集名称
3. 启动mongodb
运行启动脚本,确认服务正常启动
./start_mongodb.sh
检查端口  netstat -tlpn |grep mongo
检查日志 /home/mongodb/data/log/mongodb.log
4. 关闭已经安装好的mongodb节点, 打包/home/mongodb目录到其他节点,解压,然后运行启动脚本.
kill mongod实例进程id
tar czvf mongodb.tar.gz mongodb ?exclude=mongodb/data/db/* ?exclude=mongodb/data/log/*
在其他节点使用start_mongodb.sh启动mongod服务.
5. 配置replciation set
包括主(primary)节点和次要(secondary) ,节点还有其他一些状态: 略
1). 登录要第一个节点(未来做Primary节点的)
mongo
2). >  rs.status()              #会显示“errmsg” : “can’t get local.system.replset ,还没有初始化
3). > rs.initiate()
例子:
> // all at once method > cfg = {
_id : “acme_a”,
members : [
{ _id : 0, host : "sf1.acme.com" },
{ _id : 1, host : "sf2.acme.com" },
{ _id : 2, host : "sf3.acme.com" } ] }
> rs.initiate(cfg)
> rs.status()
—也可以使用简易的方式.全部使用默认值,不建议
rs.initiate()                 #初始化节点,这个节点可以原来存在数据,其他节点必须是空的 以上命令默认把本机的节点加入复制集. 会使用主机名,以后的配置稍繁琐,所有客户端服务器需要在/etc/hosts里添加主机名映射.
如果添加的是内网域名呢? 短连接和长连接的定义一样吗?
4). > rs.status()                #确认已经创建了replication set,已经拥有一个成员
> db.isMaster()              #确认本节点是master
5). 登录其他节点
在每个其他节点/etc/hosts内 添加第一个primary节点主机的主机名.
mongo ?host  primary节点的主机ip
rs.add(“要添加的节点ip”);
6).web界面观看,确认
http://主节点ip:28017/                          #主节点ip端口(默认27017)+1000 = 28017 有一个web界面方便查看复制集的状态.
相关命令
rs.help()
rs.status()
rs.conf()
db.isMaster()
安装目录/bin下的程序解释
mongod 主数据库程序
mongo    数据库shell工具(可以使用Javascript和服务器交互)
其他工具略:mongoimport,mongoexport,mongodump,mongorestore,bsondump,mongofiles,mongostat
默认的端口:
mongod :27017
mongos: 27017
shard server (mongod ?shardsvr) : 27018
config server (mongod ?configsvr) : 27019
web stats page for mongod : add 1000 to port number (28017, by default)
1.可考虑关闭atime
2. 设置文件描述符限制  (> 4000+)   #  (see etc/limits and ulimit)
3. 不要使用大内存页
4. dmesg 检查下;
5. 考虑BIOS禁用NUMA,或者使用numactl命令启动mongod(mongod启动的时候会自动检查os配置,并提示warnings)
6. 使用ntp同步好各主机的时间 7. 内核版本 > 2.6.36
================================================================
维护
1. 启动,见安装部分.关闭:
1). kill pid
2). mongo登录关闭(本地或者验证用户才能这样关闭)
> use admin
> db.shutdownServer();
如果关闭复制集(replication set)的主库,那么mongodb会检查是否有  复制超时<10秒的secondary节点,没有的话,就不关闭主节点,除非强制执行.
如果有的话,那么primary节点step down,等待secondary节点跟上primary节点.然后60秒后,primary节点关闭.
强制关闭的方法:
> db.shutdownServer({force : true})
一直检查N秒,如果N秒内有满足条件(复制超时<10秒)的次要节点,那么关闭主节点.
> db.shutdownServer({timeoutSecs : 5})
2 .查看服务状态
http接口查看
?nohttpinterface #禁用它
>use admin
>db.addUser(“root”, “abcd”); #添加了一个管理用户
http://localhost:28017/_status #输入上面配置的用户和密码即可.
以上需要使用带权限认证的方式启动才生效(未验证)
?rest   这个参数可以让web界面执行一些管理命令.
获取mongodb状态
db.serverStatus命令
rs.status()
具体参考监控章节
故障处理
强制一个节点为主库. (v2.0+)
必须在primary库运行, 默认的优先级是1, 所以在主库上指定某个节点的优先级> 主库的优先级即可.  原来的主库会短暂失去响应,估计在几秒内.
$ mongo > // example : give 2st member priority 2
> cOnfig= rs.conf()
> config.version++ > // the default priority is 1
> config.members[1].priority = 2
> rs.reconfig(config)
查看,终止当前的操作
db.currentOp();
> db.killOp(1234/*opid*/)
> // same as: db.$cmd.sys.killop.findOne({op:1234})

推荐阅读
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 使用IntelliJ IDEA高效开发与运行Shell脚本
    本文介绍了如何利用IntelliJ IDEA中的BashSupport插件来增强Shell脚本的开发体验,包括插件的安装、配置以及脚本的运行方法。 ... [详细]
  • 本文详细介绍了如何在Windows和Linux系统上配置Openfire服务器,包括安装步骤、数据库配置及端口映射等关键环节。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
author-avatar
手机用户2502896943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有