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

article/2025/10/6 2:57:23

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

一、MySQL数据备份

1.1、 mysqldump命令备份数据

在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:

#MySQLdump常用
mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql

1.2、 mysqldump常用操作示例

1.备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

2.备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql

3.备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql

4.备份单个数据库的数据和结构(,数据库名mydb)

mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql

5.备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql

6.备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql

7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql

8.一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

1.3、 还原mysql备份内容

有两种方式还原,第一种是在MySQL命令行中,第二种是使用SHELL行完成还原

1.在系统命令行中,输入如下实现还原:

mysql -uroot -p123456 < /data/mysqlDump/mydb.sql

2.在登录进入mysql系统中,通过source指令找到对应系统中的文件进行还原:

mysql> source /data/mysqlDump/mydb.sql

二、 编写脚本维护备份的数据库文件

在linux中,通常使用BASH脚本对需要执行的内容进行编写,加上定时执行命令crontab实现日志自动化生成。

以下代码功能就是针对mysql进行备份,配合crontab,实现备份的内容为近一个月(31天)内的每天的mysql数据库记录。

2.1、 编写BASH维护固定数量备份文件

在Linux中,使用vi或者vim编写脚本内容并命名为:mysql_dump_script.sh

复制代码

#!/bin/bash#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/mysqlbackup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=TankB214
#将要备份的数据库
database_name=edoctor#如果文件夹不存在则创建
if [ ! -d $backup_dir ]; 
then     mkdir -p $backup_dir; 
fi#简单写法  mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $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" >> $backup_dir/log.txt
fi

复制代码

如上代码主要含义如下:

1.首先设置各项参数,例如number最多需要备份的数目,备份路径,用户名,密码等。

2.执行mysqldump命令保存备份文件,并将操作打印至同目录下的log.txt中标记操作日志。

3.定义需要删除的文件:通过ls命令获取第九列,即文件名列,再通过

head -1

实现定义操作时间最晚的那个需要删除的文件。

4.定义备份数量:通过ls命令加上

wc -l

统计以sql结尾的文件的行数。

5.如果文件超出限制大小,就删除最早创建的sql文件

2.2、 使用crontab定期执行备份脚本

在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。

一、cron服务
  cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
  service crond start    //启动服务
  service crond stop     //关闭服务
  service crond restart  //重启服务
  service crond reload   //重新载入配置
  service crond status   //查看服务状态 

二、crontab语法

crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的。
在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下: 
minute hour day-of-month month-of-year day-of-week commands 
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

-l 在标准输出上显示当前的crontab。 
-r 删除当前的crontab文件。 
-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。 

三、创建cron脚本
第一步:写cron脚本文件,命名为mysqlRollBack.cron。
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt  表示,每隔15分钟,执行打印一次命令 
第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定 
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

注意:这操作是直接替换该用户下的crontab,而不是新增

定期执行编写的定时任务脚本(记得先给shell脚本执行权限)

0 2 * * * /root/mysql_backup_script.sh

随后使用crontab命令定期指令编写的定时脚本

crontab mysqlRollback.cron

再通过命令检查定时任务是否已创建:

crontab -l

附crontab的使用示例:

1.每天早上6点 

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

2.每两个小时 

0 */2 * * * echo "Have a break now." >> /tmp/test.txt  

3.晚上11点到早上8点之间每两个小时和早上八点 

0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt


4.每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 

0 11 4 * 1-3 command line


5.1月1日早上4点 

0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/ 


6.每小时执行/etc/cron.hourly内的脚本

01 * * * * root run-parts /etc/cron.hourly


7.每天执行/etc/cron.daily内的脚本

02 4 * * * root run-parts /etc/cron.daily 

8.每星期执行/etc/cron.weekly内的脚本

22 4 * * 0 root run-parts /etc/cron.weekly 


9.每月去执行/etc/cron.monthly内的脚本 

42 4 1 * * root run-parts /etc/cron.monthly 


注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。   

10.每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 

5,15,25,35,45,55 16,17,18 * * * command


11.每周一,三,五的下午3:00系统进入维护状态,重新启动系统。

00 15 * * 1,3,5 shutdown -r +5


12.每小时的10分,40分执行用户目录下的innd/bbslin这个指令: 

10,40 * * * * innd/bbslink


13.每小时的1分执行用户目录下的bin/account这个指令: 

1 * * * * bin/account

 

三、执行效果截图

以下是我的测试每分钟的截图效果,其对应代码如下:

* * * * * /root/mysql_backup_script.sh

效果截图:

其中的log.txt记录备份的操作详细日志:

本文参考:

1.MySQLdump常用命令:https://www.cnblogs.com/smail-bao/p/6402265.html (博客园)

2.利用Shell脚本实现对mysql数据库的备份:https://www.cnblogs.com/mracale/p/7251292.html(博客园)

3.Linux下的Crontab定时执行任务命令详解:https://www.cnblogs.com/longjshz/p/5779215.html(博客园)


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

相关文章

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中文学习网&…

原型设计工具:Axure RP9 中文激活版 win/mac

Axure RP 9 是一款强大的原型设计工具&#xff0c;它能够帮助用户快速创建高质量的交互原型、线框图、流程图和文档等。 ​Axure RP 9 具有以下特点&#xff1a; 强大的交互能力&#xff1a;Axure RP 9 提供了丰富的交互组件和事件&#xff0c;可以轻松实现交互功能&#xff0…

数据库相关中间件介绍

数据库相关中间件介绍 详见&#xff1a;http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt412 这里主要介绍互联网行业内有关数据库的相关中间件。数据库相关平台主要解决以下三个方面的问题&#xff1a; 为海量前台数据提供高性能、大容量、高可用性的访问 为数…

Mysql 中间件 oneProxy总结

建议使用之前把官方的文档全部通读一遍 这里提供一个我的网盘地址oneproxy 百度网盘 0. 先对 oneproxy 有个大概的了解&#xff0c;知道他所处的位置 1. MySQL服务器 创建test用户,密码test存在test数据库确认oneproxy能登录 1.1 注意事项 所有MySQL节点有相同的用户名和口…

mysql几种中间件对比

网上找到的图 重点比较几个 1.atlas 基于mysql-proxy&#xff0c;360团队 优点&#xff1a; 配置简单,支持读写分离 缺点&#xff1a; 年份久&#xff0c;功能有限 地址&#xff1a;https://github.com/Qihoo360/Atlas/wiki/Atlas%E5%8A%9F%E8%83%BD%E7%89%B9%E7%82%B9FAQ 2.my…

Mysql中间件研究

转自&#xff1a;https://blog.csdn.net/kingzone_2008/article/details/51513910 mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡&#xff0c;读写分离&#xff0c;failover等&#xff0c;但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源…

mysql中间件研究( Atlas,cobar,TDDL,mycat,heisenberg,Oceanus,vitess,OneProxy )

mysql中间件研究&#xff08; Atlas&#xff0c;cobar&#xff0c;TDDL&#xff0c;mycat&#xff0c;heisenberg,Oceanus,vitess,OneProxy &#xff09; mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡&#xff0c;读写分离&#xff0c;failover等&#xff0c;但其…

mysql中间件 拦截sql

对mysql进行读写分离的中间件有哪些 mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡&#xff0c;读写分离&#xff0c;failover等&#xff0c;但其不支持大数据量的分库分表且性能较差。 其他mysql开源中间件产品有&#xff1a;Atlas&#xff0c;cobar&#xff0c;td…