Mysql定时备份

article/2025/10/6 2:38:45

linux下如何实现mysql数据库每天定时自动备份

由于客户要求,需要将数据库进行每天定时自动备份,所以网上找了各种方式就行了测试,遇到很多坑,特此记录下来,步骤是东拼西凑的,虽然也是网上找的,但都是经过亲自测试,一定能用,针对部署时期遇到的问题和解决方式都记录了下来。

1、创建备份目录:
为了方便,在/home保存备份文件;

cd 
mkdir /home/dbback
cd /home/dbback
2、创建备份Shell脚本:
注意把以下命令中的DatabaseName换为实际的数据库名称; 
当然,你也可以使用其实的命名规则!

vi bkDatabaseName.sh
输入/粘贴以下内容:

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
对备份进行压缩:

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
注意: 
把 username 替换为实际的用户名; 
把 password 替换为实际的密码; 
把 DatabaseName 替换为实际的数据库名;

3、添加可执行权限:
chmod u+x bkDatabaseName.sh
添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;

./bkDatabaseName.sh
注:这里可能会报错
Warning: Using a password on the command line interface can be insecure.
导出MySQL数据库的时候采用mysqldump命令,出现"Warning: Using a password on the command line interface can be insecure."的错误提示,当然数据库肯定也没有能备份下来。这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。

解决方法、修改数据库配置文件

1、我们需要修改数据库配置文件,这个要看我们数据库的配置的,有些是在/etc/my.cnf,有些是/etc/my.conf

我们需要在[client]部分添加脚本:

host=localhost
user=数据库用户
password='数据库密码'

这里参数要修改成我们自己的。

2、采用命令导出和导入数据库

其实在这个时候,我们如果采用"详解使用mysqldump命令备份还原MySQL数据用法整理"介绍的方法也是可以使用的,虽然依旧有错误提示,但是数据库还是可以导出的。您肯定和老左一样是追求细节的人,一点点问题都不能有,但我们可以用下面的命令导出和导入,就没有错误提示。

#导出数据库

mysqldump --defaults-extra-file=/etc/my.cnf database > database.sql

#导入数据库

mysql --defaults-extra-file=/etc/my.cnf database < database.sql

这里我们可以看到上面的命令和以前常用的快速导入和导入命令有所不同了,需要加载我们配置的MYSQL配置文件,这个红色部分要根据我们实际的路径修改。用这样的命令导出备份和导入是没有错误提示的。


4、添加计划任务
检测或安装 crontab
确认crontab是否安装: 
执行 crontab 命令如果报 command not found,就表明没有安装

# crontab
-bash: crontab: command not found
如时没有安装 crontab,需要先安装它,具体步骤请参考: 
CentOS下使用yum命令安装计划任务程序crontab 
使用rpm命令从CentOS系统盘安装计划任务程序crontab

添加计划任务
执行命令:

crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑。 
输入以下内容并保存:

*/1 * * * * /home/backup/bkDatabaseName.sh
具体是什么意思呢? 

意思是每一分钟执行一次shell脚本“/home/backup/bkDatabaseName.sh”。

1、额外学习,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文件。当结束编辑离开时,编辑后的文件将自动安装。 

 

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

每两个小时 
0 */2 * * * echo "Have a break now." >> /tmp/test.txt  

晚上11点到早上8点之间每两个小时和早上八点 
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
0 11 4 * 1-3 command line

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

每小时执行/etc/cron.hourly内的脚本
01 * * * * root run-parts /etc/cron.hourly
每天执行/etc/cron.daily内的脚本
02 4 * * * root run-parts /etc/cron.daily 

每星期执行/etc/cron.weekly内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly 

每月去执行/etc/cron.monthly内的脚本 
42 4 1 * * root run-parts /etc/cron.monthly 

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

每天的下午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

每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
00 15 * * 1,3,5 shutdown -r +5

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

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

每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔): 
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)  

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。 
12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt 


5、测试任务是否执行
很简单,我们就执行几次“ls”命令,看看一分钟过后文件有没有被创建就可以了!

如果任务执行失败了,可以通过以下命令查看任务日志:

# tail -f /var/log/cron
输出类似如下


--------------------- 
作者:凌凌小博客 
来源:CSDN 
原文:https://blog.csdn.net/qq_35923749/article/details/79363364 
版权声明:本文为博主原创文章,转载请附上博文链接!


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

相关文章

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

原型设计工具: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开源…