Восстановление базы при перезагрузке

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

Модератор: immortal

Ответить
web_amateur
Сообщения: 14
Зарегистрирован: Вс фев 28, 2021 7:25 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Восстановление базы при перезагрузке

Сообщение web_amateur » Пн окт 31, 2022 11:42 am

Добрый день!

Система стоит на Ubuntu 22.04.
Если перегружать или выключать систему через "меню" MJDM, то работает соответсвующий сценарий и делает копию базы в /database_backup/db.sql, а старую копию переименовывает в /database_backup/db.prev
При каждой загрузке системы происходит восстановление базы из этого файла /database_backup/db.sql циклом main, если я правильно понимаю код.
Вроде бы все логично.

Но ... если Ubuntu перегрузится самопроизвольно при сбое питания или командой из консоли, то получается, что база восстановится из файла /database_backup/db.sql, который может быть очень старым (со времени последнего рестарта из "меню").
В тоже самое время скрипт maintenance ежедневно в 02:00 пишет копии системы в другую папку /backup/, откуда можно только вручную восстановить систему.
Так задумано ? Или у меня что-то неправильно работает?

Заранее спасибо за ответы!
3Q Nettop Shell Atom D2500 / Ubuntu 22.04 / ESP8266
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Восстановление базы при перезагрузке

Сообщение xor » Пн окт 31, 2022 6:51 pm

web_amateur писал(а):
Пн окт 31, 2022 11:42 am
Добрый день!

Система стоит на Ubuntu 22.04.
Если перегружать или выключать систему через "меню" MJDM, то работает соответсвующий сценарий и делает копию базы в /database_backup/db.sql, а старую копию переименовывает в /database_backup/db.prev
При каждой загрузке системы происходит восстановление базы из этого файла /database_backup/db.sql циклом main, если я правильно понимаю код.
Вроде бы все логично.

Но ... если Ubuntu перегрузится самопроизвольно при сбое питания или командой из консоли, то получается, что база восстановится из файла /database_backup/db.sql, который может быть очень старым (со времени последнего рестарта из "меню").
В тоже самое время скрипт maintenance ежедневно в 02:00 пишет копии системы в другую папку /backup/, откуда можно только вручную восстановить систему.
Так задумано ? Или у меня что-то неправильно работает?

Заранее спасибо за ответы!
что мешает регулярно обновлять db.sql ?
web_amateur
Сообщения: 14
Зарегистрирован: Вс фев 28, 2021 7:25 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Восстановление базы при перезагрузке

Сообщение web_amateur » Пн окт 31, 2022 7:52 pm

xor писал(а):
Пн окт 31, 2022 6:51 pm
web_amateur писал(а):
Пн окт 31, 2022 11:42 am
Добрый день!

Система стоит на Ubuntu 22.04.
Если перегружать или выключать систему через "меню" MJDM, то работает соответствующий сценарий и делает копию базы в /database_backup/db.sql, а старую копию переименовывает в /database_backup/db.prev
При каждой загрузке системы происходит восстановление базы из этого файла /database_backup/db.sql циклом main, если я правильно понимаю код.
Вроде бы все логично.

Но ... если Ubuntu перегрузится самопроизвольно при сбое питания или командой из консоли, то получается, что база восстановится из файла /database_backup/db.sql, который может быть очень старым (со времени последнего рестарта из "меню").
В тоже самое время скрипт maintenance ежедневно в 02:00 пишет копии системы в другую папку /backup/, откуда можно только вручную восстановить систему.
Так задумано ? Или у меня что-то неправильно работает?

Заранее спасибо за ответы!
что мешает регулярно обновлять db.sql ?
В принципе ничего не мешает кроме забывчивости или отсутствия доступа к системе. Вы уехали в отпуск на неделю, интернета у Вас нет, пропало питание и сервер перегрузился. Есть набор более "свежих" копий базы в папке /backup/ (не старше одного дня), но система предпочитает использовать более старую из папки /database_backup/. Нелогично как-то. Вот отсюда и вопрос.
3Q Nettop Shell Atom D2500 / Ubuntu 22.04 / ESP8266
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Восстановление базы при перезагрузке

Сообщение xor » Пн окт 31, 2022 9:19 pm

web_amateur писал(а):
Пн окт 31, 2022 7:52 pm
xor писал(а):
Пн окт 31, 2022 6:51 pm
web_amateur писал(а):
Пн окт 31, 2022 11:42 am
Добрый день!

Система стоит на Ubuntu 22.04.
Если перегружать или выключать систему через "меню" MJDM, то работает соответствующий сценарий и делает копию базы в /database_backup/db.sql, а старую копию переименовывает в /database_backup/db.prev
При каждой загрузке системы происходит восстановление базы из этого файла /database_backup/db.sql циклом main, если я правильно понимаю код.
Вроде бы все логично.

Но ... если Ubuntu перегрузится самопроизвольно при сбое питания или командой из консоли, то получается, что база восстановится из файла /database_backup/db.sql, который может быть очень старым (со времени последнего рестарта из "меню").
В тоже самое время скрипт maintenance ежедневно в 02:00 пишет копии системы в другую папку /backup/, откуда можно только вручную восстановить систему.
Так задумано ? Или у меня что-то неправильно работает?

Заранее спасибо за ответы!
что мешает регулярно обновлять db.sql ?
В принципе ничего не мешает кроме забывчивости или отсутствия доступа к системе. Вы уехали в отпуск на неделю, интернета у Вас нет, пропало питание и сервер перегрузился. Есть набор более "свежих" копий базы в папке /backup/ (не старше одного дня), но система предпочитает использовать более старую из папки /database_backup/. Нелогично как-то. Вот отсюда и вопрос.
эм, я писал, что это можно делать самому) своим скриптом и запускать хоть каждый час
Например, так (только свои пути и имя файла подставьте:

Код: Выделить всё

//debmes('Сохраняю копию базы');
//$filename = ROOT . '/database_backup_my/db.sql';
$filename = 'c:/Users/User/YandexDisk/DumpDb/db.sql';
$mysqlDumpPath = 'c:/_majordomo/mysql/bin/mysqldump.exe';
$mysqlDumpParam = ' --user=' . DB_USER . ' --password=' . DB_PASSWORD;
$mysqlDumpParam .= ' --no-create-db --add-drop-table --databases ' . DB_NAME;
if (file_exists( $filename . '.prev'.date("H"))) @unlink( $filename . '.prev'.date("H"));
if (file_exists($filename)) rename($filename, $filename . '.prev'.date("H"));
exec($mysqlDumpPath . $mysqlDumpParam . ' > ' . $filename);
//debmes('Дамп сохранён');
За это сообщение автора xor поблагодарили (всего 2):
web_amateur (Пн окт 31, 2022 10:53 pm) • Chainik (Вт ноя 01, 2022 8:56 pm)
Рейтинг: 2.33%
Ответить