Накидал маленький BAT скрипт для резервного копирование MySQL баз. Внесите свои данные и через scheduler настройте расписание резервного копирования.
Ссылки
Customizing the PATH for MySQL Tools
Установка MySQL 8 на Windows Server 2016
Mysql 8 - mysqldump в командной строке
BAT скрипт для резервного копирования MySQL в Облако Mail.Ru
Функции
- С помощью mysqldump делает резервные копии всех баз данных mysql на сервере.
- Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
- С помощью 7-Zip архивирует резервные копии.
- Удаляет старые резервные копии.
Код
@echo off
SetLocal EnableDelayedExpansion
rem =============================
rem ====== admin variables ======
rem =============================
set user=root
set pass=your_password_is_here
set prot=tcp
set port=3306
set host=localhost
set BackupDir=D:\MySQL\
set NumFolders=10
rem =============================
rem ======== 7-Zip path =========
rem =============================
set a7z=%ProgramFiles%\7-Zip\7z.exe
rem =============================
rem == create backup directory ==
rem ==== DD.MM.YYYY_hhmmmss =====
rem =============================
set h=%time:~0,2%
set h=%h: =0%
set FullBackupDir=%BackupDir%%date%_%h%%time:~3,2%%time:~6,2%\
md %FullBackupDir%
rem =============================
rem === backup all databases ====
rem =============================
for /F "delims=|" %%a in ('mysql -u%user% -P%port% -h%host% -p%pass% -s --execute="show databases;"') do (
rem === backup database ====
mysqldump.exe ^
--user=%user% ^
--host=%host% ^
--protocol=%prot% ^
--port=%port% ^
--password=%pass% ^
--default-character-set=utf8 ^
--single-transaction=TRUE ^
--routines ^
--events ^
--add-drop-table ^
--add-locks ^
--extended-insert ^
--lock-tables ^
--dump-date ^
--disable-keys ^
--tz-utc ^
"%%a" > %FullBackupDir%%%a.sql 2>nul
rem === zip ====
"%a7z%" a -tzip -bb0 -bd -sdel "%FullBackupDir%%%a.zip" "%FullBackupDir%%%a.sql" 2>nul >nul
)
rem =============================
rem ==== remove old folders =====
rem =============================
for /f "tokens=* delims=" %%D in ('dir %BackupDir% /ad /b /o-d') do (
if not %%D=="" (
if not !NumFolders!==0 (
set /a NumFolders-=1
) else (
rd /s /q %BackupDir%%%D 2>nul >nul
)
)
)
- 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 файла и два расписания резервного копирования в разные папки.