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目录下创建mongodb的yum源配置文件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主服务器配置如下:

登陆主机ip:192.168.38.117做如下的配置:

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

Master = ture                开启主从复制模式

Source = 192.168.38.143 从机的源IP地址

完成配置之后重启 service mongod restart 

登陆从机IP:192.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里面的除了admin和local之外的数据库为空时进行搭建,否则初始化成员节点的时候,一定会失败的,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”  

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[]    表示成员列表,依次从id:0添加,id号不能重复,IP和端口

初始化配置

> rs.initiate(cfg)

{

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

        “ok” : 1

}

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

查看配置的当前状态:

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

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值