- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数据库运维赵鹏飞主讲人:复制数据文件人工智能技术专业群教学资源库
备份数据库的第二种方式是复制存放数据文件夹下的所有文件。此方法不仅可以使用在MongoDB数据库中,还可以用在所有数据库中。
复制数据文件由于数据库在使用过程中,数据库中的数据可能会一直处于变化状态,所以在采用此方法时,需要先将数据库上锁。数据库上锁的命令如下:此命令会将数据库锁定,禁止所有的数据文件的写入,并会对数据库进行同步。其实就是将所有的“脏页”存储到磁盘中,用来保证数据库中的文件是最新的,而且对其上锁,使其在解锁前不会更改。系统为了提高读写速度,会将读写比较频繁的数据(例如数据库数据)提前存放至内存中,而这种缓存被称为“高速缓存”。高速缓存的单位是“页”,当一些软件或进程对高速缓存进行更改后,此页的高速缓存就被系统内容标记为“脏页”,脏页的数据会在合适的时间被系统写入磁盘中。而MongoDB的fsyncLock()方法就是将内容同步至系统磁盘中,同时对其进行锁定。db.fsyncLock()
复制数据文件当此命令运行之后,MongoDB服务器会将所有之后的对数据库的写入操作放置于等待队列,并且在对MongoDB解锁前不会对这些操作进行处理。需要注意的是,该命令会停止所有的MongoDB数据库的写操作,而不仅仅是当前已经连接的数据库。当该命令执行完成后(命令有返回值),就可以将数据存储目录的所有数据文件进行拷贝,并将其粘贴到预先准备的放置备份目录(该目录由用户指定)。在执行“拷贝——粘贴”操作时,需要注意:必须将数据目录中的所有文件进行“拷贝——粘贴”操作,如果遗漏了其中的文件或者是文件夹,会导致备份的失败,其备份文件会变得“不可用”。在此建议使用“Ctrl+A”对文件进行全选操作。MongoDB文件夹“拷贝——粘贴”。
复制数据文件效果如图所示。
复制数据文件粘贴至预先准备的存放目录,如下所示。
复制数据文件完成“拷贝——粘贴”备份后,需要使用命令将锁定解除,解除锁定命令为:在完成此命令后(命令行有正常返回值),MongoDB服务器会开始正常的处理写入操作。上述为MongoDB采用复制数据库文件的备份方式,但是在使用此方法时还需要注意一点,就是对于MongoDB数据库采用了“身份验证”的情况下。如果启用了MongoDB身份验证,在使用fsyncLock()和fsyncUnlock()时,不可关闭Shell(不要断开服务器连接)。因为使用fsyncLock()方法之后,如果将服务器连接断开,那么MongoDB服务器可能无法重连,如果想要对服务器进行重连,那么必须要重新启动MongoDB服务器,并且fsyncLock()方法在重启后不会保持重启之前的状态。这是因为MongoDB服务器总是以非锁定的模式启动。db.fsyncUnlock();
复制数据文件使用复制数据文件的方法备份MongDB数据库,也并不是必须使用fsyncLock()方法,还可以关闭MongoDB服务器,因为当MongDB服务器关闭时,MongoDB服务器会将所有对数据库的更改保存到磁盘中,此时就可以对数据文件进行“拷贝——粘贴”的操作,结束之后再启动mongod。如果要恢复备份,需要在MongoDB没有启动的情况下,将备份的文件拷贝至MongoDB数据库的数据文件目录中,在拷贝的之前,一定要保证待恢复的数据目录为空。“拷贝——粘贴”完成后,启动MongoDB,并执行如下命令。mongod–fmongod.conf
复制数据文件该方法相较于文件系统快照备份有一个优势,对于明确知道需要备份的数据库,可以使用此方法备份单独的数据库。例如:如果想要备份名为test的数据库,就可以将所有的test.*的文件进行“拷贝——粘贴”的方法,放置在提前准备好的备份文件存放目录,然后使用上述的方法进行备份和恢复操作。注意:如果在使用MongoDB数据库的过程中,如果数据库异常退出,建议采用备份文件替换整个数据目录,然后再启动MongoDB服务器的方法恢复备份。
文档评论(0)