我想编写一个 shell 脚本(目前使用 bash)来自动备份远程服务器上几个 MySQL 模式的内容。远程服务器被锁定为只允许 SSH 访问,所以我必须在mysqldump针对各种模式运行之前创建一个 SSH 隧道。
我可以毫无问题地创建隧道,但是我希望能够在数据库转储完成后自动关闭它。
目前我的脚本正在这样做:
/usr/bin/ssh -T -f -L 4444:127.0.0.1:3306 -l remoteuser 208.77.188.166 sleep 600
/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db1 | gzip > /root/backups/snapshot/db1.sql.gz
/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db2 | gzip > /root/backups/snapshot/db2.sql.gz
/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db3 | gzip > /root/backups/snapshot/db3.sql.gz
Run Code Online (Sandbox Code Playgroud)
在连接保持打开 600 秒的情况下,显然,如果第一个转储之一花费的时间比这更长,那么在其他转储完成之前连接将关闭。我想为每个模式备份保留单独的文件(因此--databases现在将避免使用mysqldump)。
有什么建议?
我正在寻找一个开源应用程序来归档我的电子邮件。它可能通过定期登录我的 POP3 帐户并复制电子邮件来实现此目的,或者它可能只是直接在邮件服务器上读取我的 Unix mbox/maildir 文件/目录。
它必须是开放的,并且必须在 Linux(或实际上任何开放的操作系统)上运行。理想情况下,它会有一个 Web 界面,但这不是主要要求。
MXsense ( http://www.mxsense.com/mxsense.html ) 似乎几乎是我想要的,只是它没有打开。
我不需要 MS Exchange 支持。
有什么建议?
的理由(也许有点傻)是我专门运行Linux,它仍然没有一个电子邮件客户端,是任何接近的MS Outlook来讲迷死人,所以我发现自己常常邮件客户端之间切换。如果我有我的电子邮件存档,我会对此感觉更好,所以我这个月使用哪个邮件客户端并不重要。
长期读者,第一次提问:)
我已经阅读了很多关于 iSCSI 和 SAN 的一般信息,我相信我已经能够回答我关于该主题的大部分问题和疑虑,但这个问题仍然存在:
您如何“备份 SAN”?
接下来是一个或多或少的真实世界场景以及我对它的想法和问题。
假设您设法说服小型(最好是中型)公司的管理层最终为小型但合适的存储解决方案(即基于 iSCSI 的 SAN)提供资金。假设它由一个在机箱中具有许多驱动器并运行 OpenFiler 的服务器组成,甚至是 MD3000i (Dell) 或 MSA2000i (HP),据我所知,它们是最常见的入门级解决方案。
LUN 被导出到需要存储代码存储库、文档、图像等的服务器、另一台运行几个数据库的服务器、另一台使用 LUN 作为虚拟化来宾磁盘(Xen 中的 DomU)的服务器以及另一台服务器通过 NFS 导出一个包含用户主目录的大 LUN(这是一个纯 Linux 商店)。优点很明显,我相信:单个服务器不需要大量的本地存储,服务器或服务的迁移变得更容易。
但是现在您需要为所有或大部分存储数据制定备份解决方案。你怎么做呢?您是否在每台需要备份数据的服务器上运行备份软件(我喜欢 rsnapshot)?你把这些数据放在哪里?在具有大量本地存储的专用备份服务器上?还是回到SAN?备份 SAN 的“通用”解决方案是什么(如果有)?
我正在寻找比我有更多运行 SAN 经验的人的最佳实践和建议。
谢谢!
编辑:考虑到 SAN 的预算一开始就非常有限,我想我正在寻找非专有、非常通用且廉价的备份问题解决方案。无论如何,如果存在这样的解决方案。磁带或第二个相同的 SAN 阵列不会有任何资金。应该更明确地说,对不起。
我经营着一个由 8 人开发团队和几个经理组成的小办公室。我们正在考虑转向硬件设置,我们有一个强大的服务器运行多个 VirtualBox VM - 一个用于 Samba 文件共享充当 DC,另一个用于开发的 LAMP 盒,另一个用于 IE 测试......等等......可能总共 4 或 5 个 VM。两个关键的是运行我们网络的 Samba 盒子,然后是我们大部分开发工作在其上进行的 dev LAMP 盒子。
这种设置吸引我的原因是因为我喜欢能够在必要时在一夜之间备份所有 VM 的想法 -如果我们有一个准系统 VirtualBox 主机,恢复应该是快速而轻松的。
我很欣赏备份虚拟机需要关闭电源,但我认为这不会成为阻碍。可能我们决定在核心主机操作系统上运行 Samba,因此无需关闭它(我们将整理数据的 rsync)。
所以我只是在寻找关于这种“适用于一切的虚拟机”方法的一些意见。这对企业来说是正常的吗?与物理盒子相比,这是否有任何明显的问题或无法实现的事情?有没有人尝试过这个并遇到任何重大问题,或者它的效果很好?
任何意见非常感谢。
亲切的问候,
詹姆士。
我在 MySQL 中有一个 4GB 的数据库。我怎样才能备份它?此外,如果我需要恢复,有没有办法可以加快恢复过程?
我目前每晚都使用一项 cron 作业,要求mysqldump转储所有内容,并保留 3 天的备份。
我有一个专用服务器,其中包含大约 10GB 的 MongoDB 数据库。我需要每天进行备份,但我不能让数据库停机。是否可以在单个磁盘上使用副本集(在不同端口上运行 2 个 mongod 实例),并且只需将辅助磁盘脱机并将数据文件备份到 S3 等异地存储(日志已打开)?或者使用主/从比副本集更好?
这是否可行,如果可行,我可能会遇到哪些潜在问题?如果没有,我如何将其概念化以使其起作用?
显然,Windows Server Backup对 SQL Server 数据库的备份有一些支持:
能够恢复应用程序。Windows Server Backup 使用内置于 Microsoft® SQL Server® 等应用程序中的 VSS 功能来保护应用程序数据。[来源:TechNet ]
此外,人们报告说 Windows Server Backup 似乎会触发 SQL Server 中的某种备份操作。
但是,我找不到有关如何使用 Windows Server Backup 备份 SQL Server 数据库的(官方)文档。
.mdf吗?在.mdf和.ldf?(我知道如何使用 SQL Server 维护计划、sqlmaint.exeT-SQL BACKUP 和 SQL Server 代理进行备份。我只对 Windows Server Backup(显然?)提供的替代方案感兴趣。)
我们的商店非常依赖 NetApp Volume Snapshots 进行备份。我们对一些数据使用传统的基于代理的磁带备份,但总的来说,我们大多数系统都依赖于快照。此外,我们没有严格的变更控制政策或任何集中的配置管理,因此所有我们的服务器,无论其服务提供的数据是否备份,都需要从裸机(并且没有任何真正的文档)重建。自然地,这使得快照对于管理来说是一个非常有吸引力的提议,因为我们可以只恢复整个服务器、用户数据和包括的配置。我们使用 NetApp 的虚拟存储控制台为我们基于 NFS 的 VMware 数据存储创建快照,并使用 NetApp 的 SnapDrive 为直接呈现给来宾的原始设备映射(物理)LUN 制作快照。我们将关键快照异地快照镜像到另一个 Filer。当然,我们会定期测试我们的恢复过程。
我不禁对我们对备份快照的依赖感到不舒服。对我而言,对于被视为足够作为备份策略的技术,它需要满足以下标准:

据我了解,NetApp 快照在写入时重定向 (RoW) 方法下工作。在WAFL文件格式使用一组指针(元数据)指出实际引用存储在以往任何时候这可能是每个块。要制作快照,系统只需复制卷的元数据并将其存储在该卷的保留空间中。任何写入(创建/更改/删除)都被重定向到新块。这应该是使 NetApp 的 WAFL 如此出色的特殊调味料,因为您不必进行读取,然后将旧数据写入保留空间,然后将新数据写入旧数据,例如 Copy-On-Write 快照。
我完全承认我可能不完全理解 NetApp 卷快照的工作原理,但如果我的理解或多或少正确,NetApp 快照无法满足我的备份标准。
有人能解释一下 NetApp 快照如何被视为备份吗?我正在寻找好的主观答案,所以请用事实、参考和经验来支持你的立场。如果我对底层技术的理解不正确,请解释在哪里以及为什么会改变我的结论。如果您的商店依赖 NetApp Snapshots 作为备份,请提供足够的上下文信息,以便人们了解您必须满足什么样的恢复策略。
我想使用 rsync 将数据从远程 Linux 服务器备份到本地 Mac。我想在我的本地 Mac 上初始化这个操作。除了有一个特殊字符问题外,一切正常:每次我重新运行 rsync 操作(在初始同步之后)时,首先删除带有特殊字符的文件,然后重新同步。据我了解,不同字符集存在问题,首选的解决方案似乎是使用该--iconv选项:
您可以使用 rsync 的 --iconv 选项在 UTF-8 NFC 和 NFD 之间进行转换,至少如果您使用的是 Mac。有一个特殊的 utf-8-mac 字符集代表 UTF-8 NFD。因此,要将文件从 Mac 复制到 NAS,您需要运行以下命令:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/这会将远程服务器上的所有本地文件名从 UTF-8 NFD 转换为 UTF-8 NFC。文件的内容不会受到影响。
问题是这对我来说只适用于“一种方式”,即从 Mac 同步到 linux 时。但我想“走另一条路”,即从 linux 机器同步到 Mac。我想从我的本地 Mac 初始化操作。但是当我尝试:
rsync -av --delete --iconv=utf-8,utf-8-mac mynas:remotedir/ localdir/
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes …Run Code Online (Sandbox Code Playgroud) 我有一个备份服务器,它创建要备份的目录树的xz压缩tar档案。这些 tar 存档可能会变得很大(多 TB),可以split分成多个部分(2.5TB),并且每个部分都被写入 LTO-6 磁带,然后这些磁带会去异地。
现在我想添加加密。我可以在拆分之前使用公私密钥加密以及一个或多个收件人(管理员公钥)对 tar 存档进行 GPG 加密。
然而,在恢复的情况下,至少有一位管理员需要将他的私钥放在备份服务器上,因为文件太大而无法在其他任何地方解压。
GPG 在幕后使用混合加密方案,使用对称密码(如 AES)和会话密钥,只有该会话密钥才能为接收者加密公私密钥。
有没有办法让管理员提供会话密钥来解密要恢复的文件,而无需将私钥放在备份服务器上?
我当然可以重新发明轮子:
但是是否有“标准”或内置或最佳实践方法来实现上述目标?
backup ×10
mysql ×2
archive ×1
email ×1
email-server ×1
gpg ×1
linux ×1
mac ×1
mongodb ×1
netapp ×1
rsync ×1
samba ×1
snapshot ×1
sql-server ×1
ssh-tunnel ×1
storage ×1
virtualbox ×1
windows ×1