0

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

表明智的备份方法

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

表明智的恢复方法

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

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

问题

1-以上备份和还原方法是否有效?

2-有没有一种方法可以为每个数据库编写单个文件,但仍然有某种方法可以仅恢复数据库中选定的表或所有表?

3- 对于此类应用程序,我必须牢记哪些要点?

请让我知道是否有任何歧义?

4

1 回答 1

4

用一个简单的 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
于 2013-03-09T15:37:05.603 回答