Mongodb报错及解决办法集合

Mongodb报错及解决办法集合:

>db.daily_csv_test.drop(); 

删除有数据的表示报错如下:

Thu Nov 28 10:30:40.833 SyntaxError: Unexpected token ILLEGAL

解决办法:>var c = db.getCollection(‘player’);c.drop(); 其中player是删除的表



启动 service mongod restart 是报错:

 

all output going to: /var/log/mongo/mongod.log

ERROR: child process failed, exited with error number 100

原因:配置文件错误,/etc/mongod.cnf中mongod配置文件中数据库路径的设置,或者是新增仓库没有mongod用户的权限


 


配置副本集报错

{ “ok” : 0, “errmsg” : “server is not running with –replSet” }

解决办法:在mongodb的配置文件中没有开启replset选项



 

配置副本集之后报错:

“errmsg” : “couldn’t parse cfg object unexpected field ‘_id ’ in object

原因:配置的mongodb的数据库不是空的,我主要是这个原因,也可以在其他机器上面初始化。

error: {

        ”$err” : “not master or secondary; cannot currently read from this replSet member”,

        ”code” : 13436



 mongo 192.168.38.143/log –eval “var c = db.getCollection(‘daily_csv_2013:10:28’);c.drop();”

                Mongodb 安装方法

 系统是centos6.4     系统位数是:64   安装方法系统自带的yum

首先检查是否有yum的源 yum info mongo-10gen 如果报错则配置yum

/etc/yum.repos.d目录下创建mongodbyum源配置文件10gen.repo

在文件中添加如下内容:vim 10gen.repo

[10gen]

Name=10gen Repository

Baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64

Gpgcheck=0

如下是安装mongodb的命令

  Yum install mongo-10gen  mongo-10gen-server

最后查看mongodb包的相关信息: yum info mongo-10gen-server

创建系统开机启动: chckconfig –list  (查看系统的开机启动选项)

chkconfig –add  mongod

                  Chkconfig  mongod on

启动(关闭/重启)mongo服务    service mongod  start  stop/restart

 

Mongodb的常用命令

登陆mongdb数据库#mongo admin  admin是默认的管理用户名)

使用数据库>use admin

显示mongodb数据库中所有的数据库>show  dbs

显示 数据库中所有的集合(表)>show collections

创建集合 >db.createCollection自己创建表的名称);如log

查看集合中的数据>db.log.find();

在集合中添加数据>db.log.save({age:1})

创建用户 >db.addUser(“自己创建用户密码”);如用户名kernel 密码:123456

 

对用户名进行认证>db.auth(“用户名密码”);没有认证的用户名无法对mongodb数据库进行操作

查看已存在的用户命令:db.system.users.find()

 删除用户的命令:db.system.users.remove({user:”用户名称”})

,mongodb数据库导入csv文件(本地服务器)

参数说明:

-h 192.168.38.143:27017   指明远程主机和端口号

-d  admin    用户名              >show dbs;  查看所有用户             

-c user     集合(表)           >show Collections;   查看链接信息

 

-f datetime, loglevel,id,title,content,moduledetail,threaded   指明要导入表中的这些标签

-type  csv    指明导入的文件类型    后面跟文件

这是一张csv的表中的元素:

mongoDB的使用总结mongoDB的使用总结mongoDB的使用总结

 

mongoDB的使用总结

mongoimport导入如上图的一张表,其中导入数据库名是log,表名(collection)名:player,可以随意取名字。本地目录的CSV表:player.csv

Mongoimport  -d log -c player -f datetime, loglevel,id,title,content,moduledetail,threadid –type csv player.csv

    导出数据库中的一张名字是player的csv数据类型的表:比如数据库名是log 数据库用户名是root,密码是123456,如下

mongoexport  -uroot -p123456  -d log -c player -o player.csv  


如果导入和导出的时候。表的结构不是CSV数据类型,而是bson数据,如图:

mongoDB的使用总结

导出命令如下:mongoexport  -uroot -p123456  -d log -c player -o player.dat

导入命令:mongoimport  -uroot -p123456  -d log -c player  player.dat


 


二,远程导入与导出

 

远程IP地址:192.168.38.120,数据库名:log 数据库用户名:root 密码123456 数据库中的表名:player

远程导出如下:

mongoexport -h 192.168.38.120 -d log  -u root -p123456   -c player  -o player.dat

远程导入如下:

mongoimport -h 192.168.38.120 -d log  -u root -p123456   -c player   player.dat

CSV数据远程导出

这里远程服务器没有开启认证,

 

mongoexport -h 192.168.38.143 -d log -c daily  -o daily.csv

远程导入CVS数据:

mongoimport -h 192.168.38.120 -d log -c daily -f id,datetime,loglevel,title,content,moduledetail,threadid –type csv  daily.csv


远程初次导入数据生成CSV数据,需要指明生成数据的标签id,datetime,loglevel,title,content,moduledetail,threadid,和数据类型 –type csv
 


mongoexport提供条件过滤功能:
mtb1表里有一个字段为name,值有joe,可以根据条件导出所需数据:
mongoexport -h 127.0.0.1 –port 50000 -d testdb -c mtb1 -q ‘{name:”joe”}’ -o mtb1.dmp
导出name为joe的数据


 

 


            Mongodb主从复制搭建

Mongodb主服务器配置如下:

登陆主机ip192.168.38.117做如下的配置:

修改mongodb配置文件Vim /etc/mongo.cnf

Master = ture                开启主从复制模式

Source = 192.168.38.143 从机的源IP地址

完成配置之后重启 service mongod restart 

登陆从机IP192.168.38.143 做如下的配置

修改从机的mongodb的配置文件vim  /etc/mongo.cnf

Slave = ture             开启从机的客户端模式

Source = 192.168.38.143 主机源IP地址

配置完成之后重启  service mongod restart

主从测试:登陆(192.168.38.117)主机的数据库 

#mongo admin     

>db.addUser(“test”,”123456”);      添加测试用户

>db.auth(“test”,”123456”);           进行认证

>use test;               使用test数据库

>createCollections(“kernel”);        创建kernel的集合

>show collections();              查看集合是否创建成功

>db.kernel.save({age:10});          kernel的集合添加数据

>db.kernel.find();                 查看集合中的数据

确保有数据以后,登陆(192.168.38.143)从服务器的数据库检查数据是否同步

# mongo  test

>db.kernel.find();如果看到刚才的数据,则说明配置成功

 




            Mongodb的副本集构建

提醒:1.配置mongodb自动故障恢复功能的主从集群。一定要确保mongo里面的除了adminlocal之外的数据库为空时进行搭建,否则初始化成员节点的时候,一定会失败的,2.如果数据库是空的,依然初始化节点失败,则需要到从机上面执行初始化配置。因为在主从复制的时候,活跃节点会发生变化。会导致初始化节点失败。

报错如下:

 

 

修改mongo的配置文件    vim /etc/mongo.cnf

replSet = i9yu                在配置文件中添加副本集的名称,i9yu名字可以随便取

保存,退出。

1.   $ mongo 192.168.38.117  

2.   MongoDB shell version: 2.4.8  

3.   connecting to: 192.168.38.117/test  

4.   > rs.status()  

5.   {  

6.           “startupStatus” : 3,  

7.           “info” : “run rs.initiate(…) if not yet done for the set”,  

8.           “errmsg” : “can’t get local.system.replset config from self or any seed (EMPTYCONFIG)”,  

9.           “ok” : 0  

10.  }  

11.  >   

说明复制集群没有进行配置。

配置节点成员:

cfg={ _id:’i9yu’,members:[{_id:0,host:’192.168.38.117:27017’},{_id:1,host:’192.168.38.143:27017’}]}

cfg={_id : ’i9yu’,members:[ { _id:0,host:’192.168.38.117:27017’}, { _id:1,host:’192.168.38.143:27017’} ]}

信息显示如下:{  

1.   {

2.           “_id” : “i9yu”,  

3.           “members” : [  

4.                   {  

5.                           “_id” : 0,  

6.                           “host” : “192.168.158.130:27017”  

7.                   },  

8.                   {  

9.                           “_id” : 1,  

10.                          “host” : “192.168.158.131:27017”  

11.                  }  

12.          ] 

13.   

 

_id:i9yu 表示副本集名称的id mongodb随机分配存储的id

Member[]    表示成员列表,依次从id0添加,id号不能重复,IP和端口

初始化配置

> rs.initiate(cfg)

{

        “info” : “Config now saved locally.  Should come online in about a minute.”,

        “ok” : 1

}

如上所示表明配置成功,显示标签发生变化。

查看配置的当前状态:

> rs.status()  会显示具体的配置信息

 

你可能感兴趣的:(Linux,MongoDB)