Shell–案例–04–mysql数据库备份和还原

Shell–案例–04–mysql数据库备份和还原


1、自动备份数据库

1.1、脚本

#创建目录
mkdir -p /data/mysql/dbback/

cd /data/mysql/dbback/
vim  backup.sh

内容





#!/bin/bash
 
#保存备份个数,备份10个数据
number=10

#备份保存路径
backup_dir=/data/mysql/dbback

#日志目录
log_dir=$backup_dir/log/


#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=/data/mysql/install/bin/mysqldump

#将要备份的数据库
database_name1=test
database_name2=test2
# 备份文件名称
backFile_name=database-$dd.sql
#用户名
username=root
#密码
password=1234

# 数据库IP和端口
db_ip=127.0.0.1
db_port=3307

# mysql.sock目录
sock_dir=/data/mysql/tmp/mysql.sock
#如果文件夹不存在则创建
if [ ! -d $log_dir ]; 
then     
    mkdir -p $log_dir; 
fi
 
#简单备份写法
$tool -h${db_ip}  -P${db_port}  -u$username -p$password -S $sock_dir --set-gtid-purged=OFF --add-drop-database --compact --databases $database_name1 $database_name2 > $backup_dir/$backFile_name
 
#写创建备份日志
echo "create $backup_dir/$backFile_name" >> $log_dir/back_log.txt
 
#找出需要删除的备份
delfile=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | head -1`
 
#判断现在的备份数量是否大于$number
count=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | wc -l`
 
if [ $count -gt $number ]
then
  # 删除最早生成的备份,只保留number数量的备份
  rm $delfile
  # 写删除文件日志
  echo "delete $delfile" >> $log_dir/back_log.txt
fi


1.2、授权

cd /data/mysql/dbback/
chmod  +x backup.sh 
 

1.3、测试

/data/mysql/dbback/backup.sh &

1.4、设置定时任务

crontab -e

内容

0 1 * * * /data/mysql/dbback/backup.sh

每天晚上1点调用

2、还原脚本

2.1、脚本

cd /data/mysql/dbback/
vim  recover.sh

内容


#!/bin/bash
 
#备份保存路径
backup_dir=/data/mysql/dbback/
 
#日志目录
log_dir=$backup_dir/log/



# 备份文件名称
backFile_name=$1

#还原工具
tool=/data/mysql/install/bin/data/mysql/install/bin/mysql
#用户名
username=root
#密码
password=1234

# mysql.sock目录
sock_dir=/data/mysql/tmp/mysql.sock

# 数据库IP和端口
db_ip=127.0.0.1
db_port=3307

 
# 检测文件(包括目录)是否存在,如果是,则返回 true。
if [ -e $backup_dir/$backFile_name ]
then 
   mysql -h${db_ip}  -P${db_port}  -u$username -p$password -S $sock_dir  < $backup_dir/$backFile_name
   echo "恢复数据库成功 $backup_dir/$backFile_name" >> $log_dir/recover_log.txt
else
   echo "文件不存在 $backup_dir/$backFile_name" >> $log_dir/recover_log.txt
fi






2.2、授权

cd /data/mysql/dbback/
chmod  +x recover.sh 
 

2.3、测试

cd /data/mysql/dbback/
./recover.sh database-2022-09-01-15-54-32.sql  &


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值