mysql备份所有数据库

#!/bin/bash
MYSQL_CLIENT=”/home/mysql/bin/mysql -uroot –default-character-set=gbk”
MYSQL_DUMP=”/home/mysql/bin/mysqldump -d -uroot –default-character-set=gbk”
OUTPUT_PATH=/data/backup
for databases in `$MYSQL_CLIENT -e “show databases”|grep -v Database`
do
        mkdir -p -m777 $OUTPUT_PATH/$databases/
        $MYSQL_DUMP $databases > $OUTPUT_PATH/$databases/$databases.sql
        for tables in `$MYSQL_CLIENT -e “show tables” $databases|grep -v Tables_in_`
        do
                mv -f $OUTPUT_PATH/$databases/$tables $OUTPUT_PATH/$databases/$tables.old
                $MYSQL_CLIENT -e “select * into outfile ‘$OUTPUT_PATH/$databases/$tables’ from $tables” $databases
        done
done

 

 

原理就是遍历所有库的所有表,在备份目录里面,再为每个库建立一个目录,包含一个建库语句,和每个表的数据文件,然后可以用load data infile 来导入到数据库里面。这种导法很快的。
我这里还没用gzip对数据文件进行压缩,大家可以继续完善。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

7 + 2 =