Чтобы повторить то, что говорили другие, аргументы являются необязательными.
Если вы не укажете необязательные части, остальные fieldnames=
, restval=
, restkey=
или dialect=
ключевые слова скажут функция, части которой отсутствуют.
Синтаксис не предлагает этого, но я не удивлюсь, если ключевые слова позволяют конкретизировать аргументы в любом порядке, за исключением того, что последние два аргумента должны быть либо оба указанных или оба опущены.
С помощью MySQL Administrator необходимо вручную добавлять базы данных в резервную копию.
Если подойти к этому вопросу с помощью команды dump-command, то можно воспользоваться опцией --all-databases
для включения всех баз данных в дамп.
Проблема с размещенными на данный момент тремя ответами заключается в том, что они не позволяют выборочно восстанавливать базы данных. Это может быть реальной проблемой во всех случаях, кроме катастрофы.
В идеале, у вас должна быть ежедневная резервная копия, с некоторой историей. Она должна быть пуленепробиваемой (-форс
), записываться в журнал (>> ...log
), сжиматься (| gzip
), хранить отдельные копии каждой базы данных, а также автоматически подбирать все добавляемые базы данных.
Рассмотрим, скорее, скрипт оболочки, подобный этому:
#!/bin/bash
Host=server.domain.com
BDir=/home/backup/backup/mysql
Dump="/usr/bin/mysqldump --skip-extended-insert --force"
MySQL=/usr/bin/mysql
Today=$(date "+%a")
# Get a list of all databases
Databases=$(echo "SHOW DATABASES" | $MySQL -h $Host)
for db in $Databases; do
date=`date`
file="$BDir/$Host-$db-$Today.sql.gz"
echo "Backing up '$db' from '$Host' on '$date' to: "
echo " $file"
$Dump -h $Host $db | gzip > $file
done
Который предполагает, что у вас есть файл ~/. my.cnf
(chmod 600), который имеет:
[client]
user = "BACKUP"
password = "SOMEPASS8342783492"
Убедитесь, что любой пользователь, которого вы используете для BACKUP
, имеет следующее утверждение:
GRANT
SELECT, SHOW VIEW ON *.*
TO BACKUP@localhost
IDENTIFIED BY 'SOMEPASS8342783492';
Так что просто добавьте это к ночному cronjob, и у вас будет ежедневная резервная копия, которая будет вращаться каждые 7 дней в неделю.
0 3 * * * backup-mysql >> backup-mysql.log 2>> backup-mysql.log
Каталог резервных копий затем содержит:
-rw-r--r-- 1 backup backup 2217482184 Sep 3 13:35 base.appcove.net-VOS4_0-20090903.sql.gz
-rw-rw-r-- 1 backup backup 2505876287 Dec 25 00:48 base.appcove.net-VOS4_0-Fri.sql.gz
-rw-r--r-- 1 backup backup 2500384029 Dec 21 00:48 base.appcove.net-VOS4_0-Mon.sql.gz
-rw-r--r-- 1 backup backup 2506849331 Dec 26 00:48 base.appcove.net-VOS4_0-Sat.sql.gz
-rw-r--r-- 1 backup backup 2499859469 Dec 20 00:48 base.appcove.net-VOS4_0-Sun.sql.gz
-rw-rw-r-- 1 backup backup 2505046147 Dec 24 00:48 base.appcove.net-VOS4_0-Thu.sql.gz
-rw-rw-r-- 1 backup backup 2502277743 Dec 22 00:48 base.appcove.net-VOS4_0-Tue.sql.gz
-rw-r--r-- 1 backup backup 2504169910 Dec 23 00:48 base.appcove.net-VOS4_0-Wed.sql.gz
-rw-r--r-- 1 backup backup 76983829 Dec 25 00:49 base.appcove.net-VOS4_Mail_0-Fri.sql.gz
-rw-r--r-- 1 backup backup 76983829 Dec 21 00:49 base.appcove.net-VOS4_Mail_0-Mon.sql.gz
-rw-r--r-- 1 backup backup 76983829 Dec 26 00:49 base.appcove.net-VOS4_Mail_0-Sat.sql.gz
-rw-r--r-- 1 backup backup 76983829 Dec 20 00:48 base.appcove.net-VOS4_Mail_0-Sun.sql.gz
-rw-rw-r-- 1 backup backup 76983829 Dec 24 00:49 base.appcove.net-VOS4_Mail_0-Thu.sql.gz
-rw-rw-r-- 1 backup backup 76983829 Dec 22 00:49 base.appcove.net-VOS4_Mail_0-Tue.sql.gz
-rw-r--r-- 1 backup backup 76983829 Dec 23 00:49 base.appcove.net-VOS4_Mail_0-Wed.sql.gz
-rw-r--r-- 1 backup backup 304803726 Dec 25 00:49 base.appcove.net-WeSell_0-Fri.sql.gz
-rw-r--r-- 1 backup backup 303480087 Dec 21 00:49 base.appcove.net-WeSell_0-Mon.sql.gz
-rw-r--r-- 1 backup backup 304710121 Dec 26 00:49 base.appcove.net-WeSell_0-Sat.sql.gz
-rw-r--r-- 1 backup backup 303791294 Dec 20 00:49 base.appcove.net-WeSell_0-Sun.sql.gz
-rw-rw-r-- 1 backup backup 305315415 Dec 24 00:49 base.appcove.net-WeSell_0-Thu.sql.gz
-rw-rw-r-- 1 backup backup 302516217 Dec 22 00:49 base.appcove.net-WeSell_0-Tue.sql.gz
-rw-r--r-- 1 backup backup 303314217 Dec 23 00:49 base.appcove.net-WeSell_0-Wed.sql.gz
-rw-r--r-- 1 backup backup 135301 Dec 25 00:30 dc40.appcove.net-mysql-Fri.sql.gz
-rw-r--r-- 1 backup backup 135301 Dec 21 00:30 dc40.appcove.net-mysql-Mon.sql.gz
-rw-r--r-- 1 backup backup 135301 Dec 26 00:30 dc40.appcove.net-mysql-Sat.sql.gz
-rw-r--r-- 1 backup backup 135301 Dec 20 00:30 dc40.appcove.net-mysql-Sun.sql.gz
-rw-rw-r-- 1 backup backup 135301 Dec 24 00:30 dc40.appcove.net-mysql-Thu.sql.gz
-rw-rw-r-- 1 backup backup 135301 Dec 22 00:30 dc40.appcove.net-mysql-Tue.sql.gz
-rw-r--r-- 1 backup backup 135301 Dec 23 00:30 dc40.appcove.net-mysql-Wed.sql.gz
mysqldump -u <username> -p<password> --all-databases > database_backup.sql
Я использую http://sourceforge.net/projects/automysqlbackup/ для резервного копирования моих баз данных MySQL уже пару лет и это очень хорошо сработало для меня. Вот описание со страницы sourceforge:
Скрипт, чтобы взять ежедневно, еженедельно и ежемесячные резервные копии вашего MySQL базы данных с использованием mysqldump. Особенности - Резервное копирование мутиповых баз данных - Одиночный резервная копия файла или в отдельный файл для каждая БД - Сжатые резервные файлы - Резервное копирование удаленных серверов - Журналы электронной почты - Больше...
Вы можете настроить скрипт на резервное копирование всех баз данных, чтобы вам не приходилось менять скрипт при добавлении новых dbs. Вы также можете указать, какие dbs исключить, если у вас есть база данных или две, которые вы по каким-то причинам не хотите выполнять резервное копирование.
Это хорошо задокументировано, и есть множество опций, которые вы можете задать, чтобы удовлетворить большинство базовых потребностей в резервном копировании db. Поскольку это одиночный бэш-скрипт, его также легко модифицировать/откорректировать, если что-то не совсем так, как вы хотите.