1.备份数据主要使用dump命令,格式为
mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"_"$time.sql"
-p 和 $db_passwd之间没有空格,不然$db_passwd会被当做参数[数据库名]来解析
2.写成脚本
使用chmod +x修改全限
3.使用crontab来启用定时任务
crontab -e 或者 cat /etc/crontab
格式为: 分钟 小时 *** ./test.sh
脚本示例
#!/bin/bash
#[username] [password] [database name] [backup path]
db_user=$1
db_passwd=$2
db_name=$3
backup_dir=$4
paramnum=$#
time=`date "+%Y-%m-%d-%H:%M:%S"`
minparam=0;
maxparam=4
if [ $paramnum == $minparam ]
then
db_user="***"
db_passwd="***"
db_name="***"
backup_dir="/usr/backup/mysql"
echo "using default param,and begin backup"
else
if [ $paramnum == $maxparam ]
then
echo "params is right,begin backup"
else
echo "params error:required [username] [password] [database name] [backup path]"
exit
fi
fi
#backup path
db_path="$backup_dir/$db_name"
if [ ! -d $db_path ]
then
mkdir -p $db_path
fi
#do backup
db_file="$db_path/""$time.sql"
mysqldump -u$db_user -p$db_passwd $db_name > $db_file
#log
log_file="$backup_dir""/backup.log"
if [ -e $db_file ] && [ -s $db_file ]
then
echo "$time success" >> $log_file
else
echo "$time fail database:$db_name" >> $log_file
fi
附:
备份:mysqldump
备份MySQL数据库的命令
mysqldump -h主机名 -u用户名 -p密码 数据库名字 > 备份的数据库名字.sql
例子: mysqldump -uroot -pjsb backup > backup.sql
直接将MySQL数据库压缩备份
mysqldump -h主机名 -u用户名 -p密码 数据库名字 | gzip >备份的数据库名字.sql.gz
备份MySQL数据库某个(些)表
mysqldump -h主机名 -u用户名 -p密码 数据库名字 数据库表名1 数据库其他表名2 > 备份数据库名字.sql
同时备份多个MySQL数据库
mysqldump -h主机名 -u用户名 -p密码 --databases 需要备份的数据库名字1 需要备份的数据库名字2 > 备份数据库名字.sql
注意: --databases 是 -- 、 需要备份的数据库名字1 需要备份的数据库名字2 中间是空格。
仅仅备份数据库结构
mysqldump --no-data -h主机名 -u用户名 -p密码 --databases 需要备份的数据库名字1 需要备份的数据库名字2 > 备份数据库名字.sql
注意:--no-data 是 -- 、 需要备份的数据库名字1 需要备份的数据库名字2 中间是空格。
备份服务器上所有数据库
mysqldump --all-databases -h主机名 -u用户名 -p密码 > 备份数据库名字.sql
还原:mysql
还原MySQL数据库的命令
mysql -h主机名 -u用户名 -p密码 需要恢复的数据库名字 < 已备份的数据库名字(见上).sql
例子:mysql -uroot -pjsb bk < bk.sql
注意:需要回复的数据库名字,必须保证在需要恢复的数据库主机上面有个空库或者库名。
还原压缩的MySQL数据库
gunzip < 刚开始备份集中的数据库名字.sql.gz | mysql -u用户名字 -p用户密码 需要恢复的数据库名字
将数据库转移到新服务器
mysqldump备份 -u账号 -p密码 需要恢复的数据库名字 |mysql还原 –host=192.168.199.100 -C 需要恢复的数据库名字
注意:执行上面这条命令之前,需要先在被还原机器上,授权。