900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【MongoDB】MongoDB备份恢复与集群搭建方案

【MongoDB】MongoDB备份恢复与集群搭建方案

时间:2019-02-19 13:21:08

相关推荐

【MongoDB】MongoDB备份恢复与集群搭建方案

MongoDB持久化与集群搭建实例

一、mongoDB备份与恢复1.1 mongodump命令来备份数据1.2 MongoDB数据恢复二、集群搭建2.1 机制2.2 架构2.3 搭建步骤2.3.1 准备三台虚拟机服务器,并各自安装好mongoDB2.3.2 修改mongodb.conf文件2.3.3 初始化复制集2.3.4 查看集群状态2.3.5 测试2.3.6 测试复制集主从节点故障转移功能2.3.7主复制集添加仲裁者(arbiter)

一、mongoDB备份与恢复

1.1 mongodump命令来备份数据

该命令可以导出所有数据到指定目录中。

mongodump命令可以通过参数指定导出的数据量级转存的服务器。

语法:

>mongodump -h dbhost -d dbname -o dbdirectory

-h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d: 需要备份的数据库实例,例如:test

-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自 动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

示例:

在本地使用 27017 启动你的mongod服务。打开命令提示符窗口,进入MongoDB安装目录的bin目录输入命令mongodump:

>mongodump

执行以上命令后,客户端会连接到ip为 127.0.0.1 端口号为 27017 的MongoDB服务上,并备份所有数据到 bin/dump/ 目录中。命令输出结果如下:

[root@localhost bin]# mongodumpwriting admin.system.version todone dumping admin.system.version (1 document)writing mydb1.users towriting mydb1.student todone dumping mydb1.users (4 documents)done dumping mydb1.student (0 documents)

mongodump 命令可选参数列表如下所示:

1.2 MongoDB数据恢复

mongodb使用 mongorestore 命令来恢复备份的数据。

语法:

>mongorestore -h <hostname><:port> -d dbname <path>

–host <:port>, -h <:port>:

MongoDB所在服务器地址,默认为: localhost:27017

–db , -d :

需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

–drop:

恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都 会被删除,慎用哦!

mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。 你不能同时指定 和 --dir 选项,–dir也可以设置备份目录。

–dir:

指定备份的目录

你不能同时指定 和 --dir 选项。

接下来执行以下命令:

>mongorestore

输出结果如下:

[root@localhost bin]# mongorestore.....no indexes to restorefinished restoring mydb1.users (4 documents)done

二、集群搭建

集群搭建方式之一就是mongoDB复制集,即一组mongod的进程。他们维护同一个数据集合。复制集保证了数据的可靠性和高读取能力。

2.1 机制

一组复制集就是一组mongod实例管理同一个数据集,实例key在不同的机器上,实例包含主实例 (primary),接受所有的写操作,其他的属于副本实例(Secondary),从服务器保持与主服务器数据同步,类 似于redis中的主从复制。

每个复制集还有一个仲裁者(Arbiter),仲裁者的任务就是通过心跳机制来确认集群中集合的数量,并在选举主服务器的过程中进行裁决。仲裁者并不存储数据,性质等价于redis中的哨兵机制。

2.2 架构

在数据承载节点中,一个且只有一个成员被视为主节点,而其他节点则被视为辅助节点。节点接收所有写入操作,一个副本集只能有一个主实例能够写入,主节点记录所有变更到它的记录

辅助节点复制主节点的 oplog 并将操作应用于数据集。

也可以将一个额外的实例作为仲裁者添加到副本集。仲裁员不维护数据集,仲裁器的目的是通过响应其 他副本集成员的心跳和选择请求来维护副本集中的仲裁。因为它们不存储数据集,所以仲裁器是提供副本集仲裁功能的一种好方法。

与具有数据集的完全功能副本集成员相比,仲裁器的资源成本更低,如果副本集的成员数为偶数,则添加一个仲裁器以在初选中获得多数票。

当一个主服务器在超过配置的周期(默认为 10 秒)内未与该组的其他成员通信时,符合条件的辅助服务器将要求选择将其自身指定为新的主服务器。集群试图完成新的初选并恢复正常操作。

2.3 搭建步骤

2.3.1 准备三台虚拟机服务器,并各自安装好mongoDB

注:为了保证复制集中三个服务器之间正常连接,请保证三个服务器的防火墙都已关闭!

192.168.122.130:27017192.168.122.131:27017192.168.122.132:27017

2.3.2 修改mongodb.conf文件

添加replSet配置(三台都需要修改成同一个名称),然后启动服务器

#复制集名称replSet=rep1

2.3.3 初始化复制集

登录任意一台执行初始化操作

rs.initiate({_id:'rep1',members:[{_id:1,host:'192.168.122.130:27017'},{_id:2,host:'192.168.122.131:27017'},{_id:3,host:'192.168.122.132:27017'}]})

说明: _id 指复制集名称,members指复制集服务器列表,数组中的_id是服务器唯一的id,host服务器主机ip

2.3.4 查看集群状态

rs.status()

2.3.5 测试

#添加数据db.users.insert({"name":"lisi","age":11})#查询数据db.users.find()#切换到从数据库查询数据如果不允许查询,是因为默认情况下从数据库是不允许读写操作的,需要设置。>rs.slaveOK()执行该命令后可以查询数据

2.3.6 测试复制集主从节点故障转移功能

#关闭主数据库,注意从数据库的变化>db.shutdownServer()

2.3.7主复制集添加仲裁者(arbiter)

现在我们的环境是一主两从,仲裁者对偶数集群有效。需要停止一个从机,在主服务器中运行下面命令

# 删除从节点rs.remove("ip:端口号")

在一主一从关系中,任意节点宕机都无法选举出主节点,无法提供写操作,此时需要加入仲裁者节点即可。

rs.addArb("ip:端口号")

现在我们的环境是一主两从,仲裁者对偶数集群有效。需要停止一个从机,在主服务器中运行下面命令

# 删除从节点rs.remove("ip:端口号")

在一主一从关系中,任意节点宕机都无法选举出主节点,无法提供写操作,此时需要加入仲裁者节点即可。

rs.addArb("ip:端口号")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。