Linux 数据库备份与恢复

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 需要恢复的数据库名字
注意:执行上面这条命令之前,需要先在被还原机器上,授权。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值