我需要为我的 Linux 网络服务器提供可靠的远程备份/恢复解决方案。
- 备份/恢复软件必须在 Windows 上运行
- 它必须连接到执行实际备份/恢复的远程工作文件(脚本),因为禁止远程访问 MySQL。因此,尝试从 Windows 直接连接到远程 Web 服务器的备份工具不是我想要的。
- 备份被发送到本地 Windows 机器并存储在那里
- 还必须能够从 Windows 计算机进行恢复
- 大型 MySQL 数据库支持
我下载了 site-vault pro。它承诺完全满足我的需求,但是却无法使用。除此之外,他们最近的更新已经是 6 年前的了。我还看到他们根本不提供任何支持。所以它看起来像是被废弃的软件。
寻找类似的东西,只有真正有效的东西。
有任何想法吗?
答案1
您可以使用 SSH 转发 MySQL 端口。使用 OpenSSH(适用于 Windows)非常简单:
ssh target_server -L 3306:localhost:3306
前提是远程服务器上的 MySQL 服务正在监听 localhost:3306,而不仅仅是 unix 套接字,并且本地端口 3306 未被占用。如果本地端口被占用,则只需使用另一个本地端口(-L 3307:...
)。
现在,您可以使用标准 MySQL 工具或任何支持 MySQL 网络协议的第三方工具连接到当地的计算机(运行 SSH 客户端的地方)到本地端口(连接命令中的第一个端口)。例如,使用标准 mysqldump 备份并使用 mysql 命令行工具恢复:
mysqldump -h localhost -u username -p --all-databases > dump.sql
mysql -h localhost -u username -p < dump.sql
当 SSH 连接运行时,您可以在客户端计算机上运行它。
备份工具中可能编写了一个连接脚本,在备份或恢复之前调用该脚本,并在转发套接字关闭时断开连接。建议使用 RSA 或其他非对称加密进行 SSH 身份验证,并在服务器上限制这些密钥以仅允许使用它们进行此类活动;请再次阅读 SSH 手册。完成所有这些后,连接命令将变得类似于以下内容:
ssh target_server -L 3306:localhost:3306 -i backup_connection.pub sleep 60
将sleep
在远程调用,然后必须在 60 秒内启动到 mysql 服务的备份或恢复 MySQL 连接,否则 SSH 连接将终止,但如果在该时间内建立了 MySQL 连接,则 SSH 将不会终止,直到 MySQL 连接为止。