Как автоматически сделать резервную копию ВСЕ базы данных mysql в оператор SQL?

Чтобы повторить то, что говорили другие, аргументы являются необязательными.

Если вы не укажете необязательные части, остальные fieldnames=, restval=, restkey= или dialect= ключевые слова скажут функция, части которой отсутствуют.

Синтаксис не предлагает этого, но я не удивлюсь, если ключевые слова позволяют конкретизировать аргументы в любом порядке, за исключением того, что последние два аргумента должны быть либо оба указанных или оба опущены.

16
задан i need help 26 December 2009 в 18:40
поделиться

5 ответов

MySQL Administrator

С помощью MySQL Administrator необходимо вручную добавлять базы данных в резервную копию.

mysqldump и --all-databases

Если подойти к этому вопросу с помощью команды dump-command, то можно воспользоваться опцией --all-databases для включения всех баз данных в дамп.

.
18
ответ дан 30 November 2019 в 15:11
поделиться

Проблема с размещенными на данный момент тремя ответами заключается в том, что они не позволяют выборочно восстанавливать базы данных. Это может быть реальной проблемой во всех случаях, кроме катастрофы.

В идеале, у вас должна быть ежедневная резервная копия, с некоторой историей. Она должна быть пуленепробиваемой (-форс), записываться в журнал (>> ...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
31
ответ дан 30 November 2019 в 15:11
поделиться
..
mysqldump -u <username> -p<password> --all-databases > database_backup.sql
13
ответ дан 30 November 2019 в 15:11
поделиться

Попробуйте использовать

mysqldump --all-databases
2
ответ дан 30 November 2019 в 15:11
поделиться

Я использую http://sourceforge.net/projects/automysqlbackup/ для резервного копирования моих баз данных MySQL уже пару лет и это очень хорошо сработало для меня. Вот описание со страницы sourceforge:

Скрипт, чтобы взять ежедневно, еженедельно и ежемесячные резервные копии вашего MySQL базы данных с использованием mysqldump. Особенности - Резервное копирование мутиповых баз данных - Одиночный резервная копия файла или в отдельный файл для каждая БД - Сжатые резервные файлы - Резервное копирование удаленных серверов - Журналы электронной почты - Больше...

Вы можете настроить скрипт на резервное копирование всех баз данных, чтобы вам не приходилось менять скрипт при добавлении новых dbs. Вы также можете указать, какие dbs исключить, если у вас есть база данных или две, которые вы по каким-то причинам не хотите выполнять резервное копирование.

Это хорошо задокументировано, и есть множество опций, которые вы можете задать, чтобы удовлетворить большинство базовых потребностей в резервном копировании db. Поскольку это одиночный бэш-скрипт, его также легко модифицировать/откорректировать, если что-то не совсем так, как вы хотите.

3
ответ дан 30 November 2019 в 15:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: