четверг, 9 января 2020 г.

Скрипт для бэкапа файлов сайта и базы данных mysql с помощью percona-xtrabackup

Понадобилось на одном хосте мне бэкапить базы данных mysql различных сайтов и их файлов...

Есть такой замечательный инструмент для бэкапа БД как xtrabackup. С помощью оного я буду делать бэкап БД (процесс резервирования порой бывает затратный по времени, но процесс развёртывания резервной копии намного быстрее нежели при использовании популярного у народа mysqldump + в моём случае я резервирую совершенно все базы за раз, а также имею лучшую целостность БД и сохраняю все учётные записи и их права доступа).

Для mysql версий 4x, 5x:

sudo -s
cd /opt
apt install xtrabackup p7zip-full
git clone https://github.com/constantinekg/sitebackup_with_mysql/
cd sitebackup_with_mysql/
echo 'Edit backup script for your settings...'
nano  backupdb.py
chmod +x backupdb.py
mkdir /backup

Для mysql версий 8x:

sudo -s
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
apt update
apt install percona-xtrabackup-80 p7zip-full
git clone https://github.com/constantinekg/sitebackup_with_mysql/
cd sitebackup_with_mysql/
echo 'Edit backup script for your settings...'
nano backupdb8.py
chmod +x backupdb8.py
mkdir /backup


Запускаем и проверяем:

./backupdb.py

Запихиваем задачу в крон:

crontab -e

01 * * * * /opt/sitebackup_with_mysql/backupdb.py # Для mysql 4/5x

01 * * * * /opt/sitebackup_with_mysql/backupdb8.py


Как восстанавливать...

В сути необходимо распаковать содержимое бэкапа (файлы БД) в /var/lib/mysql, предварительно перед этим остановив mysql сервер ( systemctl stop mysql ) и выставить там необходимые права на доступ, после чего запустить mysql сервер ( systemctl start mysql ). Готово!

rsync -avrP /data/backup/ /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql

Комментариев нет:

Отправить комментарий