- MYSQL. Бэкап базы по расписанию
- Как сделать резервную копию баз данных MySQL (MariaDB) в Windows без phpMyAdmin
- Как сделать резервную копию БД MySQL и MariaDB в Windows
- Восстановление баз данных из резервной копии без phpMyAdmin в Windows
- Запланировать и автоматизировать резервное копирование SQL Server баз данных в SQL Server Express
- Аннотация
- Дополнительная информация
- MySQL 8 — резервное копирование BAT файлом
- Ссылки
- Функции
- Пример настройки расписания
- Ежедневная архивация mysql-баз под windows
MYSQL. Бэкап базы по расписанию
Одно из самых нудных, но жизненно необходимых занятий — это создание бэкапов. И хвала небесам, если получается настроить автоматический бэкап по расписанию. В этой статье описан способ создания бэкапов базы mysql по расписанию cron.
Для бэкапа используем команду mysqldump. Обычный бэкап с помощью её «урезанной» версии делается так:
mysqldump -u alexgur -p db_alexgur > db_alexgur_backup_file
При вводе этой команды будет запрошен пароль от базы db_alexgur для пользователя alexgur. Но чтобы сделать автоматический бэкап необходимо прописать пароль внутри команды, поэтому используем mysqldump с ключами. Заодно сделаем сохранение времени создания бэкапа в названии файла и зададим папку, куда будет сохраняться бэкап. Команда будет выглядеть так:
mysqldump -u alexgur —password=’ПАРОЛЬ’ —databases db_alexgur > /root/db_alexgur_$(date +%Y%m%d_%H%M%S).sql.gz
В явном виде задали папку для сохранения бэкапа «/root/». Можно изменить на любую другую.
Набор символов $(date +%Y%d%m_%H%M%S) выводит дату создания в названии файлов. От года до секунды. Такое название бэкапов даёт возможность отсортировать файлы по дате создания с помощью сортировки по названию. Что удобно для поиска последнего бэкапа.
Если необходимо выбрать хост, то надо добавить ключ -h. По умолчанию он равен localhost.
Как показывает практика, дампы баз хорошо поддаются сжатию. Поэтому добавим gzip сжатие бэкапов для экономии места на диске.
mysqldump -u alexgur —password=’ПАРОЛЬ’ -h localhost —databases db_alexgur | gzip > /root/db_alexgur_$(date +\%Y\%m\%d_\%H\%M\%S).sql
В итоге, в /etc/crontab можно прописать выполнение бэкапа. К примеру, раз в 7 дней, в полночь:
Как сделать резервную копию баз данных MySQL (MariaDB) в Windows без phpMyAdmin
Как сделать резервную копию БД MySQL и MariaDB в Windows
Резервную копию можно создать в графическом веб-интерфейсе в phpMyAdmin. Если вы хотите сделать бэкап сразу всех баз данных, то перейдите на главную страницу phpMyAdmin, оттуда перейдите во вкладку Экспорт. Далее всё достаточно просто.
Аналогично при бэкапе отдельных баз данных: перейдите на страницу интересующей БД, а далее во вкладку Экспорт.
phpMyAdmin — это прослойка на PHP между СУБД и пользователем, по этой причине скорость создания дампа очень большой базы займёт больше времени, чем если создавать его напрямую через специальную программу от MySQL или MariaDB.
Если вы решили сделать бэкап базы данных MySQL из командной строки в Windows, то для этого понадобиться утилита mysqldump.exe, она поставляется вместе с MySQL и расположена в каталоге с установленной MySQL/MariaDB в папке bin. Например, если СУБД установлена в C:\Server\bin\mysql-8.0, то программа mysqldump.exe будет находиться в папке C:\Server\bin\mysql-8.0\bin\.
Для её использования откройте командную строку и перетащите туда программу. Программу можно использовать с разнообразными опциями.
Если вы хотите сделать резервную копию всех баз данных в один файл, то выполните:
Кстати, файл нужно искать в той папке, которую вы видите в приглашении командной строки.
Для того, чтобы сделать резервную копию только одной базы данных (например, rsyslog):
Чтобы сделать резервную копию нескольких баз данных используйте опцию —databases, а после него через пробел перечислите желаемые для бэкапа базы данных:
Чтобы сделать резервную копию только одной таблицы (wp_posts) из базы данных (wordpress):
Для того, чтобы сделать резервную копию нескольких таблиц, перечислите их через пробел после названия БД:
Восстановление баз данных из резервной копии без phpMyAdmin в Windows
Для экспорта баз данных, phpMyAdmin работает довольно неплохо. Но с импортом возникло ряд проблем. Намного проще и в разы быстрее сделать импорт без phpMyAdmin и других помощников на PHP скриптах.
Для этого откройте командную строку Windows. Нажмите комбинацию WIN+x, затем выберите Windows PowerShell. Чтобы выйти из PowerShell и перейти в командную строку, выполните:
Затем смените текущую папку (укажите путь до подпапки bin внутри папки, куда установлена MySQL или MariaDB — у вас это может быть другой путь):
Запланировать и автоматизировать резервное копирование SQL Server баз данных в SQL Server Express
В этой статье вводится, как использовать сценарий Transact-SQL и планирующий задачи Windows для автоматизации резервного копирования баз данных SQL Server Express по расписанию.
Исходная версия продукта: SQL Server
Исходный номер КБ: 2019698
Аннотация
SQL Server Выпуски Express не предоставляют возможность планировать задания или планы обслуживания, так как компонент агента SQL Server не включен в эти выпуски. Поэтому при использовании этих выпусков необходимо использовать другой подход к использованию баз данных.
В настоящее время SQL Server пользователей Express могут сделать это с помощью одного из следующих способов:
Используйте SQL Server Management Studio или Azure Data Studio. Дополнительные сведения о том, как использовать эти средства для обеспечения их работы с базой данных, можно найти по следующим ссылкам:
Используйте сценарий Transact-SQL, использующий семейство команд BACKUP DATABASE. Дополнительные сведения см. в резервном копировании (Transact-SQL).
В этой статье описывается, как использовать сценарий Transact-SQL вместе с планивщиком задач для автоматизации резервного копирования баз данных SQL Server Express по расписанию.
Это относится только к SQL Server express editions, а не к SQL Server Express LocalDB.
Дополнительная информация
Для этого выполните следующие четыре действия для SQL Server баз данных с помощью планивщика задач Windows:
Шаг А. Создайте хранимую процедуру для создания базы данных.
Подключите к SQL express и создайте sp_BackupDatabases хранимую процедуру в вашей базе данных master с помощью скрипта в следующем расположении:
Шаг Б. Скачайте средство SQLCMD (если применимо).
С помощью этой служебных данных можно вводить SQL sqlcmd Transact-SQL, системные процедуры и файлы скриптов. В SQL Server версии 2014 и более низких версий эта программа поставляется как часть продукта. Начиная с SQL Server 2016, с помощью этой совме- sqlcmd Дополнительные сведения можно получить в sqlcmd Utility.
Шаг C. Создание пакетного файла с помощью текстового редактора.
В текстовом редакторе создайте пакетный файл с именем Sqlbackup.bat и скопируйте текст из одного из следующих примеров в этот файл в зависимости от сценария:
Все сценарии ниже используются D:\SQLBackups в качестве владельца места. Сценарий необходимо скорректировать в правильном расположении диска и папки «Резервная копия» в вашей среде.
Если вы используете SQL проверку подлинности, убедитесь, что доступ к папке ограничен авторизованные пользователи, так как пароли хранятся в виде простого текста.
Папка для исполняемого приложения обычно находится в переменных Path для сервера после установки SQL Server установки в качестве SQLCMD отдельного средства. Но если переменная Path не перечисляет эту папку, вы можете добавить ее расположение в переменную Path или указать полный путь к этой с полезной папке.
Пример 1. Полные резервные копии всех баз данных в локальном именоваемом экземпляре SQLEXPRESS с помощью проверки подлинности Windows.
Пример 2. Разнонаправленное резервное копирование всех баз данных в локальном именоваемом экземпляре SQLEXPRESS с помощью SQLLogin и его пароля.
SQLLogin должен иметь по крайней мере роль оператора резервного копирования в SQL Server.
Пример 3. Занося в журнал резервные копии всех баз данных в локальном именоваемом экземпляре SQLEXPRESS с помощью проверки подлинности Windows
Пример 4. Полные резервные копии базы данных USERDB в локальном именоваемом экземпляре SQLEXPRESS с использованием проверки подлинности Windows
Аналогичным образом, можно сделать разнонаправленное резервное копирование USERDB, в записав параметр в поле «D» и в журнале «Backup of USERDB» (Резервное копирование журнала USERDB), в конце «L» для этого @backupType @backupType параметра.
Шаг D. Запланировать задание с помощью план-расписания задач Windows для выполнения пакетного файла, созданного на шаге B. Для этого выполните следующие действия:
На компьютере, на SQL Server Express, нажмите кнопку «Начните», а затем в текстовом поле введите планировщик задач.
В области «Наилучшее совпадение» щелкните планировать задачи, чтобы запустить его.
В план-графике задач щелкните правой кнопкой мыши библиотеку расписания задач и выберите задачу «Создать базовую».
Введите имя новой задачи (например, SQLBackup) и нажмите кнопку «Далее».
Выберите «Ежедневно» для триггера задачи и нажмите кнопку «Далее».
Установите для повторения один день и нажмите кнопку «Далее».
Выберите «Запустить программу» в качестве действия и нажмите кнопку «Далее».
Нажмите кнопку«Обзор», выберите пакетный файл, созданный на шаге C, а затем нажмите кнопку «Открыть».
При нажатии кнопки «Готово» в диалоговом окне «Свойства» для этой задачи зайдите в диалоговое окно «Свойства».
На вкладке «Общие»
Просмотрите параметры безопасности и убедитесь, что для учетной записи пользователя, с запущенной задачей (в списке «При запуске задачи» указана следующая учетная запись пользователя:)
Учетная запись должна иметь по крайней мере разрешения на чтение и выполнение для запуска считывайки sqlcmd. Кроме того,
При использовании проверки подлинности Windows в пакетных файлах убедитесь, что владелец задачи имеет разрешения на SQL резервного копирования.
При использовании SQL проверки подлинности в пакетных файлах у SQL должны быть необходимые разрешения для SQL резервного копирования.
Настройте другие параметры в соответствии с вашими требованиями.
В качестве теста запустите пакетный файл из шага C из командной подсказки, которая запущена с той же учетной записью пользователя, которая владеет задачей.
При использовании процедуры, описанной в этой статье, необходимо помнить о следующих особенноствах:
Служба планировщика задач должна быть запущена во время запланированного запуска задания. Рекомендуется установить для этой службы автоматический тип запуска. Это позволяет убедиться, что служба будет запущена даже при перезапуске.
На диске, на который будут записаны резервные копии, должно быть достаточно места. Рекомендуется регулярно очищать старые файлы в папке «Резервная копия», чтобы убедиться, что на диске не будет места. Сценарий не содержит логику для очистки старых файлов.
MySQL 8 — резервное копирование BAT файлом
Накидал маленький BAT скрипт для резервного копирование MySQL баз. Внесите свои данные и через scheduler настройте расписание резервного копирования.
Ссылки
Функции
- С помощью mysqldump делает резервные копии всех баз данных mysql на сервере.
- Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
- С помощью 7-Zip архивирует резервные копии.
- Удаляет старые резервные копии.
- user — логин в MySQL
- pass — пароль
- prot — протокол
- port — порт
- host — сервер
- BackupDir — папка куда бэкапить
- NumFolders — сколько подпапок с бэкапами хранить
- a7z — путь к 7z.exe
Пример настройки расписания
В Task Scheduler настраиваем новое задание.
Выбираем пользователя, от имени которого будет выполняться резервное копирование. После сохранения задания нас спросят пароль от него. Ставим галку Run whether user is logged or not — запускать даже если юзер не залогинен.
В триггерах настраиваем расписание. У меня резервное копирование происходит каждые 6 часов.
Указываем ссылку на наш BAT файл.
Проверяем настройки. OK.
Теперь все наши MySQL базы будут резервироваться каждые 6 часов — это 4 раза в день. С настройкой NumFolders=10 в BAT файле мы будем хранить данные за последние 2,5 дня. Если вы хотите с таким расписанием хранить резервные копии баз данных 10 дней, то измените: NumFolders=40.
Если хотите хранить ежедневные и ежемесячные резервные копии — сделайте два BAT файла и два расписания резервного копирования в разные папки.
Ежедневная архивация mysql-баз под windows
Задача, которая стояла передо мной:
Есть сервер с mysql под управлением windows server 2008 R2, на котором, в числе прочего, крутится mysql с несколькими десятками баз данных, число и состав которых периодически меняется. Нужно организовать ежедневный бекап этих баз без остановки mysql сервера, причем таким образом, чтобы каждая база попадала в отдельных архив. Эта, на первый взгляд простейшая задача (возможно, так оно и есть) для меня оказалась достаточно сложной.
Что нам говорит гугл?
О том, что есть mysqlhotcopy и mysqldump. Первый работает прямо с файлами баз данных, второй — делает дампы с помощью запросов.
Заставить работать mysqlhotcopy даже с простейшими параметрами я не смог, и погуглив, пришел к выводу (поправьте меня если ошибаюсь) что для windows данный скрипт не приспособлен.
Начинал я именно с mysqlhotcopy, потому что работать непосредственно с файлами в моем случае проще — просто подсунул файлы мускулю и работай. Дамп же, хоть и весит меньше за счет отсутствия индексов, еще нужно импортировать. Но, раз другого способа без остановки mysql я не нашел, будем делать дампы.
Здесь я нашел отличное руководство по ключам скрипта. Итак, он может сделать общий дамп всех баз в один файл (крайне неудобно), или сделать дампы перечисленных баз. Так как число и имена баз у нас меняются, то писать список не вариант — каждый раз править его замучаемся. Значит нужен скрипт, который будет подставлять в mysqldump каждую базу поочередно.
Реализовал я это так — батник смотрит какие папки лежат в директории данных mysql и в цикле подставляет имя каждой из них (которое и является именем базы данных) в строку параметров mysqldump.
Полученный дамп сразу же архивируется при помощи 7-zip в формат gzip (чтобы полученный файл можно было без распаковки скормить мускулю). Ну а утилитка eachfile удалит устаревшие бекапы.
В процессе гугления также наткнулся на программу MySQL Backup Tool тестировать которую, однако, не решился.