8月29号,MongoDB发行了最新的数据库版本2.2.0.今天我来把它升级一下.下面记录下我的相关操作.
首先,我查看一下mongod服务有没有在运行.可以用下面两个命令查看:
[root@mysql-master ~]# ps -ef | grep mongo
root      3244     1  0 Aug15 ?        00:00:37 /usr/bin/mongod -f /etc/mongod.conf
root     11480 11451  0 10:18 pts/0    00:00:00 grep mongo
[root@mysql-master ~]# netstat -tpln | grep mongo
tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      3244/mongod   

tcp        0      0 0.0.0.0:28017               0.0.0.0:*                   LISTEN      3244/mongod 
上面显示我系统上的mongod服务是正常运行的,下面连上服务查看一下当前版本号及一些数据库信息:
[root@mysql-master ~]# mongo
MongoDB shell version: 2.0.7
connecting to: test
> show dbs
admin 0.203125GB
jzf 0.203125GB
local 0.203125GB
test 0.203125GB
> exit
升级前一定要关掉服务,停服务我们可以直接在shell里面调用db.shutdownServer()函数.或者用下面这条命令:
/etc/init.d/mongod stop
Stopping mongod:                                           [  OK  ]
服务器停掉后,我们可以将数据做一下备份.因为我这不是生产环境,这里就不做备份了.下面来升级MongoDB数据库软件
[root@mysql-master ~]# yum update -y mongo-10gen mongo-10gen-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package mongo-10gen.x86_64 0:2.2.0-mongodb_1 set to be updated
---> Package mongo-10gen-server.x86_64 0:2.2.0-mongodb_1 set to be updated
--> Finished Dependency Resolution
......
Updated:
  mongo-10gen.x86_64 0:2.2.0-mongodb_1           mongo-10gen-server.x86_64 0:2.2.0-mongodb_1         
Complete!
升级完成后,我们来试着启动下服务:
[root@mysql-master mongo]# /etc/init.d/mongod start
Starting mongod: all output going to: /var/log/mongo/mongod.log
forked process: 11577
                                                           [FAILED]
糟糕,服务启不来,我们换下别的启动方法.
[root@mysql-master mongo]# which mongod
/usr/bin/mongod
[root@mysql-master mongo]# /usr/bin/mongod -f /etc/mongod.conf
forked process: 11590
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting
我们来看一下,唉,这样是能正常启动的.
[root@mysql-master mongo]# ps -ef | grep mongo
root     11590     1  2 10:58 ?        00:00:00 /usr/bin/mongod -f /etc/mongod.conf
root     11601 11451  0 10:58 pts/0    00:00:00 grep mongo
既然服务启动了,我们来看一下能不能连接:
[root@mysql-master mongo]# mongo
MongoDB shell version: 2.2.0
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
 http://docs.mongodb.org/
Questions? Try the support group
 http://groups.google.com/group/mongodb-user
> use admin
switched to db admin
> db.auth("root","redhat")
1
> show dbs
admin 0.203125GB
jzf 0.203125GB
local 0.203125GB
test 0.203125GB
> use jzf
switched to db jzf
> show collections
blog
food
myself
system.indexes
system.users
test
test.test
user
> db.food.find()
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach", "strawberry" ] }
{ "_id" : 2, "fruit" : [ "apple", "orange", "peach", "strawberry" ] }
{ "_id" : 3, "fruit" : [ "cherry", "orange", "peach", "strawberry" ] }
{ "_id" : 4, "fruit" : [ "cherry", "orange", "kumquat", "strawberry" ] }
> exit
bye
由上面可以看出,服务器版本上升了(原来的2.0.7升到了2.2.0).而且原来的数据都在!突然感觉备不备份都没差,当然生产环境中最好别偷懒.
可是为什么我们之前的第一种方式服务启不来呢,下面的操作是我试图再次用那种方式启动:
[root@mysql-master mongo]# ps -ef | grep mongo
root     11590     1  0 10:58 ?        00:00:01 /usr/bin/mongod -f /etc/mongod.conf
root     11618 11451  0 11:26 pts/0    00:00:00 grep mongo
[root@mysql-master mongo]# kill -2 11590
[root@mysql-master mongo]# ps -ef | grep mongo
root     11621 11451  0 11:26 pts/0    00:00:00 grep mongo
[root@mysql-master mongo]# /etc/init.d/mongod restart
Stopping mongod:                                           [FAILED]
Starting mongod: all output going to: /var/log/mongo/mongod.log
forked process: 11639
                                                           [FAILED]
还是启不来,我们来看看日志,看到底是什么原因
[root@mysql-master mongo]# vim /var/log/mongo/mongod.log
Thu Aug 16 11:27:10 [initandlisten] opening db:  test
Thu Aug 16 11:27:10 [initandlisten] couldn't open /var/lib/mongo/test.ns errno:13 Permission denied
Thu Aug 16 11:27:10 [initandlisten] error couldn't open file /var/lib/mongo/test.ns terminating
Thu Aug 16 11:27:10 dbexit:
Thu Aug 16 11:27:10 [initandlisten] shutdown: going to close listening sockets...
Thu Aug 16 11:27:10 [initandlisten] shutdown: going to flush diaglog...
Thu Aug 16 11:27:10 [initandlisten] shutdown: going to close sockets...
Thu Aug 16 11:27:10 [initandlisten] shutdown: waiting for fs preallocator...
Thu Aug 16 11:27:10 [initandlisten] shutdown: lock for final commit...
Thu Aug 16 11:27:10 [initandlisten] shutdown: final commit...
Thu Aug 16 11:27:10 [initandlisten] shutdown: closing all files...
Thu Aug 16 11:27:10 [initandlisten] closeAllFiles() finished
Thu Aug 16 11:27:10 [initandlisten] journalCleanup...
Thu Aug 16 11:27:10 [initandlisten] removeJournalFiles
Thu Aug 16 11:27:10 [initandlisten] flushing directory /var/lib/mongo/journal
Thu Aug 16 11:27:10 [initandlisten] removeJournalFiles end
Thu Aug 16 11:27:10 [initandlisten] shutdown: removing fs lock...
Thu Aug 16 11:27:10 dbexit: really exiting now
打开日志一看,很明显的字眼映入眼帘:errno:13 Permission denied,这种错误信息太常见了!第一感觉当然是看数据库的目录权限咯:
[root@mysql-master mongo]# ls -l /var/lib/mongo/
total 852856
-rw------- 1 root   root    67108864 Aug 14 23:21 admin.0
-rw------- 1 root   root   134217728 Aug 14 23:28 admin.1
-rw------- 1 root   root    16777216 Aug 14 23:21 admin.ns
drwxr-xr-x 2 mongod mongod      4096 Aug 16 11:34 journal
-rw------- 1 root   root    67108864 Aug 15 00:36 jzf.0
-rw------- 1 root   root   134217728 Aug 15 02:45 jzf.1
-rw------- 1 root   root    16777216 Aug 15 00:36 jzf.ns
-rw------- 1 mongod mongod  67108864 Aug 14 12:50 local.0
-rw------- 1 mongod mongod 134217728 Aug 14 18:50 local.1
-rw------- 1 mongod mongod  16777216 Aug 14 12:50 local.ns
-rwxr-xr-x 1 mongod mongod         0 Aug 16 11:34 mongod.lock
drwxr-xr-x 2 root   root        4096 Aug 15 02:35 test
-rw------- 1 root   root    67108864 Aug 15 02:35 test.0
-rw------- 1 root   root   134217728 Aug 15 02:45 test.1
-rw------- 1 root   root    16777216 Aug 15 02:35 test.ns
看到这里,我想大家应该明白,为什么后面那种方法能正常启动了.那么我们来改一下目录权限,看看前面那种启动方式能不能正常启动服务:
[root@mysql-master mongo]# chown -R mongod. /var/lib/mongo/
[root@mysql-master mongo]# ls -l /var/lib/mongo/
total 852856
-rw------- 1 mongod mongod  67108864 Aug 14 23:21 admin.0
-rw------- 1 mongod mongod 134217728 Aug 14 23:28 admin.1
-rw------- 1 mongod mongod  16777216 Aug 14 23:21 admin.ns
drwxr-xr-x 2 mongod mongod      4096 Aug 16 11:34 journal
-rw------- 1 mongod mongod  67108864 Aug 15 00:36 jzf.0
-rw------- 1 mongod mongod 134217728 Aug 15 02:45 jzf.1
-rw------- 1 mongod mongod  16777216 Aug 15 00:36 jzf.ns
-rw------- 1 mongod mongod  67108864 Aug 14 12:50 local.0
-rw------- 1 mongod mongod 134217728 Aug 14 18:50 local.1
-rw------- 1 mongod mongod  16777216 Aug 14 12:50 local.ns
-rwxr-xr-x 1 mongod mongod         0 Aug 16 11:34 mongod.lock
drwxr-xr-x 2 mongod mongod      4096 Aug 15 02:35 test
-rw------- 1 mongod mongod  67108864 Aug 15 02:35 test.0
-rw------- 1 mongod mongod 134217728 Aug 15 02:45 test.1
-rw------- 1 mongod mongod  16777216 Aug 15 02:35 test.ns
[root@mysql-master mongo]# /etc/init.d/mongod start
Starting mongod: forked process: 11703
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting
                                                           [  OK  ]
正常启动了.那么这两种方法倒底有什么不同的地方呢?我们来看一下mongod的启动脚本
[root@mysql-master ~]# vim /etc/init.d/mongod
......
MONGO_USER=mongod
MONGO_GROUP=mongod
......
start()
{
  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" $NUMACTL $mongod $OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}
原来,mongod启动脚本中服务启动的用户是mongod,而用后一种方法启动用户是root.那么服务启不了,报权限被拒绝也是很正常的事啦.下面我们来分别看下:
[root@mysql-master ~]# /etc/init.d/mongod start
[root@mysql-master ~]# ps -ef | grep mongo
mongod   11703     1  0 11:49 ?        00:00:12 /usr/bin/mongod -f /etc/mongod.conf
root     11736 11451  0 13:57 pts/0    00:00:00 mongo
[root@mysql-master ~]# /usr/bin/mongod -f /etc/mongod.conf
[root@mysql-master ~]# ps -ef | grep mongo
root     11590     1  0 10:58 ?        00:00:01 /usr/bin/mongod -f /etc/mongod.conf

转载于:https://blog.51cto.com/jzfjeff/987291

CentOS下MongoDB的升级相关推荐

  1. centOS下mongodb的安装

    ###############centOS下mongodb的安装######### mongodb作为非关系型数据库NoSQL数据库的一种,并且是属于免安装类型. mongodb安装说明:32的安装d ...

  2. centos下MongoDB数据库自动备份(linux)

    centos下没有可视化工具,这个时候对MONGODB数据库进行备份,我们需要借助脚本和定时任务来进行. 1.创建MongoDB备份目录 我们创建一个当前备份和备份列表文件夹 mkdir -p /da ...

  3. Centos下MongoDB的安装与配置

    安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法. 1.准备工作 运行yum命令查看MongoDB的包信息(正常是没有信息提示的,我这里已经按安装好了) [r ...

  4. Linux网卡固件,CentOS下X710网卡升级驱动和固件脚本 | 聂扬帆博客

    对于CentOS7.1和7.5版本,安装X710网卡的驱动和固件版本太低,使用会有问题.这边整理了一份脚本自动检测安装,脚本会判断是否是DELL的几款机型,因为DELL机型的驱动和固件不能使用inte ...

  5. linux 安装rpm qt can't creat,centos 下 Qt Creator 的安装使用

    centos 下 Qt Creator 的安装使用 Qt 以其开源,免费,完全面向对象(很容易扩展),允许真正的组件编程以及可移植跨平台等诸多优势得到越来越多的开发人员的青睐.Qt Creator 是 ...

  6. mysql 5.6 dmr_CentOS下mysql5.6升级5.7指南

    CentOS下mysql5.6升级5.7指南 前提你的mysql是通过yum安装,其他情况没有测试 Step 0. 检查是否是 yum安装的mysql yum list installed | gre ...

  7. 【潇湘菌子】Centos下YAPI安装

    Centos下YAPI安装 YAPI是什么 这个也无需多讲,是一个管理api的平台,大家在平台把规则定好.前后端就可以分离的做开发了.比sawgger的那个功能强大.而且支持用户,权限,多种数据导入, ...

  8. Centos下安装MongoDB复制集

    2019独角兽企业重金招聘Python工程师标准>>> 在一台Centos下模拟安装MongoDB的复制集 准备三份配置文件: mongod.conf bind_ip=0.0.0.0 ...

  9. Mongodb学习(安装篇): 在centos下的安装

    安装篇 ###下载解压文件 [root@192 lamp]# wget http://fastdl.mongodb.org/linux/mongodb-linux-i686- 2.2.2.tgz ## ...

最新文章

  1. 抛弃Python,我们为什么用Go编写机器学习架构?
  2. 学会使用 diff 和 patch 命令协同开发
  3. 用 Fiddler 来弥补 Chrome Network 的小缺点
  4. 【UIKit】UITableView 1
  5. vba 邮件body html,Excel VBA中的Outlook电子邮件和签名 – .Body vs .HTMLbody
  6. 七十八、 回溯法解决八皇后问题
  7. 存储过程打印超过8000的VARCHAR字符的问题
  8. rsync 一条命令实现远程文件传输
  9. 与David Blevins聊Java EE的未来
  10. Springboot整合Nacos配置中心
  11. LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义
  12. java权限管理与用户角色权限设计
  13. SQL经典面试50题 | 附答案
  14. 计算机性能测评实验原理,实验一 计算机性能测试.pdf
  15. wegame安装包文件MD5校验失败解决方案
  16. 如何破解加密的PDF文件
  17. 舒尔特 Pro ,专业训练注意力专注力
  18. Trainning 1 DAY
  19. 乐乐音乐4.0简洁版
  20. XILINX XC7A200T-2FBG676C PLC可编程逻辑控制器

热门文章

  1. vue-cli 自定义指令directive 添加验证滑块
  2. H5移动端网页标签模板
  3. Oracle中加速索引创建或重建的方法
  4. jggrid应用于asp.net
  5. java 列表组件_Jsp页面列表组件框架设计
  6. bzoj1089: [SCOI2003]严格n元树
  7. 如何选择版本控制系统之二
  8. 抽象工厂模式-与-工厂方法模式区别
  9. 单元测试(Android)_JUnit
  10. Go 支持Protocol Buffers的配置