Linux下Mongodb数据库主从复制配置
Mongodb的三种集群搭建的方式:
Master-Slaver:主从[目前被副本集取代]。
Replica Set:副本集。
Sharding:切片。
Mongodb单实例缺点:
适合简易开发时使用,生产使用不行,因为单节点挂掉整个数据业务全挂。
主从复制:
MongoDB常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活。可用于备份,故障恢复等等。
最基本的设置方式是建立一个主节点和一个/多个从节点,当主节点挂掉了后从节点可以接替主机继续服务。
主从复制缺点[见文章结尾]
原理:
主从结构中,主节点的操作记录oplog[operation log]。
oplog存储在一个系统数据库local的集合oplog.$main中,这个集合的每个文档都代表主节点上执行的一个操作。
从服务器会定期从主服务器中获取oplog记录,然后在本机上执行。
对于存储oplog的集合,MongoDB采用的是固定集合,随着操作过多,新的操作会覆盖旧的操作。
准备:
192.168.102.111 master
192.168.102.112 slave
关于mongodb的安装详见:
第四篇:linux系统中mongodb的配置
提示:
建议两台机器都关闭防火墙
1、 修改master配置文件
192.168.102.111 master
vi ~/mongodb3.0/etc/mongodb.conf
port=27017
bind_ip=192.168.102.111
dbpath=/home/odysee/mongodb3.0/data/db/
logpath=/home/odysee/mongodb3.0/logs/mongodb.log
logappend=true
journal=true
fork=true
#主服务器
master=true
#同步复制的日志大小设置,单位MB
oplogSize=2048
2、修改slave配置文件
192.168.102.112 slave
vi ~/mongodb3.0/etc/mongodb.conf
port=27017
bind_ip=192.168.102.112
dbpath=/home/odysee/mongodb3.0/data/db/
logpath=/home/odysee/mongodb3.0/logs/mongodb.log
logappend=true
journal=true
fork=true
#主数据库端口
source=192.168.102.111:27017
#从服务器
slave=true
#设置从库同步主库的延迟时间,秒
slavedelay=10
#主从库数据不一致时,自动同步
autoresync=true
3、开启master的mongod服务
bin/mongod --config ~/mongodb3.0/etc/mongodb.conf
开启mongo客户端
bin/mongo 192.168.102.111
4、 开启slave的mongod服务
bin/mongod --config ~/mongodb3.0/etc/mongodb.conf
开启mongo客户端
bin/mongo 192.168.102.112
5、 测试数据同步
在master中新建demo库插入测试数据
> use demo;
switched to db demo
> db.demo.insert({"name":"odysee1"})
WriteResult({ "nInserted" : 1 })
> db.demo.insert({"name":"odysee2"})
WriteResult({ "nInserted" : 1 })
> db.demo.insert({"name":"odysee3"})
WriteResult({ "nInserted" : 1 })
> db.demo.find()
{ "_id" : ObjectId("5c37b2780ecf620bd11f14c8"), "name" : "odysee1" }
{ "_id" : ObjectId("5c37b27b0ecf620bd11f14c9"), "name" : "odysee2" }
{ "_id" : ObjectId("5c37b27e0ecf620bd11f14ca"), "name" : "odysee3" }
在slave中查看
Error: listDatabases failed:{ "note" : "from execCommand