mongodb分片,副本集部署

mongodb 数据库 阅读:1823

一.Mongodb安装包:

安装路径:/data/joygames/

生成keyfile文件:openssl rand -base64 100 > keyfile

认证keyfile路径:/data/joygames/mongodb/keyfile

修改keyfile的文件属性:chmod 600 /data/joygames/mongodb/keyfile

修改服务器配置:

echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
echo “* soft nproc 33000”>> /etc/security/limits.conf
echo “* hard nproc 33000”>> /etc/security/limits.conf


在/etc/profile中添加mongodb的环境变量:

PATH=$PATH:/data/joygames/mongodb/bin

export PATH

二.安装副本集:

1.解压安装包到安装路径下,重命名为mongodb

2.新建启动配置文件mongodb.conf,内容如下:

port = 21000
 
dbpath = /data/joygames/mongodb/repl_data  #数据库路径
 
logpath = /data/joygames/mongodb/log/mongodb.log   #日志文件路径
 
logappend = true
oplogSize = 1024
 
fork = true
replSet=gwlm   #副本集名称,不同的副本集组名称不同
 
pidfilepath = /data/joygames/mongodb/mongodb.pid   #进程pid


 

3.新建目录/data/joygames/mongodb/repl_data和log文件/data/joygames/mongodb/log/mongodb.log

4.启动mongod进程:

mongod --keyFile /data/joygames/mongodb/keyfile -f /data/joygames/mongodb/mongodb.conf


根据实际情况配置副本集的服务器数目,推荐3台以上

配置完副本集后初始化副本集,登陆到其中一台上:

mongo 127.0.0.1:21000/admin
db.runCommand(  
    {  
        "replSetInitiate":  
        {  
            "_id":"gwlm",  
            "members":  
            [  
                {  
                    "_id":1,  
                    "host":"10.165.94.244:21000"  
                },  
                {  
                    "_id":2,  
                    "host":"10.165.95.106:21000"  
                },  
                {  
                    "_id":3,  
                    "host":"10.25.31.230:21000"  
                }  
            ]  
        }  
    })


依次配置完毕所有的副本集分片

5.查看副本集成员状态:

rs.status()


blob.png

 

查看当前副本集的主节点和从节点

 

三.安装配置服务器:

1.解压安装包到安装路径下,重命名为mongodb

2.新建启动配置文件mongodb.conf,内容如下:

port = 21000      #进程端口
 
dbpath = /data/joygames/mongodb/config_server #数据库路径
 
logpath = /data/joygames/mongodb/log/mongodb.log   #日志文件路径
 
logappend = true
oplogSize = 1024
 
fork = true
 
pidfilepath = /data/joygames/mongodb/mongodb.pid


启动配置服务器:

mongod --configsvr  --keyFile /data/joygames/mongodb/keyfile -f /data/joygames/mongodb/mongodb.conf


 

根据实际情况配置服务器的数目



四.安装路由服务器:

1.解压安装包到安装路径下,重命名为mongodb

2.新建启动配置文件mongos.conf,内容如下:

port = 22000        #进程端口
 
logpath=/data/joygames/mongodb/log/mongos.log     #进程的日志文件
 
logappend = true
 
fork = true
 
pidfilepath = /data/joygames/mongodb/mongos.pid
 
configdb=10.165.94.154:21000,10.165.94.221:21000,10.165.94.131:21000     #所有配置服务器的IP和端口


 

3.开启mongos进程:

mongos --chunkSize 1  --keyFile /data/joygames/mongodb/keyfile -f /data/joygames/mongodb/mongos.conf


4.添加分片:

mongo 127.0.0.1:22000/admin


添加三个分片:

db.runCommand({"addShard":"gwlm/10.165.94.176:21000,10.25.31.212:21000,10.25.32.48:21000"})  
db.runCommand({"addShard":"gwlm2/10.165.95.215:21000,10.25.44.219:21000,10.25.31.235:21000"})
db.runCommand({"addShard":"gwlm3/10.165.95.106:21000,10.25.31.230:21000,10.165.94.244:21000"})


 

查看分片情况:

db.runCommand({listshards:1})

 


blob.png

对某个库开启分片功能:

use mydb
db.runCommand({"enablesharding":"mydb"})
db.runCommand({"shardcollection":"mydb.person","key":{_id:'hashed'}})  
for(var i=0;i<100000;i++){db.person.insert({name:"bluejoe"+i});}


 

查看分片情况:

db.printShardingStatus()

五.认证

所有的mongodb服务都使用keyfile文件认证

建立管理账号

登陆到mongos:

mongos 127.0.0.1:22000
use admin
db.createUser( { user: "gwlm",
 
 pwd: "gwlm_2016",
 
 roles: [ "clusterAdmin","userAdminAnyDatabase","dbAdminAnyDatabase","readWriteAnyDatabase" ] } )
 
db.auth(“gwlm”,”gwlm_2016”)


 

重新登陆mongos:

mongo 127.0.0.1/admin -u gwlm -p gwlm_2016