MySql灾难大营救【3】,定时备份数据库和恢复脚本

作为一个DBA,日常备份数据库,是必不可少的,不会不要紧,以下脚本让你高枕无忧,轻松入门!

自动备份的脚本
 

###变量相关
data="zabbix"
user="root"
pwd="Zabbix@123"
backuppath="/winshare/backup"
###变量相关
sql="
SELECT
	table_schema AS '数据库',
	sum( table_rows ) AS '记录数',
	sum( TRUNCATE ( data_length / 1024 / 1024, 2 ) ) AS '数据容量(MB)',
	sum( TRUNCATE ( index_length / 1024 / 1024, 2 ) ) AS '索引容量(MB)' 
FROM
	information_schema.TABLES WHERE table_schema='${data}'
GROUP BY
	table_schema 
ORDER BY
	sum( data_length ) DESC,
	sum( index_length ) DESC;
"
datasize=`mysql -u"${user}" -p"${pwd}" -e "${sql}" -N|awk '{print $3"+"$4}'|bc`

#mysqladmin -uroot -pZabbix@123 processlist 显示当前进程
#mysqlshow -uroot -pZabbix@123 ${data} --count 统计数据
if [[ -z $datasize ]]; then
	echo "找不到数据库"
	exit
fi
echo "数据库${data}共${datasize}M"
#开启mysql 日志
#mysql -uroot -pZabbix@123 -e "set global general_log=on;show global variables like '%general%';"
mysql -u"${user}" -p"${pwd}" -e "${sql}"
des="${backuppath}/$(date +%F)"
if [[ ! -d $des ]];then
mkdir -p $des
fi
if [[ $? -ne 0 ]]; then
echo "${backuppath}该备份路径无法访问"	
fi
mysqldump  -u"${user}" -p"${pwd}" "${data}" -B > "$des/$data.sql"

脚本里的设置

data="zabbix" ###这里设置你要备份的数据库
user="root" ###这里设置你的mysql用户名
pwd="Zabbix@123" ###这里设置你的用户密码
backuppath="/winshare/backup" ###这里设置你要备份的路径!

以上是备份的自动脚本,接下来我们设置按计划明天自动备份,先上配置文件schtasks.ini
[Interval time]
minute=
hour=13,23
day=1-30
month=
week=
[task]
command= sh /root/下载/mysql/mysqldatabackup.sh

以上的内容是每个月的1到30号在13:00,23:00自动备份 
执行的备份命令路径是 
sh /root/下载/mysql/mysqldatabackup.sh

建立计划的shell代码如下
 

#读取配置文件
array=("minute" "hour" "day" "month" "week")
plan=""
for (( i = 0; i < ${#array[@]}; i++ )); do
times[$i]=$(cat ./schtasks.ini|grep -Po "(?<=${array[$i]}\=).*")
	if [[ ! -z ${times[$i]} ]]; then
		plan+=" "${times[$i]}
	else
		plan+=' n'
	fi		
done
cmd=`cat ./schtasks.ini|grep -Po "(?<=command\=).*"`
# 先备份以前的计划
crontab -l|grep -v "${cmd}" >plan$

echo ${plan}|tr -t [n] [\*]|xargs -i echo {} $cmd >>plan$
crontab plan$
crontab -l

恢复数据库的脚本如下

###变量相关
data="zabbix"
user="root"
pwd="Zabbix@123"
backupfile="/winshare/backup/2024-08-11/zabbix.sql"
###变量相关
if [[ ! -e ${backupfile} ]]; then
	echo "不存在该恢复文件$backupfile"
	exit	
fi
chmod 777 $backupfile
mysqldump  -u"${user}" -p"${pwd}" "${data}" < "${backupfile}"
#mysql -uroot -p'Zabbix@123' < ./mytest.sql 

其中代码

data="zabbix"   ###这里设置你要恢复的数据库
user="root"  ###这里设置你的mysql用户名
pwd="Zabbix@123" ###这里设置你的用户密码
backupfile="/winshare/backup/2024-08-11/zabbix.sql"   ###这里设置你的备份文件路径!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyfsky666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值