首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >制作热备份MongoDB(TokuMX)数据库实例的最佳方法

制作热备份MongoDB(TokuMX)数据库实例的最佳方法
EN

Stack Overflow用户
提问于 2014-03-21 09:48:53
回答 1查看 1.9K关注 0票数 2

对于在生产中运行的TokuMX服务器的远程数据库备份(没有切分和复制),我有几个问题。单个子句是“不要停止运行Tokumx实例”。

  1. 运行TokuMX服务器的热备份的最佳方法是什么(企业版的TokuMX热备份除外)。
  2. 关于建议的MongoDB备份方法的问题: 备份-主机# mongodump -主机mongodb-主机-端口27017 -db mongodevdb -用户名mongouser -密码单

代码语言:javascript
复制
- Is this command prefer way to make hot backups?
- What port should I use when issue this command?
- Is it good approach to use this command by cron and run it every day?
- Is there any pitfalls in this command?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-22 20:02:06

免责声明:我在Tokutek工作,我是一名在TokuMX工作的工程师。

没有“最佳”方法来备份TokuMX,每个应用程序都是不同的,最好理解所有选项并做出自己的决定。

TokuMX的备份选项如下:

  1. 企业热备份。
  2. 文件系统级快照(LVM、EBS、xfs_freeze)用于复制dbpath和logDir中的所有内容。
  3. 使用蒙蒂甘。

请注意,fsyncLock不工作,因为即使客户端线程没有执行任何操作,后台线程仍然会写入文件系统。使用fsyncLock只会给您提供损坏的备份。

文件系统快照和企业热备份都具有复制序列化的压缩数据的优点,因此避免了查询所有集合和通过有线传输未压缩的BSON数据的成本。此外,这些选项不会破坏缓存表中关于哪些数据是最重要的信息,而mongodump将导致所有内容被分页,可能会将对您的应用程序有用的数据逐出。

与文件系统级快照相比,企业热备份具有更低的成本(您不需要像快照那样预留额外的空间),可以通过节流来满足I/O配额,备份的结果状态是备份完成时的状态,而不是启动时的状态。因此,如果为备份复制数据需要12小时,那么文件系统级的快照备份将落后于热备份插件所采取的等效备份12小时。

对于简单的用途来说,如果您不关心性能、缓存失效、网络带宽或最近的情况,那么单根节点可能是最好的选择。它也是唯一支持备份单个数据库或集合的选项。

对于蒙蒂甘来说,它的用法与MongoDB相同。您需要使用运行服务器的主机和端口,默认为27017。如果这是默认情况,则不需要指定任何-端口选项。

你可以每天用cron运行它,我建议如下:

代码语言:javascript
复制
SHELL=/bin/bash
0 0 * * * /usr/bin/mongodump --host <host> -o "/var/lib/backup/tokumx-backup-$(date +%Y%m%d)"

蒙蒂甘的主要缺陷是它更昂贵,它破坏了缓存表中的信息,这些信息表明什么数据是重要的。它也不会在多个集合中获得完全一致的快照,比如热备份和文件系统级快照备份。一个单一的集合可能包含一个集合中某些写入的效果,而不是在另一个集合中包含早期写入的效果。

我想,您还需要为过期的旧备份定义一个方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22555280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档