mysql数据定时备份

前言

日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生。但是,如果每次删库都跑路的话,怕是再也不好找工作了吧!所以,删库跑路不是上上策。

数据恢复的前提的做好备份,且开启 binlog,格式为 row。如果没有备份文件,那么删掉库表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件。但若刚好数据库没有打开这个表文件,那就只能跑路了。如果没有开启 binlog,那么恢复数据后,从备份时间点开始的数据都没了。如果 binlog 格式不为 row,那么在误操作数据后就没有办法做闪回操作,只能老老实实地走备份恢复流程。

数据库备份

计划任务:

crontab -e 
0 1 * * * /bin/bash /data/backup.sh #每天晚上1点备份

备份脚本:/data/backup.sh

#!/bin/sh
#description : dump mysql 10.64.35.118 databases to 10.64.35.144:/extArray1/OTS_DB_BACKUP/

myuser='root' # 用户名
mypass='123456' # 密码
socket='/data/public/mysql/sock/118.sock' # sock文件
mycmd="/data/public/mysql/bin/mysql -u$myuser -p$mypass -S $socket" # mysql登录命令
mydump="/data/public/mysql/bin/mysqldump -u$myuser -p$mypass -S $socket" #mysqldump 备份命令
destDir="/data/backup/database/$(date +%F)" # 备份目录
mkdir -p $destDir

for database in `$mycmd -e "show databases;"|sed '1,2d'|egrep -v "mysql|schema|sys"`
do
echo $database
for table in `$mycmd -e "show tables from $database;"|sed '1d'`
do
echo $table
# 按表备份 所有表
$mydump $database $table > $destDir/mysqlbak_"$database"_"$table"_$(date +%F).sql
done
# 按库备份 所有库
$mydump -B $database | gzip > $destDir/mysqlbak_"$database"_$(date +%F).sql.gz
done
#备份到远程服务器
cp -r $destDir  /backup/database/idaas/
#gzip /backup/database/idaas/

#清理7天前的数据
#clearFileDate='date -d '8 day ago'  +%F'
#rm -f /backup/database/idaas/mysqlbak_*$clearFileDate*.sql

CSDN_码404:mysql数据定时备份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

leenhem

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

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

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

打赏作者

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

抵扣说明:

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

余额充值