如何自动将所有mysql数据库备份到sql语句中?

i n*_*elp 16 mysql database backup

MySQL管理员>备份项目.它是一个很棒的工具,允许您选择数据库并安排它.

不过我的问题是:

今天有一些新的网站(新的数据库创建)明天又有了一些新的网站(创建了新的数据库)

在这种情况下,我必须始终进入备份项目>选择那些不在备份列表中的剩余架构...

如何使其自动检查任何新数据库并包含在备份计划列表中?

换句话说,如何自动备份所有mysql数据库(这样我们就不必担心每天创建新数据库).

有什么方法可以实现吗?

我正在使用Windows 2008服务器,它不友好.

gah*_*ooa 31

到目前为止发布的三个答案的问题是它们无法使您有选择地还原数据库.除了灾难之外,这可能是一个真正的问题.

理想情况下,您应该每天备份一些历史记录.它应该是bulletproof(--force),它应该是logged(>> ...log),它应该是compressed(| gzip),它应该保留每个数据库的单独副本,并且它应该自动获取任何添加的数据库.

考虑一下这样的shell脚本:

#!/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
Run Code Online (Sandbox Code Playgroud)

假设您有一个文件~/.my.cnf(chmod 600),它具有:

[client]
user = "BACKUP"
password = "SOMEPASS8342783492"
Run Code Online (Sandbox Code Playgroud)

确保您使用的任何用户BACKUP都有此授权声明:

GRANT 
  SELECT, SHOW VIEW ON *.* 
  TO BACKUP@localhost 
  IDENTIFIED BY 'SOMEPASS8342783492';
Run Code Online (Sandbox Code Playgroud)

因此,只需将其添加到夜间cronjob中,您就可以每周7天轮换一次.

0 3 * * *   backup-mysql >> backup-mysql.log 2>> backup-mysql.log
Run Code Online (Sandbox Code Playgroud)

然后备份目录包含:

-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
Run Code Online (Sandbox Code Playgroud)


Sam*_*son 18

MySQL管理员

使用MySQL Administrator,您需要手动将数据库添加到备份中.

mysqldump和--all-databases

如果通过dump-command处理此问题,则可以使用该--all-databases选项将所有数据库包含到转储中.

  • 这种方法很简单,但会将所有数据库备份整合到一个文件中.这是一个[小脚本](https://github.com/quickshiftin/mysqlbkup),它为每个数据库创建一个单独的文件. (3认同)

Dan*_*erz 13

mysqldump -u <username> -p<password> --all-databases > database_backup.sql
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用<a rel="nofollow noreferrer" href="http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html#option_mysql_one-database"> --one-database <有选择地还原数据库/ a>选项. (10认同)