Как я могу хранить резервные копии всех моих серверов на другом сервере?

Как я могу хранить резервные копии всех моих серверов на другом сервере?

У меня есть новый сервер, который я планирую использовать для резервного копирования. На этом сервере я хочу хранить 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).

Несколько распространенных ошибок:

  1. обязательно настройте ключи ssh на каждом сервере, чтобы rsyncиметь возможность подключаться к резервному серверу и/или отдельным пользователям с ограниченными привилегиями. Зависит от того, какой тип безопасности вы ищете.

  2. убедитесь, что backup.shскрипт является исполняемым.

  3. если вы поместите backup.shв /etc/cron.*папку, он будет запущен с правами root. Если вы по какой-либо причине не хотите этого, используйте crontab -eопцию в качестве желаемого пользователя.

Связанный контент