学习笔记080——如何备份服务器中Docker创建的MySQL数据库数据?

背景:

需要定期备份Ubuntu服务器中,MySQL数据库的数据。

但是我服务器中的MySQL不是传统的安装的,而是在Docker中的。

解决:

通过编写sh脚本,通过系统中的crontab来定时执;实现定时备份。

脚本内容:

sh 复制代码
#用户名
mysql_user="root"
#密码
mysql_password="ys_nj_sst!"
#ip
mysql_host="192.168.2.200"
#端口号 
mysql_port="33064"
#将要备份的数据库
database_name="sx_lt_wmg"
#docker中mysql的容器名
mysql_container_id="485d9030fbf4"
#编码格式
mysql_charset="utf8"
#保存备份文件最多个数
count=3
#备份保存路径
backup_path=/home/ys/bakup
#日期
date_time=`date +%Y-%m-%d-%H-%M`

#如果文件夹不存在则创建
if [ ! -d $backup_path ]; 
then     
    mkdir -p $backup_path; 
fi
#查看MySQL是否在运行
mysql_ps=`ps -ef |grep mysql |wc -l` 
echo "查看MySQL是否在运行:$mysql_ps" >> $backup_path/dump.log
mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
        echo "ERROR:MySQL is not running! backup stop!" >> $backup_path/dump.log
        exit
else
        echo "Welcome to use MySQL backup tools!" >> $backup_path/dump.log

echo "MySQL connect ok! Please wait......" >> $backup_path/dump.log
fi
#开始备份
echo "开始备份..." >> $backup_path/dump.log
docker exec $mysql_container_id /usr/bin/mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $database_name --default-character-set=$mysql_charset > $backup_path/$database_name-$date_time.sql


#开始压缩
cd $backup_path
tar -zcvf $database_name-$date_time.tar.gz $database_name-$date_time.sql
#更新备份日志
echo "压缩原文件 create $backup_path/$database_name-$date_time.tar.gz" >> $backup_path/dump.log

#删除源文件
rm -rf $backup_path/$database_name-$date_time.sql

echo "压缩后删除原文件 delete $backup_path/$database_name-$date_time.sql" >> $backup_path/dump.log

#找出需要删除的备份
delfile=`ls -l -crt  $backup_path/*.tar.gz | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于阈值
number=`ls -l -crt  $backup_path/*.tar.gz | awk '{print $9 }' | wc -l`

if [ $number -gt $count ]
then
  #删除最早生成的备份,只保留count数量的备份
  rm $delfile
  #更新删除文件日志
  echo "$date 删除 $count 前的文件 delete $delfile" >> $backup_path/dump.log
fi

crontab内容:

bash 复制代码
# 频率 sh 脚本路径
# 例如:每天执行一次 backup_mysql.sh 备份脚本
0 0 * * * sh /opt/backup_mysql.sh

🆗完成~

相关推荐
点心的游戏开发世界5 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
摇滚侠5 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 32
spring boot·笔记·后端
sunshine22 girl6 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
袋鼠云数栈6 小时前
实时湖仓如何真正做到“数据够新”?
大数据·数据库·人工智能·数据治理
ACP广源盛139246256737 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
鱼子星_7 小时前
【C++】继承和多态(上)
c++·笔记
Kobebryant-Manba7 小时前
学习Bert微调
人工智能·学习·bert
ACP广源盛139246256737 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
xian_wwq7 小时前
【学习笔记】深度认知系列-第14讲 端侧AI崛起——为什么AI正在从云端走向本地
人工智能·笔记·学习
我爱cope8 小时前
【计算机网络 | 传输层3:TCP 协议概述:面向连接、可靠传输到底意味着什么?】
网络·网络协议·学习·tcp/ip·计算机网络·传输层