mongo服务器集群配置学习一主从复制 主从复制是mongodb最常用也是最简单的复制操作。常用于数据备份和故障修复等。 下面这个图就是最简单的主从复制的服务器架构 我将以实验的方式来实现mongodb的主从复制 实验环境:windows操作系统(一台机器启动多个mongo
mongo服务器集群配置学习一——主从复制
主从复制是mongodb最常用也是最简单的复制操作。常用于数据备份和故障修复等。
下面这个图就是最简单的主从复制的服务器架构
我将以实验的方式来实现mongodb的主从复制
实验环境:windows操作系统(一台机器启动多个mongodb数据库),mongodb 2.4
说明:
1.mongodb以配置文件的形式启动
2.以执行保存的bat文件代替每次输入cmd中输入命令
步骤:
1.配置主节点并启动,端口为10001,下图为配置的文件结构
其中config.cnf的内容为
dbpath=d:\mongodb\test\copy\10001\data
bind_ip=127.0.0.1
port=10001
master=true
用startup.bat启动主节点:mongod -f config.cnf
用shell.bat启动shell:mongo 127.0.0.1:10001
其中master参数为true说明这台是主节点
2.配置从数据库,端口为10002
config.cnf的内容为
dbpath=d:\mongodb\test\copy\10002\data
bind_ip=127.0.0.1
port=10002
slave=true
source=127.0.0.1:10001
用startup.bat启动从节点:mongod -f config.cnf
用shell.bat启动shell:mongo 127.0.0.1:10002
slave参数设置从节点,source从数据库对应的主节点的地址
3.下面就来做下验证,在10001主节点上的person数据库添加集合baseinfo,并添加一条文档
这个时候再来10002从节点查询,就可以看到这条同样的数据已经复制过来了。
4.其他参数
--only 从节点配置,只复制特定某个数据库
--autoresync 从节点配置,如果主节点与从节点数据不同,则自动重新同步。配置这个节点可以给运行了一段时间的主节点加上一个新节点,则这个新节点会把之前的主节点数据全部同步过来,而不是从现在这个时间同步。
--slavedelay 从节点配置,从数据库延迟同步主数据库的时间
--fastsync 从节点配置,以主节点的数据库快照启动从节点,可以加快启动速度。
--oplogsize 主节点配置,主节点oplog大小,主节点会把数据库操作的日志写在oplog中,从节点参考oplog做复制操作,可以根据自身情况调节日志大小。如果不指定oplogsize大小,mongod将指配5%的可用磁盘空间给他,32位机最小是50m,64位机最小是1g。
动态添加删除主从节点
先看看从节点的对于主节点的配置在哪,在从节点的local数据库的sources集合中,查看信息如下:
现在再启动一台普通的节点,不设置任何主从,端口设为10003
dbpath=d:\mongodb\test\copy\10003\data
bind_ip=127.0.0.1
port=10003
slave=true
启动后,动态的把10003加入到主从架构中,形成如下的结构
在10003的shell中执行下面脚本即可。
use local
db.sources.insert({host:127.0.0.1:10001})
这样10003就作为10001的从节点了
删除主从关系就用db.sources.remove({host:127.0.0.1:10001})
主节点往从节点转移
永久的转移一个损坏的和不可用的主节点a到从节点b,有以下步骤:
1.关闭a节点
2.停止b节点的mongod
3.对b节点的dbpath目录下的文件进行备份和移动
注:删除local.*是不可撤销的。执行此步骤非常谨慎。
4.在b节点上用--master参数重启mongod
调换主节点和从节点
有一个主节点a和一个从节点b,如果想调换他们的角色,请按下面的步骤,这里假设a是健康的,可更新的可用的
如果a是不是健康的,但硬件是好的(停电,服务器崩溃等),跳过步骤1和2,并在第8步用b的文件取代所有的文件。
如果a是不是健康的,硬件是不好的,将a替换为一台新机器。可以按照上段中的说明。
1.暂停在a上使用fsync命令
2.确定b是在同步节点a
3.关闭b节点
4.从b的dbpath目录备份和移动的所有数据文件,并删除现有的数据local.sources。
5.用master选项启动b
6.往b中写入数据,用oplog设置新的同步开始时间点
7.关闭b,当重启时b就有新的一组本地数据
8.关闭a,用备份b的dbpath目录文件复制到a的dbpath中
9.用master选项启动b
10.用通常slave选项启动a,但要包括fastsync参数