首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql表的明智备份和恢复

问MySql表的明智备份和恢复
EN

Stack Overflow用户
提问于 2013-03-09 10:39:31
回答 1查看 1.7K关注 0票数 0

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

表智能备份方法

创建一个带有Dateandtime和Direc堆的目录将有一个包含所有数据库及其表名的定义文本文件,以及每个表内容、表结构和表插入的单独文件。

表智能恢复方法

读取目录和定义文件来排序有关日期和表名的备份,用户可以选择所有表或要还原的特定表。

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

问题

上面的备份和恢复方法是否有效?

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

3.对于这类申请,我必须紧记哪些要点?

如果有什么不清楚的地方请告诉我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-09 15:37:05

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

代码语言:javascript
复制
#!/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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15309767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档