一、mongodb主从复制配置
主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等.
最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址.
结构图:
配置主从复制的注意点:
- 在数据库集群中要明确的知道谁是主服务器,主服务器只有一台.
- 从服务器要知道自己的数据源也就是对应的主服务是谁.
- –master用来确定主服务器,–slave 和 –source 来控制从服务器
这里在本机上用一主一从实现mongodb的复制:
master.conf:
dbpath = /home/wang/mongodbDATA/master #主数据库地址
port = 8888 #主数据库端口号
bind_ip = 127.0.0.1 #主数据库所在服务器
master = true #确定我是主服务器
slave.conf:
dbpath = /home/wang/mongodbDATA/slave #从数据库地址
port = 7777 #从数据库端口号
bind_ip = 127.0.0.1 #从数据库所在服务器
source = 127.0.0.1:8888 #确定主数据库端口
slave = true #确定自己是从服务器
分别启动两台服务器:
mongod --config master.conf
mongod --config slave.conf
启动两个shell客户端:
mongo 127.0.0.1:8888
mongo 127.0.0.1:7777
我们给主服务器添加数据:
>use master_slave
> function add(){
... var i = 0;
... for(;i<50;i++){
... db.persons.insert({
"name":"wang"+i})
... }
... }
> add()
>db.persons.find()
.....一批数据
如上的操作比较简单,此处不在多说。现在主服务器添加了50条数据后,我们打开从服务器,会惊奇的发现,从服务器中也存在如上的50条数据。
此时,我们得到一个结论:
当配置完主从服务器后,一但主服务器上的数据发生变化,从服务器也会发生变化
主从复制的原理–oplog
在主从结构中,主节点的操作记录成为oplog(operation log)。oplog存储在一个系统数据库local的集合oplog.$main中,这个集合的每个文档都代表主节点上执行的一个操作。
从服务器会定期从主服务器中获取oplog记录,然后在本机上执行!对于存储oplog的集合,MongoDB采用的是固