У меня есть новый сервер, который я планирую использовать для резервного копирования. На этом сервере я хочу хранить 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 -e
.
Убедитесь, что /etc/backups
(или ваш эквивалент) существует, или создайте его ( mkdir
).
Несколько распространенных ошибок:
обязательно настройте ключи ssh на каждом сервере, чтобы
rsync
иметь возможность подключаться к резервному серверу и/или отдельным пользователям с ограниченными привилегиями. Зависит от того, какой тип безопасности вы ищете.убедитесь, что
backup.sh
скрипт является исполняемым.если вы поместите
backup.sh
в/etc/cron.*
папку, он будет запущен с правами root. Если вы по какой-либо причине не хотите этого, используйтеcrontab -e
опцию в качестве желаемого пользователя.