mongodb

mongodb是非常流行的nosql型数据库 集合对应的是mysql里的表 文档对应的表里的一条数据
mongodb也非常绿色 直接解压就能用 也太绿色了。。。

以下mongodb的复制集跟分片的安装与测试
本机启动三个mongod 一个mongos 一个config
端口27017、27018为集合1
端口27019为集合2
端口20000为mongos
端口21000为config
下载mongodb-linux-x86_64-2.6.10.tgz
把mongodb解压到/usr/local/目录下

netstat -tln #查看默认端口27017是否占用

mkdir -p /data/mongodb/rs1.1
mkdir -p /data/mongodb/rs1.2
mkdir -p /data/mongodb/rs1.3

普通启动

/usr/local/mongodb/bin/mongod --port 27019 --dbpath /data/mongodb/rs2.1/ --logpath=/var/log/mongodb/rs2.1.log --fork     #默认端口27017

复制集
第一个mongod服务

/usr/local/mongodb/bin/mongod --port 27017 --dbpath=/data/mongodb/rs1.1/ --logpath=/var/log/mongodb/rs1.1.log --replSet rs1 --fork --logappend  #默认端口27017

mongod的配置参数也可以写在文件里 -f

port=27017
dbpath=/data/mongodb/rs1.1/
logpath=/var/log/mongodb/rs1.1.log
logappend=true
bind_ip=默认绑定外网ip,为了安全绑定服务器的内网ip
storageEngine=wiredTiger 
fork=true

storageEngine=wiredTiger 为mongod的新引擎
fork=true后台运行

第二个mongod服务

/usr/local/mongodb/bin/mongod --port 27018 --dbpath=/data/mongodb/rs1.2/ --logpath=/var/log/mongodb/rs1.2.log --replSet rs1 --fork --logappend

第三个mongod服务

/usr/local/mongodb/bin/mongod --port 27019 --dbpath=/data/mongodb/rs1.3/ --logpath=/var/log/mongodb/rs1.3.log --replSet rs1 --fork --logappend

客户端连接

/usr/local/mongodb/bin/mongo --host 127.0.0.1 --port 27017

//配置节点信息

config={_id : 'rs1',members : [{_id : 0, host : '127.0.0.1:27017'},{_id : 1, host : '127.0.0.1:27018'},{_id : 2, host : '127.0.0.1:27019'}]}

//这个过程可能要等个一到两分钟的时间

rs.initiate(config)
rs.status()
rs.reconfig(config)     #重新加载config

创建config-service服务器

mkdir -p /data/mongodb/config/
mkdir -p /var/log/mongodb/config/
/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/config/ --port 21000 --configsvr --logpath /var/log/mongodb/config/config.log --fork

配置mongos

/usr/local/mongodb/bin/mongos --configdb 127.0.0.1:21000 --logpath /var/log/mongodb/mongos/mongos.log --fork --port 20000

mongods的配置参数同样也可以写在文件里 -f

configdb=127.0.0.1:21000
logpath=/var/log/mongodb/mongos/mongos.log
logappend=true
bind_ip=默认绑定外网ip,为了安全绑定服务器的内网ip
fork=true

配置shard分片,先连接mongos

/usr/local/mongodb/bin/mongo --port 20000
#添加分片
use  admin
db.runCommand( { addShard : "rs1/127.0.0.1:27017,127.0.0.1:27018"});     #如果有复制集则rs1为复制集的名字
db.runCommand( { addShard : "127.0.0.1:27019"});

开启test库的分片功能

db.runCommand({"enablesharding":"test"})

开启user集合分片功能

db.runCommand({"shardcollection":"test.user","key":{"name":1}})

插入100000条测试分片

for (var i = 1; i <= 100000; i++) db.user.save({id : i, name : i+'aaa'+i});

客户端连接

/usr/local/mongodb/bin/mongo --host 127.0.0.1 --port 27017
#显示数据库
show dbs
#得到当前db的所有聚集集合
db.getCollectionNames();
#创建集合
db.createCollection('user')
db.getMongo().setSlaveOk();     #从库读

查询单条容量(字节)

Object.bsonsize(db.user.findOne());

mongodb基本操作(注意有些例子单引号是中文)
http://www.cnblogs.com/TankMa/archive/2011/06/08/2074947.html
创建集合
http://www.yiibai.com/mongodb/mongodb_create_collection.html

关闭mongodb
先通过shell连上服务器:

mongo
use admin
db.shutdownServer()
或者直接kill -15 ,注意kill -9 可能会导致数据文件损坏
或者mongod –shutdown –dbpath /data/mongodb/

添加仲裁节点

常见问题:
一:
mongodb启动不了:child process failed, exited with error number 100
http://www.dataguru.cn/thread-107361-1-1.html
没有正常关闭mongodb引起的
先删除数据库db下的mongod.lock文件
./mongod –logpath /var/log/mongodb1 –fork –dbpath /data/db1 –repair

/usr/local/mongodb/bin/mongod –port 27019 –dbpath=/data/rs1.3/ –logpath=/var/log/mongodb/rs1.3.log –repair
二:
看日志
2015-09-10T17:05:26.167+0800 [initandlisten] ERROR: Insufficient free space for journal files
2015-09-10T17:05:26.167+0800 [initandlisten] Please make at least 3379MB available in /data/rs2.1/journal or use –smallfiles
加–smallfiles启动

查看复制集状态

rs.status()

rs.isMaster()

rs.conf()

查看从库状态

db.printSlaveReplicationInfo()

设置从库可查询

db.getMongo().setSlaveOk()

rs.setSlaveOk()

增加复制集节点

1.锁定已有的一个从库,并将缓存中的数据写入到磁盘

use admin

db.runCommand({“fsync”:1, “lock”:1})

2.拷贝被锁定从库的数据文件到新建从库的数据目录

3.解锁从库

db.$cmd.sys.unlock.findOne()

db.currentOp()

4.启动新从库

./mongod –replSet rs1 –keyFile /data/set/key/r4 –fork –port 28014 –dbpath /data/set/r4 –logpath=/data/set/log/r4.log –logappend –fastsync

5.rs.add(“localhost:27017”)

6.删除节点:

主节点上面执行 rs.remove(“ip:port”)

你可能感兴趣的:(mongodb)