欢迎投稿

今日深度:

MongoDB3.0.1分片部署,国内3.0的部署文档还不是很

MongoDB3.0.1分片部署,国内3.0的部署文档还不是很多(何志雄)。,mongodb3.0.1何志雄


一)、分片包括: 1、至少3个config服务器:存储了数据块对分片的映射,用于判断数据存储在那个片上。 2、分发路由器:1个以上的mongos,将用户的读、写请求分发到分片中,该服务器被应用程序访问,应用程序不直接访问分片。 3、2个以上的分片,每个分片是单独的 mongod 或者是 replica set,如果是开发、测试环境,分片可以使独立的mongod而不一定要是副本集。
二)、分片读写原理: 应用程序访问mongos(又称为查询路由),mongos向config服务器(又称为配置服务器)查询数据应该属于哪个分片,          然后shards(分片)向具体的分片读写数据。                                   每个分片由一个副本集构成。                            appDriver                      |                 mongos\(可以是多个mongos)                    / \       \config/config/config                   /   \                   shard(replset)  shard(replset)  三)、生产环境部署注意事项: 1、3台config服务器,需要部署在不同的机器上。 2、2个或以上的复制集组成分片。 3、一个或更多的mongos,部署在应用程序所在的服务器上。
四)、部署: 4.1  IP规划环境:      1、至少3台Config服务器(需要注意到是Config需要奇数个):           192.168.62.152:27052           192.168.62.154:27054           192.168.62.155:27055      2、至少1台Mongos服务器,商用环境建议配置多台:           192.168.62.153:27788               192.168.62.155:27799       3、不低于2个副本集分片:            分片1:                     192.168.62.153:17053                     192.168.62.154:17054                     192.168.62.155:17055            分片2:                     192.168.62.155:17155                     192.168.62.153:17153                     192.168.62.152:17152
【总体部署步骤描述】 1、先部署2个分片副本集,无需配置超级管理员和数据库管理员,不要创建任何数据库。 2、步骤3个mongoConfig服务,无需配置超级管理员和数据库管理员。 3、部署2个Mongos路由服务, 4、在mongos服务器上使用./mongo --port 27788的本地例外登录的方式创建超级管理员。 5、在mongos服务器上增加mongoConfig配置服务器。 6、在mongos服务器上添加数据库管理员。 7、在mongos服务器上为数据库创建索引(需要分片的) 6、在mongos服务器上添加2个分片及片键盘。
  【重要】所有服务器(config/mongs/分片副本集)的mongodb-keyfile的加密串都为,目的是集群服务器之间的通讯需要IJMyg3AL15ek0FWIbIBhVAr9oK/D0DEqxtkCNoyaQyz2wOIN/IcXLLjsZPX0F+6AMM
4.2、部署配置服务器(Mongo Config:存储集群元信息的mongod实例,生成环境至少配置3台以上的服务器,运行在不同的服务器上)     在155/154/152服务器上,重复以下2个步骤。端口可以不一样。     安装目录在/soft/configMongoDB目录下。
    1)、在配置服务器上:mkdir -p /data/configdb     2)、启动配置服务器(不需要建立管理员账号和密码)             如果不把mongdb命令加入到环境变量中,则到安装包的bin目录下执行:            在155执行:                  cd /soft/configMongoDB/bin                   ./mongod --configsvr --dbpath /soft/configMongoDB/db --port 27055 --keyFile=/soft/configMongoDB/mongodb-keyfile&            在154执行:                  cd /soft/configMongoDB/bin                    ./mongod --configsvr --dbpath /soft/configMongoDB/db --port 27054 --keyFile=/soft/configMongoDB/mongodb-keyfile&            在152执行:                 cd /soft/configMongoDB/bin                 ./mongod --configsvr --dbpath /soft/configMongoDB/db --port 27052 --keyFile=/soft/configMongoDB/mongodb-keyfile&
4.3、部署Mongos服务,用于路由客户端操作到具体的分片上,至少部署不低于一个Mongos服务.       需要注意的是,所有mongos的配置服务器顺序(192.168.62.152:27052,192.168.62.154:27054,192.168.62.155:27055)必须一致,否则会报错。       Mongos由于没有数据节点,因此创建管理员的时候,使用 ./mongo --port 27799  在本机上执行才可以。       Mongos的超级账户和密码与副本集的保持一致,创建超级用户后执行如下命令。
      在153上执行:         cd /soft/mongosMongo/bin  ./mongos --configdb 192.168.62.152:27052,192.168.62.154:27054,192.168.62.155:27055 --port 27788 --keyFile=/soft/mongosMongo/mongodb-keyfile&               在155上执行:         cd /soft/mongosMongo/bin ./mongos --configdb 192.168.62.152:27052,192.168.62.154:27054,192.168.62.155:27055 --port 27799 --keyFile=/soft/mongosMongo/mongodb-keyfile&
4.4、向集群中添加分片(一个分片可以单独的monod服务,或者一个副本集,在生产环境中应该使用副本集,进行读写分离,故障失效转移)         本案例使用2个副本集,实现分片。         副本集的部署,请参考上文,需要注意的是如果在1-2台机器上部署整个环境,每个Mogod实例的数据目录不要在同一个地方。         在副本集中,只需要在master机器建立超级管理员(估计也能省略此步骤),不需要建立具体数据库的管理,等到加入分片成功后,         到mongos服务器上建立具体的管理员和索引。

     4.4.1启动分片副本集1,分片名称:shard1                     在153、154、155上执行:                     cd /soft/shardMongo/bin                     ./mongod -shardsvr --auth --replSet shard1 --config /soft/shardMongo/mongodb.conf                    在Master机器上执行副本集                      config={"_id" : "shard1","version" : 1,"members" : [{ "_id" : 1,"host":"192.168.62.153:17053"},{ "_id" : 2,"host":"192.168.62.154:17054"},{"_id":3,"host":"192.168.62.155:17055"}]}                    rs.initiate(config)                  4.4.2 启动分片副本集2,分片名称:shard2                   在155/153/152上执行                   cd /soft/shard2Mongo/bin                   ./mongod -shardsvr --auth --replSet shard2 --config /soft/shard2Mongo/mongodb.conf                  在Master机器上执行副本集       config={"_id" : "shard2","version" : 1,"members" : [{ "_id" : 1,"host":"192.168.62.155:17155"},{ "_id" : 2,"host":"192.168.62.153:17153"},{"_id":3,"host":"192.168.62.152:17152"}]}                    rs.initiate(config)
4.5、添加分片到Mongos。选择选择其中一台Mongos,连接后执行命令          ./mongo 192.168.62.153:27788          use admin          db.auth("superAdmin","admin123")          4.5.1、添加分片1:   sh.addShard("shard1/192.168.62.153:17053")  格式:分片名称/该分片中的至少一台Mongod实例。          添加成功显示:{ "shardAdded" : "shard1", "ok" : 1 }           ps:如果只是纯粹添加一台单机的mongd实例,直接执行sh.addShard("192.168.62.153:17053")          4.5.2、添加分片2: sh.addShard("shard2/192.168.62.155:17155")              如果提示错误:            "can't add shard shard2/192.168.62.155:17155 because a local database 'hezx' exists in another              shard1:shard1/192.168.62.153:17053,192.168.62.154:17054,192.168.62.155:17055            那么此时需要在shard1和shard2的master上去删除hezx数据库,然后在添加分片成功后,在mongos服务器上上操作创建数据库。
             在另外一台mongos服务器上也和如上命令一并操作。     4.5、对某个数据库开启分片     sh.enableSharding("hezx")
4.6、创建片键(片键需要是索引,如果集合中有数据,需要手动敲创建索引命令,如果没有建立索引,创建的过程中会自动建立)        原因是,片键要求是索引,且如果是复合索引就必须是索引的开头。如果集合中没有数据,此时会自动创建索引。      sh.shardCollection("hezx.message", { "to": 1 } )      说明:为hezx库的message集合创建以to为键片,可以是组合键。
至此,MongoDB的分片已经部署完毕。分片的相关命令如下: 1、sh.status(),查看分片的状态。有哪些分片,哪些数据库被分片了,片键是什么。 2、db.message.stats(),选择某个表,执行该命令,可以看到该表的分片情况,占用多大,数据多少。

www.htsjk.Com true http://www.htsjk.com/shujukunews/8501.html NewsArticle MongoDB3.0.1分片部署,国内3.0的部署文档还不是很多(何志雄)。,mongodb3.0.1何志雄 一)、分片包括: 1、至少3个config服务器:存储了数据块对分片的映射,用于判断数据存储在那个片上。...
评论暂时关闭