专栏首页运维博客mongoDB(二)mongoDB副本集实战

mongoDB(二)mongoDB副本集实战

mongoDB副本集实战

背景

mongoDB单台服务器的特点:

- 数据有丢失风险
- 单台服务器无法做高可用

mongoDB副本集的特点:

- 高可用架构,预防数据丢失
- 多台副本数据保持同步和一致
- mongodb副本集在有问题的时候自动切换

实战准备

副本集环境配置

  • 生产环境至少三台服务器 机器IP 主机名 mongo端口 配置文件路径 角色 192.168.56.11 centos7-node1 27017 /data/mongodb/27017/mongodb.conf

192.168.56.12 centos7-node2 27018 /data/mongodb/27018/mongodb.conf 192.168.56.13 centos7-node3 27019 /data/mongodb/27019/mongodb.conf

[root@centos7-node1 ~]# cd /opt/ && wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.17.tgz
[root@centos7-node1 ~]# tar xf /opt/mongodb-linux-x86_64-4.0.17.tgz
[root@centos7-node1 ~]# mv mongodb-linux-x86_64-4.0.17/ /usr/local/mongodb
[root@centos7-node1 ~]# mkdir -pv /data/mongodb/27017
[root@centos7-node1 ~]# vim /data/mongodb/27017/mongodb.conf 
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/27017/mongodb.log
storage:
  dbPath: /data/mongodb/27017/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 27017
  bindIp: 0.0.0.0
replication:
  replSetName: copySet
[root@centos7-node1 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27017/mongodb.conf    #启动服务
[root@centos7-node1 ~]# netstat -tanlp | grep mongo   #进程查看
  • 其他节点的配置只需要修改端口即可,然后修改配置文件,日志目录即可,下面是服务启动命令
[root@centos7-node2 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27018/mongodb.conf 
[root@centos7-node3 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27019/mongodb.conf 

副本集初始化

需要注意的事项:

  • 随便登录到一个mongdb
[root@centos7-node1 27017]# /usr/local/mongodb/bin/mongo localhost:27017   #登陆到第一台
> config={
 _id: "copySet",members:[
  {_id:0,host:"192.168.56.11:27017"},
  {_id:1,host:"192.168.56.12:27018"},
  {_id:2,host:"192.168.56.13:27019"},
 ]
}
> rs.initiate(config)
> rs.status()

测试副本集的数据同步

  • 插入数据只能从Primary进行,Secondary只能读取数据
copySet:PRIMARY> use test
copySet:PRIMARY> db.myuser.insert({userid:1})
  • 从库查询数据读取: 无异常则ok
copySet:SECONDARY> rs.slaveOk()
copySet:SECONDARY> show dbs
copySet:SECONDARY> use test
copySet:SECONDARY> db.myuser.find()
copySet:SECONDARY> rs.printSlaveReplicationInfo()    #查看从库延时

副本集的自动切换

  • 当primary挂了,会选举其中的一台作为primary
  • 如果集群之剩下一个实例的话,会出异常:(只有一台的话就是)
# 登陆primary,然后停服务
copySet:PRIMARY> use admin
copySet:PRIMARY> db.shutdownServer()

其余两台会选举primary节点

通过优先级指定primary

  • 默认的优先权重都是1
  • 副本集中的primary是选的权重最高的
  • 优先级权重设置如下[在primary节点设置]:
copySet:PRIMARY> conf = rs.config()
copySet:PRIMARY> conf.members[0].priority = 5
copySet:PRIMARY> conf.members[1].priority = 4
copySet:PRIMARY> conf.members[2].priority = 3
copySet:PRIMARY> rs.reconfig(conf)

副本集的伸缩

  • mongoDB副本集的拓展性非常好,往副本集里添加实例和删除实例都很方便
  • 添加副本集数据能够自动同步
  • 准备一个新的机器和副本,设置端口和配置文件是27020,还有副本名称
  • 集群中添加副本集是在primary上操作,步骤如下
[root@centos7-node4 ~]# vim /data/mongodb/27020/mongodb.conf 
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/27020/mongodb.log
storage:
  dbPath: /data/mongodb/27020/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 27020
  bindIp: 0.0.0.0
replication:
  replSetName: copySet
[root@centos7-node4 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27020/mongodb.conf    #启动新节点
copySet:PRIMARY> rs.add('192.168.56.14:27020')      #primary节点加入新的节点,然后数据自动同步
copySet:PRIMARY> rs.remove('192.168.56.14:27020')   #移除secondary

mongoDB的备份和恢复

  • 单台服务器,一定要备份
  • 备份还原工具有:
    • mongodump: 备份
    • mongostore: 还原
  • 副本集的备份要在primary上进行

全量备份与还原

~]# mkdir /data/mongodbbacku
~]# /usr/local/mongodb/bin/mongodump -h 127.0.0.1:27020 -o /data/mongodbbackup/     #备份数据
~]# /usr/local/mongodb/bin/mongorestore -h 127.0.0.1 --port 27021 /data/mongodbbackup/             #还原数据

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mongoDB (三) mongoDB分片集群

    configserver: 28017,28018,28019 三个端口搭建 route: 27017,27018,27019 三个端口搭建 shardserv...

    alexhuiwang
  • mongoDB (四) mongoDB认证

    三台副本集机器,设置好各自的端口:27017,27018,27019 我这边先用单节点三副本配置: 其余的配置文件改成对应端口和目录即可

    alexhuiwang
  • Go语言入门(一)

    alexhuiwang
  • 【通用方法】CentOS7 安装 Mogodb3.4(在线 && 离线)

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html 先说推荐安装:在线安装...

    逸鹏
  • 在线商城项目07-mac下mongodb的下载与配置

    这一章本来不想讲的,因为关于配环境这种事,其实网上真的很多资料,但是考虑到确实好多人都不喜欢配环境这种事,因为觉着很麻烦而止步不前,很是可惜。这一节我们来看看如...

    love丁酥酥
  • linux 下的 CentOS 6.8 安装mongodb

    [root@xxxx local]# curl -o mongodb-linux-x86_64-3.4.6.tgz https://fas tdl.mongod...

    学到老
  • 在pycharm上mongodb配置及可视化设置方法

    在官网下载适应于自己平台的mongodb,在此安装环境为Windows7-64bit

    砸漏
  • centos8 使用yum 安装 mongodb 4.2的方法

    参考 mongodb 官方的安装文档,使用下面的脚本制作Yum库安装mongodb4.2,但安装过程提示 “Failed to synchronize cach...

    砸漏
  • centos6.5 配置mongodb3

    deepcc
  • Spark整合Mongodb(附实例代码)

    环境准备 mongodb下载 解压安装 启动mongodb服务 $MONGODB_HOME/bin/mongod --fork --dbpath=/root/...

    挖掘大数据

扫码关注云+社区

领取腾讯云代金券