主从复制是mongodb最常用的复制方式,这种方式很灵活.可用于备份,故障恢复,读扩展等.
一、 主从复制配置
服务器环境:CentOS6.6 64位系统
mongodb-master:172.32.2.131
mongodb-slave :172.32.2.132
1. 配置mongodb主库
vim /etc/mongod.conf修改配置文件内容如下:
logpath=/var/log/mongodb/mongod.log
logappend=true
fork=true
dbpath=/data/mongo
pidfilepath=/var/run/mongodb/mongod.pid
bind_ip=10.132.50.60,127.0.0.1
master=true
重启服务
/etc/init.d/mongod restart
2. 配置mongodb从库
vim /etc/mongod.conf修改配置文件内容如下:
logpath=/var/log/mongodb/mongod.log
logappend=true
fork=true
dbpath=/data/mongo
pidfilepath=/var/run/mongodb/mongod.pid
bind_ip=172.32.2.132,127.0.0.1
slave=true
source=172.32.2.131:27017
slavedelay=10
autoresync=true
#source 指定mongodb-master
#slavedelay 延迟复制,单位为秒
#autoresync 主从数据不一致时,自动重新同步
重启服务
/etc/init.d/mongod restart
二、 测试主从可用性
1. 看日志信息
tail -30f /var/log/mongodb/mongod.log
日志可以看到主从已经建立通信了(注意防火墙)
2. 主创建数据,看从是否同步
eg:
主库操作
show dbs
use new #创建数据库new(如果什么都不操作直接离开,这个库就会被系统删除)
db.test.save({title:"just test"})
db.test.find()
new是数据库名,test是集合名,{title:"just test"}是文档.
#Mongodb会给创建的数据库数据预分配数据库的空间,这使下次向数据库中插入数据更快了
Mongodb查看Collection(集合)状态
use new
db.printCollectionStats()
3. 查看主从复制状态
主库:db.printReplicationInfo()
从库:db.printSlaveReplicationInfo()