副本集部署
- 一、什么是MongoDB ?
- 二、MongoDB副本集部署
一、什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
以在mongodb官网下载该安装包,地址为:https://www.mongodb.com/download-center#community
二、MongoDB副本集部署
环境准备工作:
服务器类型 | 系统版本 和 IP 地址 | 需要安装的组件 | 主机名 |
master 主服务器 | CentOS7.4(64 位) 192.168.80.10 | mongodb3.6.3 | master |
slave 从服务器 | CentOS7.4(64 位) 192.168.80.20 | mongodb3.6.3 | slave |
arbiter 服务器 | CentOS7.4(64 位) 192.168.80.30 | mongodb3.6.3 | arbiter |
所有服务器关闭防火墙和SElinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
以下操作在所有服务器上操作,不同之处已经标注!
1)下载mongodb安装包,我这边使用的是3.6.3
cd /opt
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.3.tgz
2)解压并移至/opt目录下统一管理
tar zxvf mongodb-linux-x86_64-rhel70-3.6.3.tgz
mv mongodb-linux-x86_64-rhel70-3.6.3 /usr/local/mongodb
cd /usr/local/mongodb/
3)新建 数据和日志等目录
mkdir -p data/db log etc
4)创建配置文件,指定数据和日志存储路径
vim etc/mongodb.conf //配置文件的内容如下:
-----------------------------------------
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
fork=true
bind_ip=192.168.80.10 #此处添加对应的本机IP
port=27077 #默认端口为27017 如果不加为默认端口
5)加入到环境变量中并开启mongodb服务
export PATH=$PATH:/usr/local/mongodb/bin/
mongod -f /usr/local/mongodb/etc/mongodb.conf
ss -anput|grep 27077 #检查端口是否开启
6)登录mongodb中显示已有库
mongo --host 192.168.80.10 --port 27077
show dbs //显示已有库
db //显示当前所在库
7)修改配置文件 3台都需要修改 在单机版基础上添加replSet=rs1
mongod --dbpath=/usr/local/mongodb/data/db/ --shutdown #关闭mongodb
echo "replSet=rs1" >> /usr/local/mongodb/etc/mongodb.conf #添加replset配置
cat /usr/local/mongodb/etc/mongodb.conf #查看确认配置是否正确
mongod -f /usr/local/mongodb/etc/mongodb.conf #再次开启mongodb
8)登陆MongoDB设置副本集,显示如图所示即可
mongo --host 192.168.80.10 --port 27077
config={
_id:"rs1",
members:[
{_id:0,host:"192.168.80.10:27077"},
{_id:1,host:"192.168.80.20:27077"},
{_id:2,host:"192.168.80.30:27077",arbiterOnly:true} #加仲裁节点
]
};
9)初始化设置并查看状态
rs.initiate(config) #初始化集群
rs.status() #查看集群状态
rs.isMaster() #查看是否为Master
10)在主服务器上添加测试数据
use test
db.test.save({a:1,b:2,c:3}) #写入数据
db.test.find() #本机查询测试
11)从服务器先授权运行查看数据,并测试数据同步
db.getMongo().setSlaveOk() #默认从库不能查询 要输入这条命令
db.test.find() #slave从库查询