在生产环境中单台数据库已不能满足业务需求,数据库主从复制在架构中使用很常见,用于备份、高可用、读写分离来提高数据处理性能和冗余,常用架构模式是一主一从
[root@localhost ~]# mkdir /usr/local/mongodb/data
[root@localhost ~]# mkdir /usr/local/mongodb/logs
[root@localhost ~]# mkdir /usr/local/mongodb/conf
[root@localhost ~]# vi /usr/local/mongodb/conf/mongod.conf
port=27017
#端口号
fork=true
#以守护进程方式运行
logpath=/usr/local/mongodb/logs/mongodb.log #日志文件
logappend=true #日志输出方式
dbpath=/usr/local/mongodb/data #数据库位置
maxConns=1024 #数据库最大连接数
master=true
#主模式
oplogSize=2048 #日志滚动,单位M
2、从Mongodb配置
[root@localhost ~]# mkdir /usr/local/mongodb/data
[root@localhost ~]# mkdir /usr/local/mongodb/logs
[root@localhost ~]# mkdir /usr/local/mongodb/conf
[root@localhost ~]# vi /usr/local/mongodb/conf/mongod.conf
port=27017
fork=true
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongodb/data
maxConns=1024
slave=true
#从模式
source=192.168.0.201:27017 #指定主Mongodb
autoresync=true
#自动同步
3、添加环境变量并启动Mongodb
[root@localhost ~]# echo "PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mongod -f /usr/local/mongodb/conf/mongod.conf #启动
[root@localhost ~]# netstat -tupln | grep mongod
tcp
0 0 0.0.0.0:28017 0.0.0.0:*
LISTEN
1923/mongod
tcp
0 0 0.0.0.0:27017 0.0.0.0:*
LISTEN
1923/mongod
[root@localhost ~]# mongo
MongoDB shell version:2.4.9-rc0
> use test
> db.test.save({AGE:18})
> db.test.find()
{ "_id" :ObjectId("52addd66124c02eb8b2d1a5a"), "AGE" : 18 }
> show dbs
local 2.0771484375GB
test 0.203125GB
>
主日志

从日志

创建数据库后,由上主从日志看出,主允许从连接,从同步主数据(applied 1 operations)。主数据库操作记录为OpLog日志,,说明主从数据库原理是定期从主服务器中获取oplog记录,然后在本机上执行。
5、查看主从复制状态
#查看主

[root@localhost ~]# mongo
MongoDB shell version:2.4.9-rc0
connecting to: test
>db.printReplicationInfo()
configured oplog size: 2048MB
log length start to end:1494secs (0.42hrs)
oplog first event time: Sun Dec 15 2013 10:55:37 GMT-0500 (EST)
oplog last event time: Sun Dec 15 2013 11:20:31 GMT-0500 (EST)
now:
Sun Dec 15 2013 11:20:33GMT-0500 (EST)
>
#查看从

[root@localhost ~]# mongo
MongoDB shell version: 2.4.9-rc0
connecting to: test
>db.printReplicationInfo()
this is a slave, printingslave replication info.
source: 192.168.0.201:27017
syncedTo: Sun Dec 15 2013 11:18:31GMT-0500 (EST)
= 21 secs ago (0.01hrs)
>
#关闭Mongodb数据库
[root@localhost ~]# mongod -f/usr/local/mongodb/conf/mongod.conf --shutdown
#写一个简单的SysV管理脚本
[root@localhost ~]# vim /etc/init.d/mongod
#!/bin/bash
#chkconfig: 35 80 20
#description: Mongodb service control script
PROG="/usr/local/mongodb/bin/mongod"
CONF="/usr/local/mongodb/conf/mongod.conf"
case $1 in
start)
$PROG -f $CONF &> /dev/null
echo "Starting mongodb:
[ OK ]"
;;
stop)
$PROG -f $CONF --shutdown &> /dev/null
echo "Shutting down mongodb:
[ OK ]"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
[root@localhost ~]# chmod +x /etc/init.d/mongod
[root@localhost ~]# chkconfig --add mongod
[root@localhost ~]# chkconfig mongod on
Mongdb主从复制就完事了,比Myslq简单吧,比较灵活。
本文出自 ““企鹅”那点事儿” 博客,请务必保留此出处