MySql表明备份和还原

时间:2013-03-09 10:39:31

标签: php mysql backup

我正在研究Mysql数据备份和恢复系统,但坚持认为如何使用它。 我可以想到的选项

表明智能备份方法

创建目录使用Dateandtime和directoy将有一个定义文本文件,其中包含所有数据库及其表名以及每个表的表格结构和表INSERTS的单独文件。

表明智能还原方法

读取目录和定义文件以对日期和表名进行排序,用户可以选择要还原的所有表或一个特定表。

我将使用PHP来实现此目的,因为我必须在不同的服务器上自动上传这些备份文件。

问题

1-以上备份和恢复方法是否有效?

2-有没有办法为每个数据库编写单个文件,但仍然有办法只恢复数据库中的选定或所有表?

3-对于此类申请,我必须记住哪些要点?

如果有什么暧昧请告诉我?

1 个答案:

答案 0 :(得分:0)

使用简单的shell脚本尝试mysqldump。它可以扩展到转储表。它现在只转储数据库。

#!/bin/bash

USER="username"
PASSWORD="password"
OUTPUTDIR="./"
MYSQLDUMP=`which mysqldump`
MYSQL=`which mysql`

# get a list of databases
databases=`$MYSQL --user=$USER --password=$PASSWORD \
 -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

# dump each database in turn
for db in $databases; do

    # skip internal databases
    if [ "$db" == "information_schema" ] || [ "$db" == "mysql" ]; then
        continue
    fi  

    # dump whole database 
    echo "$db"
    $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD \
    --databases $db > "$OUTPUTDIR/$db.sql.bak"

    # get a list of tables inside database
    tables=`$MYSQL --user=$USER --password=$PASSWORD \
     -e "USE $db;SHOW TABLES;" | tr -d "| " | grep -v Tables_in_$db`

    # dump tables
    for tbl in $tables; do
        echo "$db.$tbl"
        $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD \
         $db $tbl> "$OUTPUTDIR/$db.$tbl.sql.bak"
    done
done