mongodb主从模式部署

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

mongodb部署采用主从模式,主节点为:peiwo-turn4,从节点为peiwo-proxy

1、创建部署用户与部署路径、日志、数据存放路径

在peiwo-proxy主机上执行以下操作

groupadd mongodb

useradd -g mongodb -d /usr/local/mongodb mongodb

mkdir -p /data0/mongodb/logs  #日志文件存放路径

mkdir -p /data0/mongodb/data/master #数据文件存放路径

mkdir -p /data0/mongodb/pid #pid文件存放路径

mkdir -p /usr/local/mongodb/etc #配置文件存放路径

日志、数据存放路径授权:chown -R mongodb.mongodb /data0/mongodb


在peiwo-turn4主机上执行以下操作

groupadd mongodb

useradd -g mongodb -d /usr/local/mongodb mongodb

mkdir -p /data1/mongodb/logs  #日志文件存放路径

mkdir -p /data1/mongodb/data/master #数据文件存放路径

mkdir -p /data1/mongodb/pid #pid文件存放路径

mkdir -p /usr/local/mongodb/etc #配置文件存放路径

日志、数据存放路径授权:chown -R mongodb.mongodb /data1/mongodb


2、下载软件并解压

curl -O http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.3.tgz && tar -zxvf mongodb-linux-x86_64-1.6.3.tgz -C /usr/local/mongodb


3、在/usr/local/mongodb/etc下新增配置文件

peiwo-turn4主机配置文件如下:master.conf

dbpath=/data1/mongodb/data/master

logpath=/data1/mongodb/logs/master.log

pidfilepath=/data1/mongodb/pid/master.pid

directoryperdb=true

logappend=true

port=21000

master = true

source=10.144.160.124:21000

oplogSize=100

fork=true

noprealloc=true



peiwo-proxy主机配置文件如下:slave.conf

dbpath=/data0/mongodb/data/slave

logpath=/data0/mongodb/logs/slave.log

pidfilepath=/data0/mongodb/pid/slave`.pid

directoryperdb=true

logappend=true

port=21000

slave = true

source=10.144.145.235:21000

oplogSize=100

fork=true

noprealloc=true

autoresync=true


4、启动/停止/进程查看

登陆mongodb服务器,切换到mongodb用户:su - mongodb

启动进程:./start.sh

停止进程:想结束mongodb,可以killall mongod,或者./mongo在控制台中,use admin  ,然后db.shutdownServer()来结束mongodb服务器。直接kill -9会使mongo非正常退出,可能会造成数据损坏问题。

查看进程运行状态:./ps.sh

查看日志:./taillog.sh

登陆mongodb客户端:./connect.sh





主从日常运维命令:



1、如果发现主从不同步,从上手动同步

db.runCommand({"resync":1}) 

2、状态查询

db.runCommand({"isMaster":1})  


3、在丛库上查询主库地址

> use local; 

switched to db local 

> db.sources.find(); 

{ "_id" : ObjectId("5551769ddf22026a698a271d"), "host" : "10.144.145.235:21000", "source" : "main", "syncedTo" : Timestamp(1431510735, 1) }


4、查看各Collection状态

db.printCollectionStats(); 


5、查看主从复制状态

db.printReplicationInfo(); 


6、测试主从

在主服务器新建数据库

mongo --port 21000

>show dbs 

>use elaindb 

>db.blog.save({title:"new article"}) 

在从服务器上查看同步数据

mongo --port 21000

在从库插入数据的操作 会提示 not master

> use elaindb; 

switched to db elaindb 

> db.blog.find(); 

{ "_id" : ObjectId("4e9174b48443c8ef12b30c56"), "title" : "new article" } 

查看主从同步信息:

> db.printReplicationInfo(); 

this is a slave, printing slave replication info. 

source:   10.0.0.11:27001 

         syncedTo: Sun Oct 09 2011 18:37:12 GMT+0800 (CST) 

                 = 19 secs ago (0.01hrs) 


>db.printSlaveReplicationInfo(); 

此为同步过来的数据,测试成功



7、Slave 顶替 Master

如果主服务器 10.144.145.235宕机了,

此时需要用 10.144.160.124机器来顶替 master 服务,


步骤如下:

停止 10.144.160.124 进程(mongod)

kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'` 

#删除 10.144.160.124 数据目录中的 local.*

rm -rf /data1/mongodb/data/master//local.* 

#以--master 模式启动 10.144.160.124




附录二、切换Master/Slave 角色

切换主库10.144.145.235和从库10.144.160.124 的角色

 

步骤如下:(命令略)

 

用fsync 命令暂停 主库 上的写操作,

关闭 从库 上的服务

清空 从库 上的local.*文件

用-master 选项重启 从库 服务

在 从库 上执行一次写操作,初始化oplog,获得一个同步起始点

关闭 从库 服务,此时 从库 已经有了新的local.*文件

关闭 主库 服务,并且用 从库 上新的local.*文件来代替 主库 上的local.*文件(建议先压缩再COPY)

用-master 选项重启 从库 服务

在启动slave的选项上加一个-fastsync 选项来重启 主库 服务




     本文转自aaron428 51CTO博客,原文链接:http://blog.51cto.com/aaronsa/1741516,如需转载请自行联系原作者





相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
5月前
|
NoSQL Cloud Native MongoDB
MongoDB 主从集群 2
MongoDB 主从集群 2
|
4月前
|
存储 NoSQL Linux
MongoDB【部署 02】mongodb使用配置文件启动、添加为系统服务及自启动(一个报错:[13436][NotMasterOrSecondary])
MongoDB【部署 02】mongodb使用配置文件启动、添加为系统服务及自启动(一个报错:[13436][NotMasterOrSecondary])
228 0
|
4月前
|
存储 JSON 分布式计算
MongoDB【部署 01】mongodb最新版本6.0.5安装部署配置使用及mongodb-shell1.8.0安装使用(云盘分享安装文件)
MongoDB【部署 01】mongodb最新版本6.0.5安装部署配置使用及mongodb-shell1.8.0安装使用(云盘分享安装文件)
156 0
|
6月前
|
运维 NoSQL 安全
【最佳实践】高可用mongodb集群(1分片+3副本):规划及部署
结合我们的生产需求,本次详细整理了最新版本 MonogoDB 7.0 集群的规划及部署过程,具有较大的参考价值,基本可照搬使用。 适应数据规模为T级的场景,由于设计了分片支撑,后续如有大数据量需求,可分片横向扩展。
498 1
|
7月前
|
NoSQL MongoDB 数据库
MongoDB 解析:灵活文档数据库与 Docker Compose 部署
`MongoDB` 是一款开源、高性能的 `NoSQL` 数据库,以其无模式的文档存储格式(BSON)而著称,广泛应用于众多开源项目,包括但不限于 Yapi 等。它在大规模数据存储和实时数据处理方面表现出色,因此备受青睐。在本文中,我们将深入探讨 `MongoDB` 的特性,并详细阐述如何使用 Docker Compose 轻松部署 `MongoDB` 数据库,为你提供全方位的指导。
241 1
MongoDB 解析:灵活文档数据库与 Docker Compose 部署
|
5月前
|
存储 NoSQL 网络协议
MongoDB 主从集群 1
MongoDB 主从集群 1
|
3月前
|
存储 NoSQL Linux
|
3月前
|
NoSQL 安全 物联网
检索时间减少83%!部署MongoDB后,通用电气医疗集团狠狠提升了物联网设备的利用效率!
作为医疗技术领域的全球领导者,通用电气医疗集团选择了 MongoDB由其管理旗下物联网设备,从部署(生命周期初期,即 BoL)到报废(生命周期结束,即 EoL)的整个生命周期
1828 3
检索时间减少83%!部署MongoDB后,通用电气医疗集团狠狠提升了物联网设备的利用效率!
|
4月前
|
存储 NoSQL MongoDB
MongoDB 助力移动式汽车保养运营模式优化,将开发请求减少 90%
MongoDB针对初级,中级及熟练的技术开发人员推出系列技术文章与行业案例。深入浅出地剖析MongoDB产品基础原理,使用技巧,典型行业场景及应用,还有Code Demo及线上线下活动推荐!
4846 1
MongoDB 助力移动式汽车保养运营模式优化,将开发请求减少 90%
|
4月前
|
存储 NoSQL MongoDB
MongoDB【部署 04】Windows系统实现MongoDB多磁盘存储
MongoDB【部署 04】Windows系统实现MongoDB多磁盘存储
200 0