Sejanus Asked: 2010-01-30 10:33:09 +0800 CST2010-01-30 10:33:09 +0800 CST 2010-01-30 10:33:09 +0800 CST 如何进行计划的 Linux 服务器备份 772 我需要在 Ubuntu 9.04 上为数据库、网站、ftp、电子邮件等组织自动备份,因为我以前从未做过,所以我正在寻找学习的地方。需要做什么,我可以使用什么(免费)软件,提示和技巧,最佳实践等等。如果您能给我指出针对初学者的相关文章,我将不胜感激 backup ubuntu ubuntu-9.04 backup-restoration maintenance 6 个回答 Voted Flo 2010-01-30T18:52:20+08:002010-01-30T18:52:20+08:00 备份总是很难正确调整;特别是因为人们有不同的需求,而这种需求通常是数据“快照”备份、数据归档、服务器(配置)备份、可靠服务等之间的混合)。 3dinfluence 和 davey 都是对的:尝试恢复操作很重要(正如Joel 所说),通常首先要做的是一组 cron 脚本;但是必须根据您可以“接受松散”的数据量以及您需要的可靠性级别来执行其他操作。 所以你必须问自己的问题是: 备份的目的 - “保护”您的数据/服务免受: (本地)硬件故障,如磁盘崩溃; 更大的破坏,例如建筑物着火; 用户错误(意外删除)或需要找回旧数据; 错误的软件包发布(升级服务通常很困难,等等)。 如果出现不同类型的问题,可接受的停机时间(和数据丢失) 磁盘故障?例如。没有损失,没有停机时间(?) 其他硬件故障(MB、CPU 等)?一天的工作损失,几个小时的停机时间 火(和消防员的水)?损失一周,停机几天 地震还是停电? 根据对这些问题的回答,您将了解每日备份是否足够,或者您是否需要位于不同地理位置的热备用服务器。 我在这个领域根本不是专家,但也许我的例子可以给你一些想法。 我正在管理一个小型(debian)服务器,提供数据库(postgresql)、subversion 存储库、trac 站点和其他一些类似的功能;服务器主要由我们的研发团队使用,所以人很少(大约 20 个用于颠覆的客户端),以及一些仪器(大约 50 个用于数据库的客户端),但他们几乎 24/24 小时、7/7 天都在工作(尤其是仪器,它为数据库提供措施)。 在一般问题(如主要硬件故障)的情况下,2 到 4 小时的停机时间是可以接受的(仪器可以在本地工作一段时间)。所以我没有(还)警告备用服务器,但只有一组本地和远程备份和转储。 所以要求一点也不苛刻:大约有数百个数据,要服务的客户不到一百个。 第一条“防线”是由磁盘冗余和分区提供的(这不仅有助于在磁盘崩溃的情况下,还可以用于进一步的备份或服务器升级)该机器配备了 4 个磁盘(每个 500Gb)。 2 个(软)RAID 阵列(类型 1,在 3 个磁盘上): 一个小的,专用于 /boot 和一个大的,由 lvm 使用(见下文) 2个lvm组: 一个在大型 RAID 阵列上制作(在第 4 个磁盘上 + 1 个非 RAID 分区) 另一个仅使用非 RAID 分区(前 3 个磁盘各 50Gb,第 4 个磁盘的一半) 最后,分区: / 和 /var 来自大型 RAID 的两个 lvm 卷;用户数据都存储在 /var ... 第一个 vgroup 的非 RAID 扩展保留用于快照 (lvm) /boot 直接在小型 raid 1 阵列上 /tmp 和来自第二个 vgroup(非 RAID)的两个 lvm(线性卷)上的特殊 /backup。使用最后一个驱动器,扩展其他 3 个用于快照。 第二道防线是定期备份:它们由 cron 脚本制成,基本上每天都会启动(例如,svn 的热备份、trac 站点、db 文件的副本等)或每周(数据库转储、svn 转储等) .) 每次备份的具体方式取决于服务;例如,subversion 提供了用于(快速)热备份(使用硬链接等)和文本转储的工具,但一个简单的 rsync 用于数据库,由 lvm 快照制成。 所有这些备份都在(本地!) /backup 分区上(要快);该分区通常以只读方式挂载;两个 sudoeable 脚本用于在 rw 模式下重新绑定它(备份开始),然后回到 ro(最后)。在锁定文件上生成的信号量用于处理并发备份。 每次 /backup 切换到 ro 时(也是每 4 小时一次),都会安排一次镜像操作(使用 'at' 并稍加延迟来连接来自第三行的更改)。镜像(使用 rsync)到不同的服务器,数据从该服务器存档在磁带上(每天,仅保留一年),并通过网络,到一组遥远的 terra 站。 为了避免失去一整天工作的风险,以最小的带宽成本,第三条线路也到位,包括在可能的情况下进行增量备份。 例子: 对于颠覆,每个修订都转储在一个(压缩文件)中,来自 post-commit 和 post-revpropschange 挂钩(使用 svn-backup-dumps) 对于数据库,使用连续归档(& PITR 概念) 这些增量使用与每日和每周副本相同的概念保存(首先到本地备份分区,然后在第二个主机上稍作延迟)。当然,每日复制和每周转储脚本必须处理增量的轮换。 请注意,这第三行非常接近警告备用服务器(嗯,这是实现此概念的必要步骤)。 最后,服务器本身的配置(如果必须设置新的,则将工作最小化)。由于我不相信重影解决方案(新机器将有不同的硬件、磁盘配置等),我会设置一个专用的 subversion 存储库,我将手动编辑的每个脚本或配置文件放在该存储库上(直接或间接通过用户界面)。所以文件系统的根 (/) 是一个工作副本。此外,每天安排的 cron 任务负责保存已安装软件包列表 (dpkg)、分区表 (fdisk)、raid 和 lvm 设置等。 顺便说一句,这肯定是最薄弱的一点:服务器配置位于颠覆性回购协议上,由“同一”主机提供服务。无论如何,如果需要,从不同的机器(甚至是 Windows 机器)使用其中一个存储库备份(快速备份或转储)是相当容易的。 此外,我还尝试在接触主系统上的任何脚本(或软件包升级)之前,认真地制作 lvm 快照。但是这些 lvm 快照的生命周期应该尽可能短,因为其他服务会带来很大的损失。 好吧,我希望它可以提供帮助,或者至少提供一些想法...... Best Answer 3dinfluence 2010-01-30T11:48:33+08:002010-01-30T11:48:33+08:00 根据您的目标、基础设施和媒体偏好,有很多选择。 首先,无论您最终采用哪种解决方案,您可能都需要弄清楚如何设置 cron 作业。它是在 *nix 上运行计划任务的。 至于备份本身,我倾向于使用rsnapshot,因为它很容易设置并且可以满足我的需要。Amanda 和 Bacula 都是很好的解决方案,但涉及数据库和其他使备份和恢复复杂化的东西。当我需要可靠的东西(例如备份)时,我倾向于避免复杂的事情。Rsnapshot 使用 rsync over ssh 在系统之间传输数据,因此它既安全又高效。然后,它使用硬链接,以便您拥有正在备份的文件系统的许多时间点快照。 必须对数据库进行一些特殊处理,因为您要么需要在运行备份作业时锁定表,要么将数据库表转储到另一个位置,然后使用您选择的任何方法进行备份。如果您使用的是 MySQL,则可以使用 mysqldump 之类的工具来完成此操作。此转储通常使用 cron 作业自动进行。 Joel K 2010-01-30T10:41:18+08:002010-01-30T10:41:18+08:00 我认识的大多数人都为此目的使用 Bacula。 http://www.bacula.org/en/ 他们有相当不错的文档,但这里有一篇文章将引导您了解一些基础知识。 http://www.linux.com/archive/feature/132562 gm3dmo 2010-01-30T10:45:16+08:002010-01-30T10:45:16+08:00 Curtis Preston 写了 O'R eilly 的关于备份的书,他有网站和博客。他有一些关于 Linux 备份和基于 rsync 的工具的部分。 Mondo Rescue是一个多合一的免费映像备份/恢复工具 (apt-get install mondo) G4l也是一个选项。这两个非常适合备份单个盒子。 Amanda是一个集中式备份解决方案。 我会说您的数据很重要,要备份,使用多种方式,例如 rsync 到远程盒子 + cpio 到 USB 棒。其他一切都可以重建,您可以从 ubuntu 切换到 Fedora 并随身携带数据,这只需要更多的工作,您永远无法找回丢失的数据,因此请加倍确保您已覆盖数据。 无论你选择什么。做一些恢复并让他们感到舒服。没有什么比在半夜恢复系统更糟糕的了! Jonathan Clarke 2010-01-31T07:13:45+08:002010-01-31T07:13:45+08:00 备份策略已经有了很好的答案。我爱上了一个简单的备份工具:备份管理器。 Backup Manager 非常轻量级(实际上只是一些脚本),并且易于配置。它知道如何备份 SVN 存储库、MySQL 数据库,并且可以运行特定命令来备份您不能仅将文件复制到备份的其他系统。它以标准文件格式(tar、zip 等)存储备份数据,并可以将它们保存到许多不同的存储区域:本地磁盘、FTP 服务器、scp、Amazon S3……可能在途中使用 GPG 密钥对其进行加密。另一个重要的一点是它已经打包在 Debian 和 Ubuntu 中。 绝对是一种简单而有效的开始方式,尽管您最终可能想要更高级的东西。 Valery Viktorovsky 2010-02-08T01:47:40+08:002010-02-08T01:47:40+08:00 在 Amazon S3 上保存备份非常好。 对于备份,我建议使用 duplicity 和DT-S3-Backup bash 脚本。 DT-S3-Backup 旨在使用 duplicity 和 Amazon S3 自动化和简化远程备份过程。配置脚本后,您可以轻松地备份、恢复、验证和清理,而无需记住许多不同的命令选项。
备份总是很难正确调整;特别是因为人们有不同的需求,而这种需求通常是数据“快照”备份、数据归档、服务器(配置)备份、可靠服务等之间的混合)。
3dinfluence 和 davey 都是对的:尝试恢复操作很重要(正如Joel 所说),通常首先要做的是一组 cron 脚本;但是必须根据您可以“接受松散”的数据量以及您需要的可靠性级别来执行其他操作。
所以你必须问自己的问题是:
备份的目的 - “保护”您的数据/服务免受:
如果出现不同类型的问题,可接受的停机时间(和数据丢失)
根据对这些问题的回答,您将了解每日备份是否足够,或者您是否需要位于不同地理位置的热备用服务器。
我在这个领域根本不是专家,但也许我的例子可以给你一些想法。
我正在管理一个小型(debian)服务器,提供数据库(postgresql)、subversion 存储库、trac 站点和其他一些类似的功能;服务器主要由我们的研发团队使用,所以人很少(大约 20 个用于颠覆的客户端),以及一些仪器(大约 50 个用于数据库的客户端),但他们几乎 24/24 小时、7/7 天都在工作(尤其是仪器,它为数据库提供措施)。
在一般问题(如主要硬件故障)的情况下,2 到 4 小时的停机时间是可以接受的(仪器可以在本地工作一段时间)。所以我没有(还)警告备用服务器,但只有一组本地和远程备份和转储。
所以要求一点也不苛刻:大约有数百个数据,要服务的客户不到一百个。
第一条“防线”是由磁盘冗余和分区提供的(这不仅有助于在磁盘崩溃的情况下,还可以用于进一步的备份或服务器升级)该机器配备了 4 个磁盘(每个 500Gb)。
第二道防线是定期备份:它们由 cron 脚本制成,基本上每天都会启动(例如,svn 的热备份、trac 站点、db 文件的副本等)或每周(数据库转储、svn 转储等) .) 每次备份的具体方式取决于服务;例如,subversion 提供了用于(快速)热备份(使用硬链接等)和文本转储的工具,但一个简单的 rsync 用于数据库,由 lvm 快照制成。
所有这些备份都在(本地!) /backup 分区上(要快);该分区通常以只读方式挂载;两个 sudoeable 脚本用于在 rw 模式下重新绑定它(备份开始),然后回到 ro(最后)。在锁定文件上生成的信号量用于处理并发备份。
每次 /backup 切换到 ro 时(也是每 4 小时一次),都会安排一次镜像操作(使用 'at' 并稍加延迟来连接来自第三行的更改)。镜像(使用 rsync)到不同的服务器,数据从该服务器存档在磁带上(每天,仅保留一年),并通过网络,到一组遥远的 terra 站。
为了避免失去一整天工作的风险,以最小的带宽成本,第三条线路也到位,包括在可能的情况下进行增量备份。
例子:
这些增量使用与每日和每周副本相同的概念保存(首先到本地备份分区,然后在第二个主机上稍作延迟)。当然,每日复制和每周转储脚本必须处理增量的轮换。
请注意,这第三行非常接近警告备用服务器(嗯,这是实现此概念的必要步骤)。
最后,服务器本身的配置(如果必须设置新的,则将工作最小化)。由于我不相信重影解决方案(新机器将有不同的硬件、磁盘配置等),我会设置一个专用的 subversion 存储库,我将手动编辑的每个脚本或配置文件放在该存储库上(直接或间接通过用户界面)。所以文件系统的根 (/) 是一个工作副本。此外,每天安排的 cron 任务负责保存已安装软件包列表 (dpkg)、分区表 (fdisk)、raid 和 lvm 设置等。
顺便说一句,这肯定是最薄弱的一点:服务器配置位于颠覆性回购协议上,由“同一”主机提供服务。无论如何,如果需要,从不同的机器(甚至是 Windows 机器)使用其中一个存储库备份(快速备份或转储)是相当容易的。
此外,我还尝试在接触主系统上的任何脚本(或软件包升级)之前,认真地制作 lvm 快照。但是这些 lvm 快照的生命周期应该尽可能短,因为其他服务会带来很大的损失。
好吧,我希望它可以提供帮助,或者至少提供一些想法......
根据您的目标、基础设施和媒体偏好,有很多选择。
首先,无论您最终采用哪种解决方案,您可能都需要弄清楚如何设置 cron 作业。它是在 *nix 上运行计划任务的。
至于备份本身,我倾向于使用rsnapshot,因为它很容易设置并且可以满足我的需要。Amanda 和 Bacula 都是很好的解决方案,但涉及数据库和其他使备份和恢复复杂化的东西。当我需要可靠的东西(例如备份)时,我倾向于避免复杂的事情。Rsnapshot 使用 rsync over ssh 在系统之间传输数据,因此它既安全又高效。然后,它使用硬链接,以便您拥有正在备份的文件系统的许多时间点快照。
必须对数据库进行一些特殊处理,因为您要么需要在运行备份作业时锁定表,要么将数据库表转储到另一个位置,然后使用您选择的任何方法进行备份。如果您使用的是 MySQL,则可以使用 mysqldump 之类的工具来完成此操作。此转储通常使用 cron 作业自动进行。
我认识的大多数人都为此目的使用 Bacula。
http://www.bacula.org/en/
他们有相当不错的文档,但这里有一篇文章将引导您了解一些基础知识。
http://www.linux.com/archive/feature/132562
Curtis Preston 写了 O'R eilly 的关于备份的书,他有网站和博客。他有一些关于 Linux 备份和基于 rsync 的工具的部分。
Mondo Rescue是一个多合一的免费映像备份/恢复工具 (apt-get install mondo) G4l也是一个选项。这两个非常适合备份单个盒子。
Amanda是一个集中式备份解决方案。
我会说您的数据很重要,要备份,使用多种方式,例如 rsync 到远程盒子 + cpio 到 USB 棒。其他一切都可以重建,您可以从 ubuntu 切换到 Fedora 并随身携带数据,这只需要更多的工作,您永远无法找回丢失的数据,因此请加倍确保您已覆盖数据。
无论你选择什么。做一些恢复并让他们感到舒服。没有什么比在半夜恢复系统更糟糕的了!
备份策略已经有了很好的答案。我爱上了一个简单的备份工具:备份管理器。
Backup Manager 非常轻量级(实际上只是一些脚本),并且易于配置。它知道如何备份 SVN 存储库、MySQL 数据库,并且可以运行特定命令来备份您不能仅将文件复制到备份的其他系统。它以标准文件格式(tar、zip 等)存储备份数据,并可以将它们保存到许多不同的存储区域:本地磁盘、FTP 服务器、scp、Amazon S3……可能在途中使用 GPG 密钥对其进行加密。另一个重要的一点是它已经打包在 Debian 和 Ubuntu 中。
绝对是一种简单而有效的开始方式,尽管您最终可能想要更高级的东西。
在 Amazon S3 上保存备份非常好。
对于备份,我建议使用 duplicity 和DT-S3-Backup bash 脚本。
DT-S3-Backup 旨在使用 duplicity 和 Amazon S3 自动化和简化远程备份过程。配置脚本后,您可以轻松地备份、恢复、验证和清理,而无需记住许多不同的命令选项。