Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Бэкап базы данных mysq


Recommended Posts

Здравствуйте!

На хостинге beget нет возможности настройки бэкапа как нам нужно.

 Нужно настроить бэкап базы данных mysql по крону. Два раза в сутки.

Также время хранения бэкапа, чтобы удалялись старые.

Сам хостинк этого не делает лишь дал инструкцию:

Вы можете создать Bash-скрипт, который будет выгружать дамп с помощью утилиты mysqldump и сохранять его на аккаунте, а также удалять более старые копии. Данный скрипт разместите в определенной папке и укажите к нему путь при создании задания в разделе CronTab.

Команда на экспорт дампа:

mysqldump -hlocalhost -uDB_NAME DB_NAME -p'PASSWORD' > ~/path/dump.sql
  • DB_LOGIN и PASSWORD замените на имя базы данных и пароль соответственно;
  • dump.sql - имя файла, в котором будет находится дамп. Можете выбрать другое имя. Например, можно подставлять в имя текущую дату и время, чтобы при следующем экспорте дампа старый файл не перезаписался новым (если нужно сохранять старые копии);
  • path - путь к папке, в которой будет создан файл дампа после экспорта.

Удалять старые копии можно с помощью утилиты find. Эта утилита позволяет найти файлы, которые старше определенного срока и выполнить с ними определенные действия (в нашем случае удалить):

find $backup_dir -name "*.sql" -type f -mtime +$days -delete

Эта команда находит все файлы формата .sql старше определенной даты и удаляет их.

  • $backup_dir - путь к папке в которой будут храниться резервные копии;
  • $days - количество дней, которые будут храниться резервные копии.

Итоговый скрипт должен иметь расширение .sh.

Если у вас мало опыта по созданию Bash-скриптов, то можете ознакомиться с этим циклом статей - https://habr.com/ru/company/ruvds/blog/325522/

 

Нужно написать этот самый скрипт.

Может кто помочь?

Надіслати
Поділитися на інших сайтах


У вас же там наверное есть ispmanager? он отлично умеет это делать. как локально, так и на удаленный сервер, на яндекс диск и другие места. Будет все бкапить, хранить сколько нужно и автоматом удалять. Зачем изобретать велосипед, если есть хорошее решение?

Надіслати
Поділитися на інших сайтах


15 минут назад, Jurgen сказал:

У вас же там наверное есть ispmanager? он отлично умеет это делать. как локально, так и на удаленный сервер, на яндекс диск и другие места. Будет все бкапить, хранить сколько нужно и автоматом удалять. Зачем изобретать велосипед, если есть хорошее решение?

На beget нет.

Надіслати
Поділитися на інших сайтах


4 минуты назад, helen2014 сказал:

На beget нет.

ааа, точно, это на vps у них. а так у них их собственная панель. 

Надіслати
Поділитися на інших сайтах


Создать файл с таким содержимым типа backup.sh


#!/bin/bash
PROJNAME="TEST" #Имя проекта
CHARSET="utf8" #Кодировка базы данных (utf8)
DBNAME="TEST_DB" #Имя базы данных для резервного копирования
DBFILENAME="DOMAIN-mysql" #Имя дампа базы данных
HOST="localhost" #Хост MySQL
USER="ПОЛЬЗОВАТЕЛЬ" #Имя пользователя базы данных
PASSWD="CУПЕР_ПАРОЛЬ_MYSQL" #Пароль от базы данных
DATADIR="/куда_архивировать" #Путь к каталогу где будут храниться резервные копии
DAY_OLD="30" #Сколько дней хранить резервные копии 


#start backup
echo "[--------------------------------[`date +%d%m%Y--%H-%M`]--------------------------------]"
echo "[----------][`date +%d%m%Y--%H-%M`] Run the backup script..."
mkdir $DATADIR 2> /dev/null
echo "[++--------][`date +%d%m%Y--%H-%M`] Generate a database backup..."
#MySQL dump
mysqldump --user=$USER --host=$HOST --password=$PASSWD --default-character-set=$CHARSET $DBNAME  > $DATADIR/$DBFILENAME-`date +%d%m%Y--%H-%M`.sql && tar zcvf $DATADIR/$DBFILENAME-`date +%d%m%Y--%H-%M`.sql.tgz $DATADIR/$DBFILENAME-`date +%d%m%Y--%H-%M`.sql && rm $DATADIR/$DBFILENAME-`date +%d%m%Y--%H-%M`.sql
if [[ $? -gt 0 ]];then
echo "[++--------][`date +%d%m%Y--%H-%M`] Aborted. Generate database backup failed."
exit 1
fi
echo "[++++------][`date +%d%m%Y--%H-%M`] Backup database [$DBNAME] - successfull."
echo "[++++++++--][`date +%d%m%Y--%H-%M`] Clean old backup: `find $DATADIR -regex "*.sql" -type f -mtime +$DAY_OLD -exec rm -rf {} \;`"
echo "[+++++++++-][`date +%d%m%Y--%H-%M`] Free HDD space: `df -h /home|tail -n1|awk '{print $4}'`"
echo "[++++++++++][`date +%d%m%Y--%H-%M`] All operations completed successfully!"
exit 0


 

Надіслати
Поділитися на інших сайтах


4 часа назад, helen2014 сказал:

На beget нет.

Один бэкап каждые сутки делает сам бегет, второй делайте руками. Это не так много кликов, что бы заморачиваться с кроном и поиском исполнителя.

Ну или подыскать готовые решения типа этого

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=33125

Надіслати
Поділитися на інших сайтах

Спасибо всем за комментарии и помощь!

На beget бэкап делается раз в трое суток но если на сайте будут изменения то чаще.

Ручной бэкап можно делать но то время нет или забывается когда проблема случается то нет именно того бэкакапа который нужен.

Поэтому и решили сделать так.

Надіслати
Поділитися на інших сайтах


В 20.09.2020 в 11:56, helen2014 сказал:

Здравствуйте!

На хостинге beget нет возможности настройки бэкапа как нам нужно.

 Нужно настроить бэкап базы данных mysql по крону. Два раза в сутки.

Также время хранения бэкапа, чтобы удалялись старые.

Сам хостинк этого не делает лишь дал инструкцию:

Вы можете создать Bash-скрипт, который будет выгружать дамп с помощью утилиты mysqldump и сохранять его на аккаунте, а также удалять более старые копии. Данный скрипт разместите в определенной папке и укажите к нему путь при создании задания в разделе CronTab.

Команда на экспорт дампа:


mysqldump -hlocalhost -uDB_NAME DB_NAME -p'PASSWORD' > ~/path/dump.sql
  • DB_LOGIN и PASSWORD замените на имя базы данных и пароль соответственно;
  • dump.sql - имя файла, в котором будет находится дамп. Можете выбрать другое имя. Например, можно подставлять в имя текущую дату и время, чтобы при следующем экспорте дампа старый файл не перезаписался новым (если нужно сохранять старые копии);
  • path - путь к папке, в которой будет создан файл дампа после экспорта.

Удалять старые копии можно с помощью утилиты find. Эта утилита позволяет найти файлы, которые старше определенного срока и выполнить с ними определенные действия (в нашем случае удалить):


find $backup_dir -name "*.sql" -type f -mtime +$days -delete

Эта команда находит все файлы формата .sql старше определенной даты и удаляет их.

  • $backup_dir - путь к папке в которой будут храниться резервные копии;
  • $days - количество дней, которые будут храниться резервные копии.

Итоговый скрипт должен иметь расширение .sh.

Если у вас мало опыта по созданию Bash-скриптов, то можете ознакомиться с этим циклом статей - https://habr.com/ru/company/ruvds/blog/325522/

 

Нужно написать этот самый скрипт.

Может кто помочь?

Посмотрите здесь https://vps.ua/wiki/backup/ , может подчернете для себя, что-то. Сам озадачен этим вопросом.

Надіслати
Поділитися на інших сайтах


  • 4 months later...

Тоже изучаю вопрос бекапов с человеческим лицом. А как заставить скрипт лить ещё бекап не в папку на сервере а на какой нибудь яндекс диск? И можно ли поставить тот же ispmanager на свой сервер это ж какой-то софт? Может его можно накатить на сервер? Или хостеры сами только такое могут?

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.