最近一次因为机房突然断电导致mongodb重启失败,执行./moongod和./mongo命名都会报错:
mongod: symbol lookup error: mongod: undefined symbol: _ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE
=============================================================
此问题可以通过安装mongodb-10gen解决,执行步骤如下:
1、获取下载10-gen公共密钥:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
2、修改源:echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/10gen.list
3、更新源:apt-get update
4、安装mongodb-10gen:apt-get install mongodb-10gen
=============================================================
一般情况下如上即可解决问题,可是当我执行到第三步时,发现mongodb官方提供的源我的电脑无法update,具体错误如下:
Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
报错意思是:网络不可用,可能需要身份认证才可以使用
但是我的网络是可以用的,而且直接通过wget可以获取到http://downloads-distro.mongodb.org/repo/ubuntu-upstart。
通往网上搜索,说修改dns地址为(8.8.8.8)或者(114.114.114.114)可以,但是我的并不行。
=============================================================
所以换一种思路。将mongodb的数据库文件local0,journal等文件备份,然后重新安装mongodb
需要说明的是,安装mongodb有两种方式,一种是直接在官网下载压缩包,解压安装。另一种是使用apt-get安装,这种方式同样需要周上面的步骤。
所以果断选择第一种方式。下载地址为:https://www.mongodb.com/download-center/community
解压后安装,对应的bin目录下启动命令:./mongodb --fork logpath=logpath的地址 --dbpath=数据存储地址(默认为/data/db)(--fork是后台启动)
启动之后,执行客户端。./mongo,如果连接成功,则mongodb安装成功
这时先kill掉mongodb,然后将备份的数据文件转移到新安装的数据存储地址(默认为/data/db)
然后重启使用启动命令启动(./mongodb --fork logpath=logpath的地址 --dbpath=数据存储地址)
执行客户端,选择对应database,使用find()方法查看数据是否正常恢复。
=============================================================
经过重新安装,再数据恢复,绕过了以上的问题,使得mongodb重新启动可用,问题得以解决。
但是以上修改dns还是无法update mongodb提供的源的问题还是存在,有待进一步思考。
针对此问题,如果有解决方案,欢迎交流
网友评论