Инкрементальный бэкап удаленного веб сервера с Mysql с помощью rsnapshot (CentOS, RHEL)
2. Устанавливаем скрипт бэкапа данных
На просторах сети был найден скрипт, который делает бэкап данных из mysql, проверяет целостность и архивирует дампы для каждой базы отдельно, что удобно для восстановления, когда нужно вернуть часть данных. Найти файл можете по ссылке: rsnapshot.mysql.sh (для версии Mysql Server 5.7 — rsnapshot.mysql.sh, был изменен синтаксис получения паролей пользователей) Его необходимо разместить на удаленном сервере. Можете скачать его вручную, либо сделать это с помощью команд:
1 2 3 4 5 6 7 8 9 | client: cd /home/backup Для Mysql Server до 5.7 client: wget https://ittricks.ru/wp-content/uploads/2014/04/rsnapshot.mysql_.sh_.zip Для Mysql Server от 5.7 client: wget https://ittricks.ru/wp-content/uploads/2014/04/rsnapshot.mysql5.7_.sh_.zip client: unzip rsnapshot.mysql_.sh_.zip client: rm rsnapshot.mysql_.sh_.zip client: chmod +x rsnapshot.mysql.sh |
Данными действиями мы распаковали скрипт в домашнюю директорию пользователя backup. Можно сделать это в любую другую, особенно, если вы настраиваете бэкап не через пользователя root. В данном скрипте можно включить режим verbose и изменить папку складирования бэкапов:
1 2 3 4 5 | ### Set to 1 if you need to see progress while dumping dbs ### VERBOSE=0 ### Setup dump directory ### BAKRSNROOT=/tmp/rsnapshot/mysql |
Далее нужно в домашней директории пользователя разместить доступы к пользователя mysql. В файл ~/.my.cnf:
1 2 3 4 5 6 7 8 9 10 11 | [client] user=backup password=MYSQL_PASSWORD [mysqldump] user=backup password=MYSQL_PASSWORD [mysqladmin] user=backup password=MYSQL_PASSWORD |
Я для бэкапа настроил отдельного пользователя, чего и вам советую. Для пользователя достаточно выдать права на SELECT, LOCK TABLES и SHOW DATABASES.
1 2 3 | CREATE USER 'backup'@'localhost' IDENTIFIED BY 'MYSQL_PASSWORD'; GRANT SELECT, SHOW DATABASES, LOCK TABLES ON *.* TO 'backup'@'localhost'; FLUSH PRIVILEGES; |
Не забудьте поменять «MYSQL_PASSWORD» на сложный
В исходном скрипте я сделал одно условие — исключить из бэкапа служебную БД information_schema, т.к. для нее нужны более «высокие» права и необходимость бэкапа данной БД сомнительна. BAKRSNROOT — директория, куда будут складываться временные бэкапы, которые потом будет забирать сервер бэкапов. После каждого запуска скрипта — папка чистится от старых архивов, поэтому заботиться о ее чистке не надо будет. Запустив этот скрипт вручную — в папке, прописанной в BAKRSNROOT будут созданы архивы с дампами БД.
Если ошибок не возникло, то можно переходить на последний этап — настройку rsnapshot.