介绍:
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
IP分配:
Mongodb安装
1.关闭相关服务(三台都执行)
#关闭SELINUX
vi /etc/selinux/config把SELINUX=enrforing修改为SELINUX=disabled,然后重启#临时关闭执行:setenforce 0
2.关闭防火墙(三台都执行)
service iptables stopchkconfig iptables off
3.获取mongodb3.0.2软件包(三台都执行)
mkdir -p /main/mongodbtest cd /main/mongodbtest yum -y install wget wget http://image.wohenniucha.com/upload/2018/05/mongodb-linux-x86_64-3.0.2.gz tar zxf mongodb-linux-x86_64-3.0.2.gz
4.配置搭建环境(三台都执行)
mkdir -p /main/mongodbtest/mongos/log mkdir -p /main/mongodbtest/config/data mkdir -p /main/mongodbtest/config/log mkdir -p /main/mongodbtest/mongos/log mkdir -p /main/mongodbtest/shard1/data mkdir -p /main/mongodbtest/shard1/log mkdir -p /main/mongodbtest/shard2/data mkdir -p /main/mongodbtest/shard2/log mkdir -p /main/mongodbtest/shard3/data mkdir -p /main/mongodbtest/shard3/log
5.其他配置
核对3台服务器的系统时间是否正确 ::::若在时间不对之前启动的mongodb,那么需要重新启动mongodb或者重启服务器,否则在启动mongos时会提示无法启动成功 添加如下内容到vi /etc/security/limits.conf文件末尾,然后重启服务器生效 * soft nproc 65535 * hard nproc 65535 启动mongodb前执行一下命令,否则日志文件里会有警告 echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled
6.如果是一台mongodb服务器则按照如下方式启动即可
#单机mongodb启动命令
/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongod --dbpath /main/mongodbtest/config/data --port 21000 --logpath /main/mongodbtest/config/log/config.log --fork
7.集群mongodb服务器启动命令
#启动配置服务器(三台都执行)
/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongod --configsvr --dbpath /main/mongodbtest/config/data --port 21000 --logpath /main/mongodbtest/config/log/config.log --fork
#启动mongos服务(三台都执行)
/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongos --configdb 192.168.100.67:21000,192.168.100.66:21000,192.168.100.63:21000 --port 20000 --logpath /main/mongodbtest/mongos/log/mongos.log --fork
注意:
在启动mongos时若报错: ERROR: child process failed, exited with error number 1 查看日志文件/main/mongodbtest/mongos/log/mongos.log 2016-01-07T09:10:45.325+0800 I NETWORK [mongosMain] scoped connection to 172.18.8.33:21000,172.18.8.51:21000,172.18.8.71:21000 not being returned to the pool 2016-01-07T09:10:45.342+0800 E - [mongosMain] error upgrading config database to v6 :: caused by :: DistributedClockSkewed clock skew of the cluster 172.18.8.33:21000,172.18.8.51:21000,172.18.8.71:21000 is too far out of bounds to allow distributed locking. 是因为3台服务器的时间不一致导致,手动修改时间到当前时间即可。
#配置各个分片的副本集(三台都执行)
/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath /main/mongodbtest/shard1/data --logpath /main/mongodbtest/shard1/log/shard1.log --fork --oplogSize 10/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /main/mongodbtest/shard2/data --logpath /main/mongodbtest/shard2/log/shard2.log --fork --oplogSize 10/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongod --shardsvr --replSet shard3 --port 22003 --dbpath /main/mongodbtest/shard3/data --logpath /main/mongodbtest/shard3/log/shard3.log --fork --oplogSize 10
注意:
为了快速启动并节约测试环境存储空间,这里加上 nojournal 是为了关闭日志信息,在我们的测试环境不需要初始化这么大的redo日志。同样设置 oplogsize是为了降低 local 文件的大小,oplog是一个固定长度的 capped collection,它存在于”local”数据库中,用于记录Replica Sets操作日志。注意,这里的设置是为了测试
8.初始化配置副本集(单机不用执行)
#在172.16.100.66上输入以下命令:
/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongo 127.0.0.1:22001 使用admin数据库 >use admin 定义副本集1配置 >config = { _id:"shard1