Trotor 27 12/21/19 21:25 (изменено) Подскажите пожалуйста составить задачу для планировщика cron (в ISPmanager) - нужно что бы к примеру раз в сутки, данные одной базы бекапились в другую базу. Изменено 21 декабря 2019 пользователем Haktar Поделиться сообщением Ссылка на сообщение
Lesovsky 171 01/09/20 02:52 Подскажите о целесообразности восстановления в другую базу данных? Вы хотите так проверять, что из бекапа восстанавливается корректно? У вас уже настроено Резервное копирование? Поделиться сообщением Ссылка на сообщение
Trotor 27 01/09/20 13:33 10 часов назад, Lesovsky сказал: Подскажите о целесообразности восстановления в другую базу данных? Вы хотите так проверять, что из бекапа восстанавливается корректно? У вас уже настроено Резервное копирование? Иногда нужно востановить часть базы данных - какое либо поле или какую либо таблицу. То есть скажем нужно к примеру востановить одно поле - для этого нужно востановить всю базу данных, а это потеря сообщений и данных за весь день. А имея каждый день свежую и живую базу-клон, можно с ней работать локально. Поделиться сообщением Ссылка на сообщение
Lesovsky 171 01/09/20 19:03 У вас есть дополнительный сервер? Эти операции очень дорогие в плане ресурсов сервера. Вообще как вижу тут нужно ставить утилиту Rsync, или иные утилиты для резервного копирования\восстановления и настроить её выполнение через Планировщик заданий. Может конечно есть какие-то иные более изящные способы, по-хорошему спросить ещё на форуме ISPManager. 1 Поделиться сообщением Ссылка на сообщение
Trotor 27 01/09/20 19:53 Понял. Тогда более лайт-версия, через phpMyadmin. В нём можно скопировать одну базу данных, в другую: Можно ли такое проводить не вручную, а автоматически? Поделиться сообщением Ссылка на сообщение
Lesovsky 171 01/10/20 08:32 (изменено) В общем собрал такое решение, у самого тоже ISPManager 5 Lite. Задача cron для автоматического бекапа и восстановления базы данных MySQL: Добавить в .my.cnf сервера базы данных [mysql] user=db_user password=db_password [mysqldump] user=db_user password=db_password Или в случае как у меня ISPManager 5 с серверами баз данных в Docker /etc/my.cnf.d/mysql-clients.cnf # # These groups are read by MariaDB command-line tools # Use it for options that affect only one utility # [mysql] user=db_user password=db_password [mysql_upgrade] [mysqladmin] [mysqlbinlog] [mysqlcheck] [mysqldump] user=db_user password=db_password [mysqlimport] [mysqlshow] [mysqlslap] Права доступа установить на файл - 400 Перезапустить сервер баз данных Создать задачу в планировщик заданий с командой: mysqldump --add-drop-table -P3311 -h127.0.0.1 -udb_user db_name > db_name_`date +%Y-%m-%d`.sql && mysql -P3311 -h127.0.0.1 -udb_user db_name_NEW < db_name_`date +%Y-%m-%d`.sql Не много пояснений: Сначала выполняется задача mysqldump сказав && после выполнения бекапа, делаем импорт. --add-drop-table - Добавляет оператор DROP TABLE перед каждым оператором CREATE TABLE Без параметров -P и -h можно обойтись, если сервер БД один, или локальный, а так: -P3311 - порт сервера бд -h - сервер Вот например команда, если нужно сегодня, восстанавливать из вчерашнего бекапа: mysqldump --add-drop-table -P3311 -h127.0.0.1 -udb_user db_name > db_name_`date +%Y-%m-%d`.sql && mysql -P3311 -h127.0.0.1 -udb_user db_name_NEW < db_name_`date --date="yesterday" +"%Y-%m-%d"`.sql Должно получиться следующее (задача будет выполняться каждый день в 03.00): Конечно можно ещё добавить команду, чтобы удалялся бекап за вчера, чтобы исключить переполнение. Изменено 11 января 2020 пользователем Lesovsky UPD 1 Поделиться сообщением Ссылка на сообщение
Trotor 27 01/10/20 18:50 10 часов назад, Lesovsky сказал: В общем погуглил и собрал такое решение, у самого тоже ISPManager 5 Lite. Спасибо большое. Сейчас буду пробовать у себя. Отпишусь о результатах. Поделиться сообщением Ссылка на сообщение
Trotor 27 01/11/20 03:49 19 часов назад, Lesovsky сказал: mysqldump -P3311 -hlocalhost -udb_user db_name > db_name_`date +%Y-%m-%d_%H_%M`.sql Подождите, а это точно то что мне нужно - нужно копировать базу данных А в базу данных Б Поделиться сообщением Ссылка на сообщение
Lesovsky 171 01/11/20 13:26 9 часов назад, Haktar сказал: Подождите, а это точно то что мне нужно - нужно копировать базу данных А в базу данных Б Подправил пост выше, тестировал, работает. 1 Поделиться сообщением Ссылка на сообщение
Trotor 27 01/11/20 16:42 3 часа назад, Lesovsky сказал: Подправил пост выше, тестировал, работает. Спасибо. Завтра буду тестить и отпишусь в теме. Поделиться сообщением Ссылка на сообщение
Trotor 27 01/12/20 20:59 10.01.2020 в 10:32, Lesovsky сказал: Без параметров -P и -h можно обойтись, если сервер БД один, или локальный, а так: Да сервер у меня один. 10.01.2020 в 10:32, Lesovsky сказал: mysqldump --add-drop-table -P3311 -h127.0.0.1 -udb_user db_name > db_name_`date +%Y-%m-%d`.sql && mysql -P3311 -h127.0.0.1 -udb_user db_name_NEW < db_name_`date +%Y-%m-%d`.sql Вот тут я малость запутался. Скажем у меня есть база данных под названием test Нужно что бы из этой базы копировались таблицы в базу testor_rezerv mysqldump --add-drop-table -udb_user test > test_`date +%Y-%m-%d`.sql && mysql -udb_user testor_rezerv < test_`date +%Y-%m-%d`.sql Вот так? А что такое -udb_user? Поделиться сообщением Ссылка на сообщение
Lesovsky 171 01/12/20 21:14 15 минут назад, Haktar сказал: mysqldump --add-drop-table -udb_user test > test_`date +%Y-%m-%d`.sql && mysql -udb_user testor_rezerv < test_`date +%Y-%m-%d`.sql Вот так? Да, только пользователя(ей) для баз нужно проставить. 15 минут назад, Haktar сказал: А что такое -udb_user? db_user - пользователь базы данных Ну или проще, тоже самое что вы вставляли в файл my.cnf, вроде очевидно. Кстати, бекапы хранятся в директории /root 1 Поделиться сообщением Ссылка на сообщение
Trotor 27 01/12/20 21:32 19 минут назад, Lesovsky сказал: db_user - пользователь базы данных Ну я тормоз, видимо к вечеру голова уже не так работает Поделиться сообщением Ссылка на сообщение
Trotor 27 01/12/20 22:50 Всё сделал. Внёс изменения в файл my.cnf Перезапустил базы данных. Создал новую задачу с таким текстом: mysqldump --add-drop-table -root test > test_`date +%Y-%m-%d`.sql && mysql -root testor_rezerv < test_`date +%Y-%m-%d`.sql Запустил для проверки. В новой вкладки вот такое появилось: <doc> <error>code=3 Not exists</error> </doc> Естественно базв не скопировалась. А да - у меня ISPManager версии 4.4 Поделиться сообщением Ссылка на сообщение