docker定时备份mysql-定时备份docker中mysql的数据

article/2025/10/6 1:53:52

一、概念

方法一:备份是通过如下命令实现

docker exec -it mysql(镜像号) mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -B test1(数据库名称)(中间是有一个空格的)> $backup_dir/mysql_backup_test-$backup_time.sql
# 如果需要压缩
docker exec 301520ed7b07 mysqldump -uroot -p123456 leyeoa | gzip > ${backup_dir}/leyeoa_${backup_time}.sql.gz
# 解压gz压缩包
gzip -d FileName.gz

参考:http://t.zoukankan.com/Hello-TomCat-p-13231783.html

方法二:或者进入容器执行

#获取容器id
mysqlid=`/usr/local/bin/docker ps -aqf "name=mysql5.7"`#进入mysql容器
/usr/local/bin/docker exec -i ${mysqlid} bash<<'EOF'
# 执行备份
mysqldump --single-transaction -u root -h 127.0.0.1 --password=123456 --all-databases > /backup/db.sql
#将容器内sql文件导出到服务器
docker cp ${mysqlid}:/backup/db.sql ${backup_dir}/db_${now}.sql

参考:https://www.cnblogs.com/wangtaobiu/p/15624238.html

二、实现

1、新建脚本

cd /usr/local/mysql
touch mysql_backup_edevp-nacos.sh
vim mysql_backup_edevp-nacos.sh

输入以下内容

#!/bin/bash# 定义工作路径
BASE_DIR=/usr/local/mysql# 备份文件存放地址(根据实际情况填写)
backup_location=$BASE_DIR/backup
echo "$(date "+%Y-%m-%d %H:%M:%S") 备份路径:$backup_location"# 判断路径是否存在
if [ ! -d "$backup_location" ]; thenmkdir -p $backup_location
fi# 设置mysql的登录用户名和密码(根据实际情况填写)
mysql_user="root"
mysql_password="123"
mysql_host="localhost"
mysql_port="3306"
mysql_charset="utf8"
mysql_database=edevp-nacos# 增加日志路径 #时间格式DATE=`date '+%Y%m%d-%H%M'`
LOGFILE=$backup_location/$mysql_database-backup.log
echo "$(date "+%Y-%m-%d %H:%M:%S") 日志路径:$LOGFILE"# 是否删除过期数据
expire_backup_delete="ON"
expire_days=7
backup_time=`date +%Y%m%d%H%M`
backup_dir=$backup_location
welcome_msg="Welcome to use MySQL backup tools!"
mysql_database_backup_file=${mysql_database}_backup-${backup_time}.sqltime=$(date "+%Y-%m-%d %H:%M:%S")
echo -e "\r\n\r\n\r\n--------------------------------" >> $LOGFILE# 备份指定数据库中数据(此处假设数据库是mysql_backup_test)
# mysqldump --single-transaction -u root -h 127.0.0.1 --password=123456 --all-databases > /backup/db.sql
#docker exec -it mysql(镜像号) mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -B test1(数据库名称)(中间是有一个空格的)> $backup_dir/mysql_backup_test-$backup_time.sql
echo "${time} START BACKUP"
echo "${time} START BACKUP ">> $LOGFILE
echo "${time} docker exec -it mysql mysqldump -h${mysql_host} -P${mysql_port} -u${mysql_user} -p${mysql_password} -B ${mysql_database} > ${backup_dir}/${mysql_database_backup_file}"  >> $LOGFILE
# docker exec -it mysql mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -B $mysql_database > $backup_dir/$mysql_database_backup_file
# 报错解决:the input device is not a TTY 原因是后台linux执行的时候没有终端设备一般来说我们启动容器后要与容器进行交互操作,这是,就要加上"-it"这个参数,而在重启过重中或定时任务中,如果让脚本在后台运行,就没有可交互的终端,这就会引发如题所示错误,解决办法就是去掉“-it”这个参数
docker exec mysql mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -B $mysql_database > $backup_dir/$mysql_database_backup_filetime=$(date "+%Y-%m-%d %H:%M:%S")
if [ $? -ne 0 ]; thenecho '${time} FINISH ERROR'echo '${time} FINISH ERROR'  >> $LOGFILEexitEOF
fi
echo "${time} FINISH BACKUP"
echo "${time} FINISH BACKUP" >> $LOGFILE
# 删除过期数据
if [ "$expire_backup_delete" == "ON" -a  "$backup_location" != "" ];then#删除7天以上的备份 find /home/ywtg/backup/ -type f -mtime +7 -exec rm {} ;`find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf`echo ${time}' Expired backup data delete complete!'
fi
  • 注意
    报错解决:the input device is not a TTY 原因是后台linux执行的时候没有终端设备一般来说我们启动容器后要与容器进行交互操作,这是,就要加上"-it"这个参数,而在重启过重中或定时任务中,如果让脚本在后台运行,就没有可交互的终端,这就会引发如题所示错误,解决办法就是去掉“-it”这个参数
    docker exec mysql mysqldump -h m y s q l h o s t − P mysql_host -P mysqlhostPmysql_port -u m y s q l u s e r − p mysql_user -p mysqluserpmysql_password -B $mysql_database > b a c k u p d i r / backup_dir/ backupdir/mysql_database_backup_file

2、执行脚本

chmod +x mysql_backup_edevp-nacos.sh
./mysql_backup_edevp-nacos.sh

在这里插入图片描述

三、定时执行

1、crond和crontab

crond和crontab是密不可分的

  • crond

crond 是 Linux 系统下用来周期性地执行某种任务或等待处理某些事件的一个守护进程。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动 crond 进程,crond 进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

  • crontab

linux提供给使用者自己定义任务,crontab依赖crond进程,crond进程每分钟回去扫描crontab中的定时任务

查看crond进程的状态,默认是根据系统自启动的

2、新建任务

  • 00 02 * * * 每天凌晨两点执行一次
#新建定时任务命令
crontab -e00 11 * * * cd /usr/local/mysql;sh mysql_backup_edevp-nacos.sh >> back_task.log 2>>back_task.log

3、查看任务

#查看定时任务命令
crontab -l

4、删除所有任务

crontab -r 之间删除任务,没有提示,谨慎操作

#删除所有定时任务命令
crontab -r

http://chatgpt.dhexx.cn/article/vVKdGG1I.shtml

相关文章

Windows系统下如何定时备份MySQL数据库

Windows系统下如何定时备份MySQL数据库 使用mysqldump备份sql文件 假设mysql环境 MySQL安装位置 D:\mysql\mysql-5.7.30-winx64需要备份的数据库名称 springMySQL数据库账号 rootMySQL数据库密码 123456数据库备份地址 D:/mysqlBackup/ 则脚本按照下面写法&#xff1a; echo of…

mysql设置定时备份

不管是什么类型的数据库&#xff0c;我们都需要定时的备份&#xff0c;以便在出问题时可以及时恢复&#xff0c;减少损失。sqlserver的备份很简单&#xff0c;sqlserver自带&#xff0c;这里主要给大家分享下mysql的自动备份如何设置。 1.工具&#xff1a;navicat2.数据库:mys…

【数据库】定时备份mysql数据库

目录 一、创建放备份的目录二、编写脚本三、创建软链接四、赋予该脚本可执行权限五、测试脚本是否能正常执行六、进入备份文件夹查看是否正常备份七、安装cron服务八、创建定时备份任务 一、创建放备份的目录 cd / 进入根目录 mkdir backup 创建备份…

Mysql数据库每天定时备份

1.先检查安装crontabs yum install crontabs 2.在home目录下指定路径新建文件夹 3.新建执行脚本,在里面写入命令 touch mysql_backup.sh shell脚本如下&#xff1a; #!/bin/bash #保存备份个数&#xff0c;备份14天数据 number14 #备份保存路径 backup_dir/home/tjgeo/bac…

Mysql定时备份

linux下如何实现mysql数据库每天定时自动备份 由于客户要求&#xff0c;需要将数据库进行每天定时自动备份&#xff0c;所以网上找了各种方式就行了测试&#xff0c;遇到很多坑&#xff0c;特此记录下来&#xff0c;步骤是东拼西凑的&#xff0c;虽然也是网上找的&#xff0c;…

Windows下 mysql定时备份

** 使用mysqldump进行数据库备份 ** mysql数据库自带备份命令mysqldump,可对数据库进行备份操作 最简单的备份是将数据库备份至本地&#xff0c;生成 **.sql文件 编写备份脚本文件 &#xff08;创建一个txt文件&#xff0c;写入批处理脚本&#xff0c;再将文件的后缀改为.ba…

MySQL定时备份数据库(全库备份)

MySQL定时备份数据库&#xff08;全库备份&#xff09; 一、MySQL数据备份 1.1、 mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法: …

mysql定时自动备份数据库

我们都知道数据是无价&#xff0c;如果不对数据进行备份&#xff0c;相当是让数据在裸跑&#xff0c;一旦服务器出问题&#xff0c;只有哭的份了。下面将介绍mysql数据库的自动备份&#xff0c;大家可根据情况自行选择将备份数据存放在哪里。 第一种&#xff0c;数据跑在服务器…

windows系统mysql定时备份

一.介绍 本文章主要介绍了windows系统下如何创建mysql定时备份任务&#xff0c;目的&#xff1a;一是数据无价&#xff0c;一旦数据丢失&#xff0c;功亏一篑&#xff1b;而是将重复性的工作交给机器来做&#xff0c;省去人工处理成本。 二.创建bat任务脚本 1.新建txt文档 2.打…

MySQL 定时备份数据库(非常全)

一. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法: #MySQLdump常用 mysqldump -u root -p --databases 数据库1 数据库2 > xxx.s…

实战-MySQL定时增量备份(2)

阅读本文大约需要 9 分钟 实战-MySQL定时全量备份&#xff08;1&#xff09; 实战-MySQL定时增量备份&#xff08;2&#xff09; 实战-将MySQL备份上传到私有云(3) 概要 引言 增量备份 恢复增量备份 定时备份 引言 在产品上线之后&#xff0c;我们的数据是相当重要的&…

MySQL 数据库定时备份

1.编写BASH维护固定数量备份文件 在Linux中&#xff0c;使用vi或者vim编写脚本内容并命名为&#xff1a;mysql_dumps.sh #!/bin/bash #保存备份个数&#xff0c;备份31天数据 number31 #备份保存路径 backup_dir/root/mysqlbackup #日期 dddate %Y-%m-%d-%H-%M-%S #备份工具 …

Linux定时备份MySQL

Linux定时备份MySQL 1.备份脚本2.赋予脚本执行权限3.添加定时任务4. crontab定时任务表达式5. 常见问题6. linux软连接7.参考链接: 阅读本文您将了解到: 定时备份数据库linux定时任务crontab定时任务表达式shell脚本变量命名规则linux 软连接的使用vim使用技巧 1.备份脚本 用vi…

MySQL 如何定时备份数据库

目录 1.mysqldump命令备份数据 2.mysqldump常用操作示例 2.1. 备份全部数据库的数据和结构 2.2.备份全部数据库的结构&#xff08;加 -d 参数&#xff09; 2.3. 备份全部数据库的数据(加 -t 参数) 2.4.备份单个数据库的数据和结构(,数据库名mydb) 2.5. 备份单个数据库的…

MySQL 定时备份数据库(非常全),值得收藏!

在操作数据过程中&#xff0c;可能会导致数据错误&#xff0c;甚至数据库奔溃&#xff0c;而有效的定时备份能很好地保护数据库。本篇文章主要讲述了几种方法进行 MySQL 定时备份数据库。 一. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工…

mysql数据库定时备份

1 环境检查 1. 执行本手册前&#xff0c;请正确安装Mysql数据库&#xff0c;并知晓数据库用户名和密码&#xff1b; 2. 执行本手册前&#xff0c;请先确定Mysql数据库数据要储存的天数&#xff1b;默认30 2 批处理文件配置 当前步骤主要实现以下目标配置&#xff1a; 配置…

mysql实现定时备份

1、编写脚本xxx.bat echo off echo 设置MySql数据库的连接信息 set host127.0.0.1 set port3306 set userroot set pass123456 echo 设置要备份MySql数据库名称 set dbnameprojectmonitoring echo 获取当天的日期格式&#xff0c;例如&#xff1a;2022-12-13-14-30-40set back…

MySQL数据库定期自动备份(定时任务)

一、脚本备份&#xff1b; 1、新建一个backupDB.txt文件&#xff0c;然后通过重命名修改文件后缀为.bat&#xff0c;将 backupDB.bat 放置在 D:/mysql5.7目录下&#xff0c;文件内容如下&#xff1a; echo off set h%time:~0,2% set h%h: 0% set hhmiss%date:~0,4%%date:~5,2…

【Axure】Axure RP 9 下载、短期试用破解安装和汉化步骤 —— 可供安装参考,短期试用,目前授权码已逐渐失效

目录 一、Axure RP 9 下载 二、Axure RP 9 安装 三、Axure RP 9 破解 四、Axure RP 9 汉化 一、Axure RP 9 下载 &#xff08;1&#xff09;最新版本 Axure RP 9 下载地址&#xff08;Mac & window&#xff09;&#xff1a;点击前往下载 &#xff08;2&#xff09;汉化…

Axure PR9的安装与激活

一、Axure安装包与汉化包的下载 概述&#xff1a;2021/04/30 Axure官网发布了Axure RP 10的正式版&#xff0c;但因为目前市面上还普遍再用Axure RP 8和Axure RP 9(Axure RP 10不兼容以前版本)&#xff0c;顾小编还是装了Axure RP 9 下载&#xff1a;登录Axure中文学习网&…