安装MongoDB 单击版、复制集、密码认证、安装MongoDB分片shard - smile0821/learngit GitHub Wiki

1、安装MongoDB单机版 下载安装文件,解压后即可。在安装目录下执行如下命令即可启动:

(在前台启动,按ctrl c即停止服务,退出进程):

./bin/mongod --dbpath ./data/

(在后台启动,按ctrl c或用户退出系统后不会退出进程,不会停止服务:

nohup ./bin/mongod --auth --dbpath ./data/ > mongod.out 2>&1 &

2、密码认证 通过命令行客户端连接Mongodb服务器,并创建用户:

./bin/mongo

         > use admin

         > db.createUser(

           {

                   user: "xxxAdmin",

                   pwd: "password",

                   roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

           }

         )

        > db.createUser(

                   {

                     user: "userXXX",

                     pwd: "123456",

                     roles: [

                            { role: "read", db: "local" },

                            { role: "readWrite", db: "xxx" }

                     ]

                   }

         )

将原来的Mongodb进程kill,然后带『--auth』参数启动Mongodb。

nohup ./bin/mongod --auth --dbpath ./data/ > mongod.out 2>&1 &

 ./bin/mongod --dbpath=./data/ --auth --fork --logpath=./mongod.log 

启动后,访问相关的数据库需要认证:

./bin/mongo -u userXXX -p 123456 xxx

3、安装Mongodb副本集 以下是MongoDB复制集安装说明,供以后参考。

复制集中的每个节点和其他节点都会保持长连接,因此复制集大小官方说法是不能大于50个。

复制集中的每个节点没2秒向其他节点发送一次心跳,如果10秒内仍没有收到回复,则认为该节点已失效。

主节点失效后,多数节点(从节点)进行一次选举。

确认主节点失效需要10 ~ 30秒;选举过程10 ~ 30秒;因此,如果发生此类故障,会有1分钟左右的时间写操作不可用。

选举的时候,高优先级的节点最先发起选举;有最新数据的节点最有可能成为新的主节点。

一个3节点的副本集,如果挂了一个节点,则剩余俩节点会选举出一个主来,副本集仍然可用;如果挂了两个节点,则剩余的只有一个节点,且该节点不是主节点,不占副本集中节点个数(3)的多数,无法进行选举,因此副本集将不可用。

通过增加arbitrary可以增大允许故障的节点数,例如,3个普通的节点 + 2个arbitrary节点,可以允许有2个节点挂掉,仍可以正常使用。

 

 

 

1、分别下载mongo的安装文件到至少3台机器,解压到文件夹。如:/mnt/mongodb-linux-x86_64-3.0.6。

在安装目录下加文件目录replicaSet1_data、replicaSet1_log,用作存储数据和日志。也可以使用别的目录。

在安装目录下新增配置文件replicaSet1.conf,输入如下内容:

 

dbpath=/mnt/mongodb-linux-x86_64-3.0.6/replicaSet1_data

logpath=/mnt/mongodb-linux-x86_64-3.0.6/replicaSet1_log/mongod.log

pidfilepath=/mnt/mongodb-linux-x86_64-3.0.6/replicaSet1_log/mongod.pid

 

fork=true

directoryperdb=true

port=28001

 

 

注意:

         在3.0及以上版本中,默认的存储引擎是mmapv1,该存储引擎是collection表级锁(2.6版本及以下是mmap存储引擎,是database库级锁)

    如果在配置文件中增加参数“storageEngine=wiredTiger”,则存储引擎为wiredTiger,是document行级锁。

 

 

 

2、启动其中一台。

         ./bin/mongod --config replicaSet1.conf

 

3、创建两个用户,一个具有userAdminAnyDatabase角色,能创建新用户;另一个具有root角色,能做任何事情。

./bin/mongo --port 28001

    use admin

    db.createUser( {

        user: "siteUserAdmin",

        pwd: "111111",

        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

      });

    db.createUser( {

        user: "siteRootAdmin",

        pwd: "111111",

        roles: [ { role: "root", db: "admin" } ]

      });

 

 

 

注意:

         如果在安装完成后要在MongoVUE中访问,则需要在admin这个db下执行如下命令。否则只能通过命令行或者java程序等访问。这是因为Mongodb的3.0以后的版本修改了默认的认证方式。

use admin

var schema = db.system.version.findOne({"_id" : "authSchema"})

schema.currentVersion = 3

db.system.version.save(schema)

 

 

 

4、停止MongoDB

    cat /mnt/mongodb-linux-x86_64-3.0.6/replicaSet1_log/mongod.pid | xargs kill -9

 

5、创建一个key文件,用于复制集的成员间认证。

    openssl rand -base64 741 -out replicaSet1.key                741是要产生的伪随机字节数,必须是741个字节

    chmod 600 replicaSet1.key                                                    除了当前用户,其他用户不能读取该文件

 

         key文件复制到其他机器上

    scp replicaSet1.key xxx@host2/mnt/mongodb-linux-x86_64-3.0.6

    scp replicaSet1.key xxx@host3/mnt/mongodb-linux-x86_64-3.0.6

 

6、启动MongoDB

    在配置文件replicaSet1.conf中加入如下内容

replSet=replicaSet1

keyFile=/mnt/mongodb-linux-x86_64-3.0.6/replicaSet1.key

 

    启动所有的几台机器

    ./bin/mongod --config replicaSet1.conf

 

7、初始化复制集配置

    ./bin/mongo --port 28001

    use admin

    db.auth("siteRootAdmin", "111111");

    rs.initiate()

    执行以上命令后,可随时使用“rs.conf()”命令来查看复制集的配置,用“rs.status()”来查看状态。

         通过以下命令加入其它的复制集成员。rs.add是增加普通的成员,这些成员可以参加选举成为leader,rs.addArb是增加裁判,该角色的成员永远都不会成为leader。

    rs.add("promise2:28001")

    rs.add("promise3:28001")

    通过rs.conf()命令可以看到总共有3个成员,priority的值都是1. 如果其中一个机器是在不同的数据中心,则需要修改其优先级为0,将其只用于数据备份,不会作为leader。

        cfg = rs.conf()

        cfg.members[2].priority = 0

        rs.reconfig(cfg)

 

 

8、为其他DB创建用户。如下示例为名为test的db创建一个用户test,密码为111111。

    ./bin/mongo --port 28001

    use admin

    db.auth("siteUserAdmin", "111111");

    use test

    db.createUser(

      {

        user: "test",

        pwd: "111111",

        roles:

        [

          {

            role: "dbOwner",

            db: "test"

          }

        ]

      }

    )

4、安装shard 安装完成副本集后,可将副本集加入一个分片集群。

步骤一:部署configsvr配置服务器 配置服务器部署比较简单,命令:./bin/mongod --configsvr --dbpath /data/configData --fork --port 27019 其中,“--configsvr”参数说明是配置服务器,“--dbpath”说明数据存放路径,“--fork”说明是fork出子进程后台运行。 配置服务器可以是一个,也可以是多个,也可以是副本集。如果是副本集则安装方式和普通的副本集相同,但启动各个节点的时候mongod需要带“--configsvr”参数。

步骤二:部署mongos路由服务器(可以配置多个) 命令:mongos --configdb 副本集名称/副本集中的ip:port(逗号分隔) --dbpath /data/mongosData --fork --port 27017 如果配置服务器不是副本集,则该命令中的副本集名称及随后的斜杠不写即可。

步骤三:将分片加入集群 命令:sh.addShard( "replicaSet1/10.255.xxx.xx:27001,10.255.xxx.xx2:27001,10.255.xxx.xx3:27001") 如果将要加入集群的分片是副本集,则该命令即可将该副本集加入集群,作为其中的一个分片;如果要加入集群的分片不是副本集,则该命令中的副本集名称及随后的斜杠不写即可。

步骤四:启用shard分片(在test数据库上的test_collection集合上启用分片,并根据number字段分片) mongo 10.255.xxx.xx:27017/admin sh.enableSharding( "test" )

use test db.test_collection.createIndex( { number : 1 } ) sh.shardCollection( "test.test_collection", { "number" : 1 } )

db.stats()   查看分片集群状态 db.printShardingStatus()   查看分片状态(包括哪些db、collection分片了)

注意:在安装配置过程中如果涉及到使用主机名,而不是直接使用ip的地方,可能由于主机名解析问题导致集群安装出现问题。

作者:小树叶子 来源:CSDN 原文:https://blog.csdn.net/xxgwo/article/details/51235475 版权声明:本文为博主原创文章,转载请附上博文链接!