暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB安装

运维先生 2021-04-15
572

各位扥扥早,包子油条豆浆带一份!

起立!


好了废话不多说了,如果有用请转发出去。

介绍:
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

IP分配:


Mongodb安装

1.关闭相关服务(三台都执行)

#关闭SELINUX

vi etc/selinux/config
把SELINUX=enrforing修改为SELINUX=disabled,然后重启
#临时关闭执行:
setenforce 0

复制

2.关闭防火墙(三台都执行)

service iptables stop
chkconfig 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", members:[
{_id:0,host:"192.168.100.67:22001",arbiterOnly:true},
{_id:1,host:"192.168.100.66:22001"},
{_id:2,host:"192.168.100.63:22001"}
]
}

#初始化副本集配置
>rs.initiate(config);

>exit

复制

#在172.16.100.67上输入:

    #定义副本集2配置
# main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongo 127.0.0.1:22002

>use admin

>config = { _id:"shard2", members:[
{_id:0,host:"192.168.100.67:22002"},
{_id:1,host:"192.168.100.66:22002",arbiterOnly:true},
{_id:2,host:"192.168.100.63:22002"}
]
}

#初始化副本集配置
>rs.initiate(config);

>exit

复制

#在172.16.100.67上输入:

    #设置副本集3配置
# main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongo 127.0.0.1:22003
>use admin
>config = { _id:"shard3", members:[
{_id:0,host:"192.168.100.67:22003"},
{_id:1,host:"192.168.100.66:22003"},
{_id:2,host:"192.168.100.63:22003",arbiterOnly:true}

]
}

#初始化副本集配置
>rs.initiate(config);

>exit

复制

注意:

    目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到 mongos 路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。

复制

9.分片配置

    #连接到mongos
main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongo 127.0.0.1:20000
>use admin

#串联路由服务器与分配副本集1
>db.runCommand( { addshard : "shard1/192.168.100.67:22001,192.168.100.66:22001,192.168.100.63:22001"});

#串联路由服务器与分配副本集2
>db.runCommand( { addshard : "shard2/192.168.100.67:22002,192.168.100.66:22002,192.168.100.63:22002"});

#串联路由服务器与分配副本集3
>db.runCommand( { addshard : "shard3/192.168.100.67:22003,192.168.100.66:22003,192.168.100.63:22003"});

#指定testdb分片生效
>db.runCommand( { enablesharding :"testdb"});

#指定数据库里需要分片的集合和片键
>db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )

#查看分片服务器的配置
>use admin
>db.runCommand( { listshards : 1 } );
>exit

复制

10.测试均匀分片

    连接mongos服务器
/main/mongodbtest/mongodb-linux-x86_64-3.0.2/bin/mongo 127.0.0.1:20000

>use testdb;
#插入测试数据

>for (var i = 1; i <= 500000; i++) db.table1.save({id:i,"test1":"testval1"});

#查看分片情况如下
>db.table1.stats();

复制

11.其他命令

    移除分片:
示例:db.runCommand({"removeshard":"192.168.32.13:27020"})

db.runCommand( { removeshard: "shard2" } )
db.runCommand( { removeshard:} )

结束mongodb
想结束mongodb,可以killall mongod,或者./mongo在控制台中,use admin ,然后db.shutdownServer()来结束mongodb服务器。直接kill -9会使mongo非正常退出,可能会造成数据损坏问题。

复制

到了演示最后了,不知道是否帮助到各位?

如果扥扥们有什么问题,可以文章留言。


有事留言,无事点赞,有用转发!



文章转载自运维先生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论