mongodb使用mongos链接复制集
我们知道mongodb现在生产环境大部分还是使用的复制集来作为主流,据我了解。很多公司现在都是使用复制集的方式,而我们通过mongos可以巧妙的解决链接的问题,我们先从环境说起:
server1:mongod primary+mongod config+mongos
server2:mongod primary+mongod config+mongos
server3:mongod primary+mongod config+mongos
其实就是一个分片复制集,只不过这里我们启动了一个分片节点,所有的数据库和集合并没有采用分片的操作,我们的所有链接可以通过三个mongos链接,三个mongos和mongo confir是独立的,目的是为了当其中一组down掉以后出现单点的问题。
server1:mongodb+config+mongos
server2:mongodb+config+mongos
两个mongod是一个复制集,两个config+mongos是各自独立的。
tar -zxvf mongodb-linux-x86_64-rhel62-3.4.2.tgz
mkdir /home/maxiangqian/
mv mongodb-linux-x86_64-rhel62-3.4.2 /home/maxiangqian/
2:加入环境变量
export PATH=/home/maxiangqian/mongodb-linux-x86_64-rhel62-3.4.2/bin:$PATH
3:创建用户和目录
[root@localhost mongodb]# mkdir -p /home/mongodb/db27017/data
[root@localhost mongodb]# mkdir -p /home/mongodb/db27017/log
[root@localhost mongodb]# mkdir -p /home/mongodb/db27017/tmp
[root@localhost mongodb]# mkdir -p /home/mongodb/db27017/key
4:关闭配置SELinux
vi /etc/selinux/config
配置:
[root@localhost log]# /sbin/iptables -I INPUT -p tcp --dport 27017 -j ACCEPT
[root@localhost log]# /sbin/iptables -I INPUT -p tcp --dport 27018 -j ACCEPT
[root@localhost log]# /sbin/iptables -I INPUT -p tcp --dport 27019 -j ACCEPT
[root@localhost log]# /etc/rc.d/init.d/iptables save
查看状态:/etc/init.d/iptables status
vi mongodb27017.conf
6:启动
mongod -f /home/mongodb/db27017/mongodb27017.cnf
7:为主实例配置超级管理员账号:maxiangqian
use admin
db.createUser(
{
user: "maxiangqian",
pwd: "maxiangqian",
roles: [ { role: "root", db: "admin" } ]
}
)
openssl rand -base64 756 > /home/mongodb/db27017/key/autokey
chmod 400 /home/mongodb/db27017/key/autokey
cp /home/mongodb/db27017/key/autokey /home/sa/
scp -P 9880 autokey sa@172.16.16.35:/home/sa/
9:初始化复制集
config = {
_id : "mongodbtestmxq",
members :
[
{ _id : 0, host : "172.16.16.34:27017" },
{ _id : 1, host : "172.16.16.35:27017" }
]
}
创建复制集配置对象,其中id=warringstates是表示复制集的名称
rs.initiate(config)
10:验证复制集
mongodbtestmxq:PRIMARY> use maxiangqian
switched to db maxiangqian
mongodbtestmxq:PRIMARY> db.maxiagnqian.insert({"id":1,"name":"maxiangqian"})
WriteResult({ "nInserted" : 1 })
mongodbtestmxq:PRIMARY> db.maxiagnqian.find()
{ "_id" : ObjectId("58eb1aaddf342c94989755e7"), "id" : 1, "name" : "maxiangqian" }
从节点验证:
mongodbtestmxq:SECONDARY> use maxiangqian
switched to db maxiangqian
mongodbtestmxq:SECONDARY> db.maxiagnqian.find()
{ "_id" : ObjectId("58eb1aaddf342c94989755e7"), "id" : 1, "name" : "maxiangqian" }
发现这个认证复制集搭建是OK的。
mongod -f /home/mongodb/config/mongoconfig27018.conf
然后我们看一下配置文件:
[root@localhost config]# cat mongoconfig27018.conf
dbpath=/home/mongodb/config/data/
configsvr=true
port=27018
keyFile=/home/sa/autokey
fork = true
logpath = /home/mongodb/config/log/mongo.logi
replSet=configmxq
初始化复制集,也要加认证,添加管理员账号:
config = {
_id : "configmxq",
members :
[
{ _id : 0, host : "172.16.16.34:27018" },
{ _id : 1, host : "172.16.16.35:27018" }
]
}
rs.initiate(config)
12:启动mongos
[root@localhost mongos]# cat mongos27019.conf
port=27019
configdb=configmxq/172.16.16.34:27018,172.16.16.35:27018
keyFile=/home/sa/autokey
fork = true
logpath = /home/mongodb/mongos/log/mongo.log
然后直接进行启动:
mongos -f /home/mongodb/mongos/mongos27019.conf
13:进入mongos进行分片的设置:
mongos> use admin
switched to db admin
mongos> db.auth("maxiangqian","maxiangqian")
1
mongos> show dbs
admin 0.000GB
config 0.000GB
maxiangqian 0.000GB
mongos> db.maxiangqian.find()
mongos> use maxiangqian
switched to db maxiangqian
mongos> db.maxiangqian.find()
mongos> db.maxiangqian.insert({"id":2,"name":"maxiangqian2"})
WriteResult({ "nInserted" : 1 })
从主库直接插入一条数据:
mongodbtestmxq:PRIMARY> db.maxiangqian.insert({"id":3,"name":"maxiangqian3"})
然后返回mongos直接进行查看:
mongos> db.maxiangqian.find()
{ "_id" : ObjectId("58eb34a9289626fe9f9c2586"), "id" : 2, "name" : "maxiangqian2" }
{ "_id" : ObjectId("58eb35516c6683eeb8a72b9a"), "id" : 3, "name" : "maxiangqian3" }
看到数据是没问题的。应该是配置好了。到这里,也算配置结束了。
下面还是贴一下基本的配置文件吧,方便大家查阅:
dbpath = /home/mongodb/db27017/data/
logpath = /home/mongodb/db27017/log/mongo.log
pidfilepath = /home/mongodb/db27017/tmp/mongo.pid
keyFile = /home/sa/autokey
directoryperdb = true
logappend = true
smallfiles = true
fork = true
auth = true
port = 27017
replSet = mongodbtestmxq
maxConns = 10240
shardsvr=true
2:config配置文件
dbpath=/home/mongodb/config/data/
configsvr=true
port=27018
keyFile=/home/sa/autokey
fork = true
logpath = /home/mongodb/config/log/mongo.log
replSet=configmxq
3:mongos配置文件
port=27019
configdb=configmxq/172.16.16.34:27018,172.16.16.35:27018
keyFile=/home/sa/autokey
fork = true
logpath = /home/mongodb/mongos/log/mongo.log
mongodb使用mongos链接复制集的更多相关文章
- Studio 3T for MongoDB连接51.212复制集
Studio 3T for MongoDB连接51.212复制集 [ #DirectConection Authentication Mode - Basic(MONGODB-CR or SCEAM- ...
- mongodb 3.4分片复制集配置
1:启动三个实例 mongod -f /home/mongodb/db27017/mongodb27017.conf mongod -f /home/mongodb/db27018/mongodb27 ...
- MongoDB之Replica Set(复制集复制)
MongoDB支持两种复制模式: 主从复制(Master/Slave) 复制集复制(Replica Set) 下面主要记录我在centos虚拟机上安装replica set,主要参考:http://d ...
- Mongodb Manual阅读笔记:CH8 复制集
8 复制 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- MongoDB复制集高可用选举机制(三)
复制集高可用选举机制 在上一章介绍了MongoDB的架构,复制集的架构直接影响着故障切换时的结果.为了能够有效的故障切换,请确保至少有一个节点能够顺利升职为主节点.保证在拥有核心业务系统的数据中心中拥 ...
- MongoDB之分片集群与复制集
分片集群 1.1.概念 分片集群是将数据存储在多台机器上的操作,主要由查询路由mongos.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)
原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...
- MongoDB复制集成员及状态转换
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 复制集(Replica Set)是MongoDB核心组件,相比早期版本采用的主从(Master-Slave) ...
- MongoDB学习笔记(六)--复制集+sharding分片 && 总结
复制集+sharding分片 背景 主机 IP 服务及端口 Server A ...
随机推荐
- Junit处理异常
当一个被测类中有异常时,如何处理? 如:一个原始的被测类; public class UserExceptionDemo { public int age; public String name; p ...
- bootstrap table 以及xEdittable的应用
以前一直没有用过 bootstrap 表格框架,因为项目css框架用的是bootstrap,为考虑到统一性的原因,所以选用了这个框架 步骤: 第一步:引用 <link href=" ...
- pow() 函数
pow() 函数用来求 x 的 y 次幂(次方),其原型为: double pow(double x, double y); #include<iostream> #include< ...
- centos7 mariadb 设置root密码
centos7 mariadb 设置root密码 修改root密码1.以root身份在终端登陆,必须2.输入 mysqladmin -u root -p password root后面的 root ...
- bzoj 3512: DZY Loves Math IV
Description 给定n,m,求 模10^9+7的值. Solution 设 \(S(n,m)\) 表示 \(\sum_{i=1}^{m}\phi(n*i)\) \(Ans=\sum_{i=1} ...
- 获取单个checkbox选中项
1.获取单个checkbox选中项(三种写法)$("input:checkbox:checked").val()或者$("input:[type='checkbox']: ...
- 对象和类型(数组、ref、out)
class Program { //数组是引用类型 //如果把数组或类等其他引用类型传递给方法,对应的方法就会使用该引用类型改编数组中值, //而新值会反射到原始数组上 static void Som ...
- Spring.Net IOC基本应用和在MVC4中的应用
1.Spring.Net的IOC简单应用 新建一个解决方案添加一个控制台应用程序和一个业务层一个业务层的接口层,通过配置,让控制台应用程序调业务层的方法 1)新建如下图所示,BLL为业务层,通过Spr ...
- Winform DataGridView列的单元格中动态添加图片和文字
先上图在说,第二列中图片和文字的样式 1.需要重写DataGridViewTextBoxColumn,新建类TextAndImageColumn.cs using System; using Syst ...
- Flash流媒体服务器软件
所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看.收听(即所谓的“在线欣赏”),而不需要等整个压缩文件下载到自己的机器上才可以欣赏的网络传输技术.目 ...