linux mysql backup(数据库备份)

参考文章:

https://www.jb51.net/article/222493.htm
https://blog.csdn.net/weixin_43757027/article/details/125196989
 

我的应用场景:

linux服务器+docker mysql容器运行,目标备份mysql数据库到linux本地。

注意:docker在运行容器时,需要将数据备份目录挂载到linux本地。

应用技术:

mysqldump脚本+crontab定时任务

不多说了直接上代码

创建文件夹

mkdir -p /root/mysql_backup_script

新建.sh脚本

cd /root/mysql_backup_script

touch mysqldump_dev.sh

给指定 .sh 脚本添加执行权限

chmod u+x mysqldump_dev.sh

编写sh脚本

  • 编辑文件

vi mysqldump_dev.sh

  • 编写脚本命令

#!/bin/bash
#保存备份个数
number=5
#容器内备份保存路径
container_backup_dir=/root/mysql_backup
#本地备份保存路径
backup_dir=/root/mysql_backup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=123456
#将要备份的数据库
database_name=db_test
#mysql容器id
container_id=0e470d3f0a33

#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then    
    mkdir -p $backup_dir;
fi

#当前生成的sql备份文件路径
currBackupSqlFile=$database_name-$dd.sql
# 进入容器并备份数据库
docker exec -i $container_id bash -c "
  #如果文件夹不存在则创建
  if [ ! -d $container_backup_dir ];
  then    
      mkdir -p $container_backup_dir;
  fi
  $tool -u $username -p$password $database_name > $container_backup_dir/$currBackupSqlFile;
"
#写创建备份日志
echo "create $backup_dir/$currBackupSqlFile  date=$dd" >> $backup_dir/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  date=$dd" >> $backup_dir/log.txt
fi
  • 保存退出:wq

  • 注意:sh脚本文件中需要注意变量的值。 尤其注意mysql容器ID,如果mysql容器删除后重建则需要调整sh文件mysql容器ID

    • container_id

    • database_name

    • username

    • password

新增crontab定时

  • 进入文件目录

        /var/spool/cron

  • 编辑

        crontab -e

  • 定时任务命令

        */5 * * * * /root/mysql_backup_script/mysqldump_dev.sh >> /root/mysql_backup_script/mysqldump_dev.log 2>&1 &

        即五分钟执行一次.sh文件,并保存日志文件

  • 保存退出:wq

到此功能就完了

额外简单使用:crontab

crontab命令的功能是在一定的时间间隔调度一些命令的执行

说明

crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建
 
crontab –l : 显示 crontab 文件
 
crontab -r : 删除 crontab 文件
 
crontab -ir :删除 crontab 文件前提醒用户

crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

分  时  日  月  周    [用户]  command

例如:
# 每5分钟运行一次命令
*/5 * * * * /root/bin/check-status.sh 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值