17.主从备份
Posted 大数据小小罗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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仅存在于主节点上。这意味着在发生故障时,其他现有节点都需要从新的主节点上重新进行同步。
简而言之, 没有什么有说服力的理由使用主从复制。副本集才是正途,你应该使用这种复制方式。
以上是关于17.主从备份的主要内容,如果未能解决你的问题,请参考以下文章
17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试主从同步