17.主从备份

1.主从备份实践

1.创建数据库数据存放文件夹

这里写图片描述

2.创建启动脚本文件

这里写图片描述

这里写图片描述

这里写图片描述

master

创建mongodb.conf文件

dbpath = E:\MyProgram\MongodbDATA\07\8888  #主数据库地址
port = 8888 #主数据库端口号
bind_ip = 127.0.0.1 #主数据库所在服务器
master = true #表明身份--主服务器

创建mongod服务启动脚本文件 mongodbService8888.bat

mongod  --config C:\Users\dxf\Desktop\mongo\07_master_slave\master\mongodb.conf

创建客户端启动脚本 mongo8888Shell.bat

mongo 127.0.0.1:8888

slave

创建mongodb.conf文件

dbpath = E:\MyProgram\MongodbDATA\07\7777  #从数据库地址
port = 7777 #主数据库端口号
bind_ip = 127.0.0.1 #主数据库所在服务器
source = 127.0.0.1:8888 #源数据的ip和端口
slave = true #表明身份--从服务器

创建mongod服务启动脚本文件 mongodbService7777.bat

mongod  --config C:\Users\dxf\Desktop\mongo\07_master_slave\slave\mongodb.conf

**创建客户端启动脚本**mongo7777Shell.bat

mongo 127.0.0.1:7777

3.实验

依次启动mongodbService8888.bat和mongodbService7777.bat 两个服务

启动 mongo8888Shell.bat shell客户端,写入一些数据

> show dbs
local   0.09375GB
> use foobar
switched to db foobar
> db.foobar.insert({name:"master-slave-test"})
> db.foobar.find()
{ "_id" : ObjectId("5858ed67e0041ee00b1c185a"), "name" : "master-slave-test" }
>

启动 mongo7777Shell.bat shell客户端,查看写入的数据是否被同步到了从服务器上

> show dbs
foobar  0.03125GB
local   0.03125GB
> use foobar
switched to db foobar
> db.foobar.find()
{ "_id" : ObjectId("5858ed67e0041ee00b1c185a"), "name" : "master-slave-test" }

这里写图片描述

2.主从复制的其他设置项

参数含义
–only从节点->指定复制某个数据库,默认是复制全部数据库
–slavedelay从节点->设置主数据库同步数据的延迟(单位是秒)
–fastsync从节点->以主数据库的节点快照为节点启动从数据库
–autoresync从节点->如果不同步则从新同步数据库
–oplogSize主节点->设置oplog的大小(主节点操作记录存储到local的oplog中)

3.利用shell动态添加和删除从节点

操作前需注意

因为我们模拟动态添加/删除从节点,所以从节点的mongd服务启动脚本中,注释掉”sources”参数的那一行,即不告诉从节点要连接的主服务器是谁。

启动完主从两个服务之后,在从节点中进行操作:

> use local
switched to db local
> db.sources.find()
{ "_id" : ObjectId("5858ed20a6be28785713ade8"), "host" : "127.0.0.1:8888", "sour
ce" : "main", "syncedTo" : { "t" : 1482225705000, "i" : 1 } }

不难看出,从节点中关于主节点的信息全部存到 local 的 sources 的集合中
我们只要对集合进行操作就可以动态操作主从关系

挂接主节点:操作之前只留下从数据库服务

db.sources.insert({“host”:”127.0.0.1:8888”})

删除已经挂接的主节点:操作之前只留下从数据库服务

db.sources.remove({“host”:”127.0.0.1:8888”}) 

不建议使用主从复制的原因

  主从复制是MongoDB最初使用的复制范式。这种复制易于配置。能支持任意数量的从节点,但是出于一些原因,我们不再推荐在生产部署一中使用主从复制了。

  首先, 故障转移完全是人工操作的。如果主节点发生数障,管理员必须关闭某个从节点,把它重启为主节点,随后应用程序必须重新配配置以指向新的主节点。其次,恢复很困难。因为oplog仅存在于主节点上。这意味着在发生故障时,其他现有节点都需要从新的主节点上重新进行同步。

  简而言之, 没有什么有说服力的理由使用主从复制。副本集才是正途,你应该使用这种复制方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值