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 测试主从同步

十五周一次课(4月2日)

2018-6-28

17.1 MySQL主从介绍17.2 准备工作17.3 配置主17.4 配置从17.5 测试主从同步

Linux mysql 5.7.23 主从复制(异步复制)

mysql做了主从,删除binlog日志