aleksey_z

Авто-бэкап БД в PHPMyAdmin или как?

Recommended Posts

Всех с Новым Годом и наступающим Рождеством Христовым!

 

Создаю сайт с магазином на Prestashop из Апп-центра на сервере.

 

Подскажите пожалуйста, как смастерить авто-бэкапирование БД?

Бэкап всех файлов сайта организован автоматически, средствами моего 1-го сервера (на котором сайт), на 2-ой сервер по любому расписанию, или необходимости.

А вот с бэкапом БД пока не разобрался, т.е. делаю экспорт БД сайта в PhPMyAdmin вручную, после бэкапа файлов сайта. А как настроить в PhPMyAdmin автоматическое бэкапирование БД по расписанию (как с файлами сайта)? Чтоб, допустим раз в 2 суток автоматом выполнялся бэкап БД сайта (в свою папку на 2-ом сервере).

 

Спасибо.

Share this post


Link to post
Share on other sites

sqldump ИмяБазы >ИмяБэкапа.sql и через cron или встроенный в интерфейс планировщик запускать. Вернусь домой - напишу точнее.

Share this post


Link to post
Share on other sites

Я нашел куда запилить виртуалочку :smile:

mysqldump ttrss -u ttrss -p123 > /volume1/1/backup.sql

mysqldump ;комманда

ttrss ;имя базы

-u ttrss ;имя пользователя для доступа к базе. раздельно

-p123 ;пароль 123. Обязательно слитно.

> /volume1/1/backup.sql ;символ > означает сохранить из базы и дальше путь к файлу. можно написать mysqldump ttrss -u ttrss -p123 < /volume1/1/backup.sql и это восстановит базу из бэкапа.

 

сам скрипт я запускаю через планировщик от root.

Share this post


Link to post
Share on other sites

Спасибо, почитал по ссылке, почти понял (я далёк от командной строки), но не понял, как должен называться файл бэкапа.

Если БД называется testshop, то так вроде должен называться файл бэкапа testshop.sql ? (если из PHPMyAdmin экспорт - так называется)

 

И за пример спасибо, т.е.:

 

mysqldump testshop -u testshop -ptestshop > /volume1/public/testshopbackup/testshop.sql

 

и получаю бэкап нужной БД локально, в указанной папке, по расписанию в планировщике?

А есть возможность ложить файл бэкапа по сети, на другой сервер? И вопрос в файле бэкапа - он один и каждый раз будет перезаписан?

В идеале хотелось бы получить файл бэкапа БД от даты бэкапа (как в Винде точки восстановления). Ибо сайт делаю по немногу, но каждый день. И если что-то набокапорю, легче поднять с наименьшими потерями.

 

В PHPMyAdmin есть настройка репликации, но моих скудных знаний хватило понять, что на втором сервере будет такая же БД, синхронизируемая с Основной. Но есть ли возможность откатиться к БД нужной даты?

 

С бэкапом файлов сайта тоже погорячился, сейчас буду разбираться. Думал уже есть возможность указать для репликации конкретную папку, а не всю общего доступа. У Qnap есть. Тоже хотелось бы каждый бэкап папки сайта testshop, отдельной папкой.

Share this post


Link to post
Share on other sites

Файл бэкапа может называться как угодно. Для добавления даты в имя файла:

 mysqldump testshop -u testshop -ptestshop > /volume1/public/testshopbackup/testshopDB_`date +%Y-%m-%d_%H_%M`.sql

на выходе получится файл: testshopDB_2016-01-06_20_07.sql

Второй сервер на какой операционке работает?

Файлы проще забирать вторым сервером из папки на первом.

Edited by Guest

Share this post


Link to post
Share on other sites

Для архивации файлов сайта проще всего использовать встроенный архиватор tar:

tar -cf /volume1/public/testshopbackup/testshopFiles_`date +%Y-%m-%d_%H_%M`.tar /volume1/web/testshop/*

Архиватор tar

 

/volume1/public/testshopbackup/testshopFiles_`date +%Y-%m-%d_%H_%M`.tar куда положить и как назвать файл

/volume1/web/testshop/* путь к папке с сайтом и * - архивировать все файлы и подпапки

Share this post


Link to post
Share on other sites
Файл бэкапа может называться как угодно. Для добавления даты в имя файла:

 mysqldump testshop -u testshop -ptestshop > /volume1/public/testshopbackup/testshopDB_`date +%Y-%m-%d_%H_%M`.sql

на выходе получится файл: testshopDB_2016-01-06_20_07.sql

Второй сервер на какой операционке работает?

Оба сервера одинаковы, в подписи.

Файлы проще забирать вторым сервером из папки на первом.

Не соображу, как. Ежели забирать вторым сервером по сети, то забирать и файл бэкапа БД, и файлов сайта.

Edited by Guest

Share this post


Link to post
Share on other sites
Для архивации файлов сайта проще всего использовать встроенный архиватор tar:

tar -cf /volume1/public/testshopbackup/testshopFiles_`date +%Y-%m-%d_%H_%M`.tar /volume1/web/testshop/*

Архиватор tar

 

/volume1/public/testshopbackup/testshopFiles_`date +%Y-%m-%d_%H_%M`.tar куда положить и как назвать файл

/volume1/web/testshop/* путь к папке с сайтом и * - архивировать все файлы и подпапки

 

Т.е. использовать не репликацию/резервирование, а использовать встроенный архиватор tar, и планировщик задач с заданиями, для запуска скриптов по созданию и бэкапа БД, и файлов сайта?

И таким образом я получаю желаемый результат бэкапов по установленным в планировщике параметрам/датам?

Буду пробовать реализовать.

 

Спасибо.

Со Святым вечером и Рождеством Христовым!

Share this post


Link to post
Share on other sites
Т.е. использовать не репликацию/резервирование, а использовать встроенный архиватор tar, и планировщик задач с заданиями, для запуска скриптов по созданию и бэкапа БД, и файлов сайта?

И таким образом я получаю желаемый результат бэкапов по установленным в планировщике параметрам/датам?

Буду пробовать реализовать.

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

 

На первом сервере получается:

mysqldump testshop -u testshop -ptestshop > /volume1/public/testshopbackup/testshopDB_`date +%Y-%m-%d_%H_%M`.sql
tar -cf /volume1/public/testshopbackup/testshopFiles_`date +%Y-%m-%d_%H_%M`.tar /volume1/web/testshop/*
find /volume1/public/testshopbackup/ -type f -mtime +7 -delete

и включить службу FTP сервера

 

На втором сервере.

wget -P /volume1/testshopbackup_server2/ --user=admin --password 123 -nc ftp://192.168.1.37/public/testshopbackup/testshop*.*
find /volume1/public/testshopbackup/ -type f -mtime +30 -delete

Manpage:wget

 

-P /volume1/testshopbackup_server2/ папка в которую будет качать wget

--user=admin --password 123 пользователь и пароль от ftp на первом сервере. обязательно два минуса.

-nc пропускать уже скачанные файлы

ftp://192.168.1.37/public/testshopbackup/testshop*.* откуда собственно качать файлы. ну и адрес сервера и путь к файлам свои подставить

find /volume1/public/testshopbackup/ -type f -mtime +7 -delete удаляет в папке файлы старше 7 и 30 дней соответственно.

 

В планировщик хоть через каждый час. смотря как часто редактируется

  • Like 1

Share this post


Link to post
Share on other sites

Странно, что больше никто не подтянулся. А то в одиночку я могу такого насоветовать :smile:))

Share this post


Link to post
Share on other sites

Мы слушаем, восхищаемся и жуем попркорн :wink:. Не правда круто. Прямо тру линуксвэй...

Из умного (но для меня чужого опыта) можно задействовать cloudstation (делать копию архива на win, др. syno и т.д.) и cloud Sync (выкладывать в облако хранящее старые копии [вроде dropbox и еще кто-то умеет] шифрованные архивы). Только это все скорее отказоустойчивость...

Share this post


Link to post
Share on other sites

Всех с Рождеством Христовым!

 

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

 

Именно, т.е. полный как бы срез сайта в опред промежуток времени.

 

На первом сервере получается:

mysqldump testshop -u testshop -ptestshop > /volume1/public/testshopbackup/testshopDB_`date +%Y-%m-%d_%H_%M`.sql
tar -cf /volume1/public/testshopbackup/testshopFiles_`date +%Y-%m-%d_%H_%M`.tar /volume1/web/testshop/*
find /volume1/public/testshopbackup/ -type f -mtime +7 -delete

и включить службу FTP сервера

 

На втором сервере.

wget -P /volume1/testshopbackup_server2/ --user=admin --password 123 -nc ftp://192.168.1.37/public/testshopbackup/testshop*.*
find /volume1/public/testshopbackup/ -type f -mtime +30 -delete

Manpage:wget

 

-P /volume1/testshopbackup_server2/ папка в которую будет качать wget

--user=admin --password 123 пользователь и пароль от ftp на первом сервере. обязательно два минуса.

-nc пропускать уже скачанные файлы

ftp://192.168.1.37/public/testshopbackup/testshop*.* откуда собственно качать файлы. ну и адрес сервера и путь к файлам свои подставить

find /volume1/public/testshopbackup/ -type f -mtime +7 -delete удаляет в папке файлы старше 7 и 30 дней соответственно.

 

В планировщик хоть через каждый час. смотря как часто редактируется

 

Вот это да. Спасибище. Попробую разобраться с этим трешем, и воспроизвести для своих железок.

Share this post


Link to post
Share on other sites
Мы слушаем, восхищаемся и жуем попркорн :wink:. Не правда круто. Прямо тру линуксвэй...

Да, скоро азы начну понимать.

Из умного (но для меня чужого опыта) можно задействовать cloudstation (делать копию архива на win, др. syno и т.д.) и cloud Sync (выкладывать в облако хранящее старые копии [вроде dropbox и еще кто-то умеет] шифрованные архивы). Только это все скорее отказоустойчивость...

Есть dropbox. Не охота внешнее хранение использовать. Три сервака в сетке - места суммарно почти 15 ТБ.

Share this post


Link to post
Share on other sites
Три сервака в сетке - места суммарно почти 15 ТБ.

Приличный объем. У меня все скромнее. Главное что бы электричество не подвело. У меня один раз свет мигнул - прощай два БП PC, встроенный на материнки LAN, и Роутер с 5 Lan портами превратился в Wi-Fi репитор.

Share this post


Link to post
Share on other sites
Три сервака в сетке - места суммарно почти 15 ТБ.

Приличный объем. У меня все скромнее. Главное что бы электричество не подвело. У меня один раз свет мигнул - прощай два БП PC, встроенный на материнки LAN, и Роутер с 5 Lan портами превратился в Wi-Fi репитор.

 

Про Qnap забыл, итого почти 18 ТБ. Фильмотека (все блю-рей) + музыка (Hi-Res).

 

С электричеством так нельзя. Я тоже как-то раз халатно отнесся к подводу интернета в свой демо-офис (114 м кабель 6 кат для наружных работ, с крыши дома, по наружной стене). Возьми и прилепи сразу два грозо-разрядника по 15$, тем более имея в офисе реальную землю. Неа, ЛЕНЬ, все же работает, итернет есть, полный гигабит, ну а кабель; да и ладно, он натянут по углу, не достанет. Ага! Первая нормальная гроза и считаем минусы:

минус роутер - 120 долл.

минус свич с ПоЕ 4 порта Хьюлит П - 107 долл. стоял за рутером, спас вроде все остальное

минус кабель от прова ко мне (видать сплавилась изоляция на жилах) и теперь имею полных 100 мбит/с вместо 1000 (на уцелевших жилах)

минус свич провайдера (зато теперь и они землю дотянули до своего нового свича)

минус соответственно сумма на все переделки. Думаю весной прокинуть оптику, вместо меди с крыши, и закрыть эту печальку.

 

Но на данный момент, вся моя сеть выглядит так: на входном калеченном кабеле - грозо-разрядники и на стороне прова, и на моей стороне с заземлением, далее - роутер, свичи, РС, сервера, IP камеры, контроллеры и все то, что постоянно в локалке работает - воткнуто в сетевые фильтры и далее на ИБП, которых 2 шт. ИБП обычные АРС 650 вроде. Всё чётко.

Share this post


Link to post
Share on other sites

На первом сервере получается:

mysqldump testshop -u testshop -ptestshop > /volume1/public/testshopbackup/testshopDB_`date +%Y-%m-%d_%H_%M`.sql
tar -cf /volume1/public/testshopbackup/testshopFiles_`date +%Y-%m-%d_%H_%M`.tar /volume1/web/testshop/*
find /volume1/public/testshopbackup/ -type f -mtime +7 -delete

и включить службу FTP сервера

 

На втором сервере.

wget -P /volume1/testshopbackup_server2/ --user=admin --password 123 -nc ftp://192.168.1.37/public/testshopbackup/testshop*.*
find /volume1/public/testshopbackup/ -type f -mtime +30 -delete

 

В планировщик хоть через каждый час. смотря как часто редактируется

А возможно в планировщике задач в Поле Скрипт ввести все три строки команд (как ранее было две строки при ручном обновлении DSM)?

И соответственно три строки на втором сервере.

Share this post


Link to post
Share on other sites

Спасибо огромное, всё получилось: по расписанию выполняет бэкапы, второй сервер забирает (пронаблюдал даже)!

С датами - все четко.

Команды вписал сразу все в одну задачу: и на 1, и соответственно на 2 сервере. Вроде работает.

 

Но возник вопрос. Перед запуском выполнения задач, сделал экспорт БД из PHPMyAdmin. Затем пронаблюдал выполнение задач, смотрю, что размеры файлов БД разные. Из PHPMyAdmin экпорт 2,8 МБ, а полученный дамп по команде - 2,6 МБ. Или он поджимается и это нормально?

Share this post


Link to post
Share on other sites

Скорее всего phpmyadmin дописывает служебную инфу для себя. Точно незнаю. Бэкап базы можно открыть любым текстовым редактором и сравнить. Можно загрузить бэкап в соседнюю тестовую базу и проверить все ли нормально

Share this post


Link to post
Share on other sites

На досуге проверю, поэкспериментирую с БД, попробую восстановить сайт из полученного бэкапа (файлы+БД).

 

А так конечно здорово получилось.

Share this post


Link to post
Share on other sites

to antihrist2002

Привет.

 

Недавно пробовал развернуть сайт из бэкапа - получилось. Единственно, в бэкапе файлов сайта, после распаковки архива, не было одного файла (по сравнению с бэкапом папки сайта с сервера на РС через WinSCP). Забыл, как называется файл (не очень я сайтовод), но методом сравнения добавил недостающий файл. В общем вроде все поднялось и работает, и даже обновил копию без проблем. Ещё раз спасибо.

 

На днях потренируюсь ещё, вспомню, что отсутствовало. Отпишусь.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.