如何将我所有服务器的备份存储在另一台服务器上?

如何将我所有服务器的备份存储在另一台服务器上?

我有一台新服务器,打算用于备份。在这台服务器上,我想存储gziped来自所有其他 13 台服务器的数据库。每小时从每台服务器进行备份并将其存储在备份服务器上的最佳方法是什么?

服务器 SO Linux Centos
所有 13 台服务器都有 WHM/Cpanel
备份服务器只有 Centos 7.7(无控制面板)
我无法使用 cpanel 进行备份,因为 cpanel 不允许每小时备份。

答案1

您可以使用rsync和来实现这一点cron

在每台服务器上创建文件 backup.sh 并使用以下行:

#!/bin/bash
mysqldump > /etc/backups/mysqldump.sql
rsync /etc/backups/mysqldump.sql -e ssh <username>@<ip-address-of-backup-server>:/<path-to your-backup-folder>/<server-name>/"$(date "+%Y-%m-%d-%H")"-backup.sql

检查与mysql 文档对于转储选项(或使用您喜欢的转储数据库的方法)。<server-name>应该是备份所在服务器的某种标识符。

将文件放入/etc/cron.hourly。如果您想要不同的时间,您可以检查其他/etc/cron.*文件夹或使用crontab 生成器并使用命令crontab -e

确保/etc/backups(或您的等效项)存在或创建它 ( mkdir)。

一些常见的问题:

  1. 确保在每台服务器上设置 ssh 密钥,以便rsync可以连接到备份服务器和/或具有有限权限的单独用户。取决于您正在寻找什么样的安全性。

  2. 确保该backup.sh脚本可执行。

  3. 如果您放入文件夹backup.sh/etc/cron.*,它将以 root 权限运行。如果您出于某种原因不希望这样做,请crontab -e根据所需用户使用选项。

相关内容