我有一台新服务器,打算用于备份。在这台服务器上,我想存储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
)。
一些常见的问题:
确保在每台服务器上设置 ssh 密钥,以便
rsync
可以连接到备份服务器和/或具有有限权限的单独用户。取决于您正在寻找什么样的安全性。确保该
backup.sh
脚本可执行。如果您放入文件夹
backup.sh
中/etc/cron.*
,它将以 root 权限运行。如果您出于某种原因不希望这样做,请crontab -e
根据所需用户使用选项。