Linux Выполнение резервного копирования MySQL по пути на основе времени из Webmin

Я пытался настроить запланированную задачу в Linux Ubuntu Server 12.04 (CronJob) для ежедневного резервного копирования всех моих баз данных MySQL в полночь.

Я установил известный Webmin (хороший веб-интерфейс для управления веб-серверами).

Итак, моя проблема: всякий раз, когда выполняется резервное копирование, файлы перезаписываются!

Это означает: Позавчерашняя резервная копия УТЕРЯНА, сохраняется только «Вчерашняя» резервная копия!

Я пробовал что-то вроде установки динамического пути к файлу, например:

/var/www/mysqlbackups/%d-%m-%y

но у меня не получилось с этим :(

Кто-нибудь может мне помочь.

Большое спасибо, ребята.


person Ammar    schedule 15.08.2012    source источник


Ответы (5)


Я сделал сценарий оболочки (не для вебмина). Поместите его в /etc/cron.daily.

Скрипты делают резервную копию базы данных (сохраняют ее как .gz), а затем загружают ее по ssh на другой сервер. Для авт. Я устанавливаю ключи ssh, поэтому пароль не требуется. Файлы резервных копий имеют уникальные имена, поэтому файлы резервных копий не перезаписываются.

Вот как вы можете создать имя файла в скрипте:

now=`date  +%Y%m%d_%H%M`
dst_path=/var/local/backups
filename="$dst_path/$database.$now.sql.gz"

Затем вы должны написать небольшой скрипт, который удаляет все файлы резервных копий старше x дней.

#!/bin/sh

#
# Creates a backup of a MySQL databases and uses ssh (sFTP) to send if  to another server
# This script shouldbe called from the crontab

PATH=/usr/sbin:/usr/bin:/sbin:/bin

# MySQL user and password
mysql_cmd=/opt/bitnami/mysql/bin/mysqldump
mysql_usr=user_name
mysql_pass=password

# destination ssh
dst_user=user_name
dst_hostname=192.168.1.1

# Database to backup
database=test

# create timestamp
now=`date  +%Y%m%d_%H%M`

# where we store the files
dst_path=/var/local/backups

# backup filename
filename="$dst_path/$database.$now.sql.gz"
dst_filename="$database.$now.sql.gz"

# run backup
$mysql_cmd -u $mysql_usr --password=$mysql_pass  $database | gzip > $filename

# upload to sever (ssh)
scp $filename $dst_user@$dst_hostname:
person Roger    schedule 15.08.2012

Сервер базы данных MySQL> Конфигурация модуля> Выберите «Да» в разделе «Выполняется ли подстановка резервных копий в режиме strftime?»

Это работает для меня! :)

person Mr Vector    schedule 21.01.2014
comment
А вот список переменных, если вы включите подстановку переменных -- virtualmin.com/documentation/id ,template_variable_listing - person hargobind; 04.10.2014

Вы можете использовать динамический путь, но перед этим вы должны включить его в конфигурации модуля:

System > Filesystem Backup > Module Config > Do strftime substitution of backup destinations? > Yes

(Если вы не уверены в заполнителях, просто щелкните текст «Выполнить подстановку резервных копий в режиме strftime?» в конфигурации, и справка покажет вам.)

person Loshon    schedule 11.01.2013
comment
Это только для резервных копий файловой системы (vritualmin 4.08). Ответ @Mr Vector - правильный. - person botzko; 19.07.2014

У меня была такая же проблема, и я решил так:

В разделе Сервер выберите Сервер базы данных MySQL. Перейдите в раздел Конфигурация модуля (вверху слева) и выберите Выполнять подстановку резервных копий в режиме strftime? на Да.

Я использую формат db_%d-%m-%Y.sql для резервного копирования. (db_13-03-2013.sql)

person Христијан С.    schedule 13.03.2013

Вы можете сделать это следующим образом

Webmin> Сервер базы данных MySQL> выберите базу данных> Резервная база данных> путь к файлу в другом параметре резервного копирования, который вы можете использовать> Команда для запуска после резервного копирования Введите ======> путь к файлу mv/имя файла путь к файлу/имя файла_date +"%Y%m%d%H%M%S".sql

person karan    schedule 25.09.2019