我正在研究Mysql数据备份和恢复系统,但坚持认为如何使用它。 我可以想到的选项
表明智能备份方法
创建目录使用Dateandtime和directoy将有一个定义文本文件,其中包含所有数据库及其表名以及每个表的表格结构和表INSERTS的单独文件。
表明智能还原方法
读取目录和定义文件以对日期和表名进行排序,用户可以选择要还原的所有表或一个特定表。
我将使用PHP来实现此目的,因为我必须在不同的服务器上自动上传这些备份文件。
问题
1-以上备份和恢复方法是否有效?
2-有没有办法为每个数据库编写单个文件,但仍然有办法只恢复数据库中的选定或所有表?
3-对于此类申请,我必须记住哪些要点?
如果有什么暧昧请告诉我?
答案 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