MySql 定时备份数据库

转载:MySql 定时备份数据库

每天零点备份一次数据库,备份文件放在指定目录(如果目录不存在则新建),按月存储;

将下面这段命令存储为一个 *.bat 文件,添加一个Windows任务计划程序(Task scheduler)指向这个文件,每天执行一次即可。

rem ******Code Start***********
@echo off
C:
CD C:\Program Files\MySQL\MySQL Server 5.7\bin
set "Y=%date:~10,4%"
set "m=%date:~7,2%"
set "d=%date:~4,2%"
if not exist "D:\ARTS Backup\BK%Y%%m%\" (mkdir "D:\ARTS Backup\BK%Y%%m%\")
mysqldump --opt -u root --password=ameroidrts ameroid > "D:\ARTS Backup\BK%Y%%m%\ameroid_%Y%%m%%d%.sql"
@echo on
rem *****************Code End*************

说明

我的MySql安装在C:\Program Files下,所以要先进入MySql的bin目录,以便执行 mysqldump 命令

C:

CD C:\Program Files\MySQL\MySQL Server 5.7\bin

如果你的MySql安装在其它位置,修改盘符和路径即可。

用到了date:命令来得到当前日期,下面三条命令分别得到年月日:

set "Y=%date:~10,4%"
set "m=%date:~7,2%"
set "d=%date:~4,2%"

因为电脑是英文环境,可以通过 echo %date:~,20% 查看日期格式(输出日期字符串前20个字符)

如果你的电脑环境是中文,日期格式应该是:2016/03/09 周三,那年月日应该是:

set "Y=%date:~,4%"
set "m=%date:~5,2%"
set "d=%date:~8,2%"

if not exist 是判断目录是否存在,mkdir是新建目录,目录名称中如果有空格,可将整个路径双引号括起来。

备份文件存储目录:

第一种:新建批处理文件 backup.dat,里面输入以下代码:

net stop mysql
xcopy "C:/Program Files/MySQL/MySQL Server 5.0/data/piaoyi/*.*" D:/db_backup/%date:~0,10%/ /y
net start mysql  

注意:批处理命令中路径里有空格的话,必须在路径上加上双引号!

然后使用Windows的"计划任务"定时执行该批处理脚本即可。(例如:每天凌晨3点执行backup.bat)
解释:备份和恢复的操作都比较简单,完整性比较高,控制备份周期比较灵活。此方法适合有独立主机但对mysql没有管理经验的用户。缺点是占用空间比较多,备份期间mysql会短时间断开(例如:针对30M左右的数据库耗时5s左右)。  
关于时间参数的参考:
%date:~0,10%      //提取年月日信息
%date:~-3%         //提取星期几信息
%time:~0,5%         //提取时间中的时和分
%time:~0,-3%       //提取时和分和秒信息

第二种:mysqldump备份成sql文件
==============
假想环境:
MySQL   安装位置:C:/MySQL
论坛数据库名称为:bbs
MySQL root   密码:123456
数据库备份目的地:D:/db_backup/

脚本:

@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
C:/MySQL/bin/mysqldump --opt -u root --password=123456 bbs > D:/db_backup/bbs_%Ymd%.sql
@echo on  

以上代码保存为backup_db.bat

然后使用Windows的"计划任务"定时执行该脚本即可。(例如:每天凌晨5点执行back_db.bat)
说明:此方法可以不用关闭数据库,并且可以按每一天的时间来名称备份文件。
通过%date:~5,2%来组合得出当前日期,组合的效果为yyyymmdd,date命令得到的日期格式默认为yyyy-mm-dd(如果不是此格式可以通过pause命令来暂停命令行窗口看通过%date:~,20%得到的当前计算机日期格式),所以通过%date:~5,2%即可得到日期中的第五个字符开始的两个字符,例如今天为2009-02-05,通过%date:~5,2%则可以得到02。(日期的字符串的下标是从0开始的)

第三种:利用WinRAR对MySQL数据库进行定时备份。 
    对于MySQL的备份,好的方法是直接备份MySQL数据库的Data目录。下面提供了一个利用WinRAR来对Data目录进行定时备份的方法。

首先当然要把WinRAR安装到计算机上。

将下面的命令写入到一个文本文件里,如 backup.bat

net stop mysql
"C:/Program Files/WinRAR/WinRAR.exe" a -ag -k -r -s D:/db_backup/mysql_.rar "C:/Program Files/MySQL/MySQL Server 5.0/data/"
net start mysql  

winrar参数解释:

a: 添加文件到压缩文件
-ag: 使用当前日期生成压缩文件名
-k: 锁定压缩文件
-r: 递归子目录
-s: 创建固实压缩文件

执行以上文件后,会生成一个压缩文件如:mysql_20130803004138.rar。
   进入控制面版,打开计划任务,双击"添加计划任务"。在计划任务向导中找到刚才的backup.bat文件,接着为这个任务指定一个运行时间和运行时使用的账号密码就可以了。
   这种方法缺点是占用时间比较多,备份期间压缩需要时间,mysql断开比第一种方法更多的时间,但是对于文件命名很好。

Windows 下 MySQL 简单定时自动备份、删除过期备份

新建一个 数据库备份文件存放目录,本例为D:\db_backup.新建一个批处理文件,可以起任意名,本例为mysql_backup_tool.bat ,文件内容如下:

rem auther:www.waylau.com
rem date:20150724
rem ******MySQL backup start********@echo off
forfiles /p "D:\db_backup" /m emsc_backup_*.sql -d -30 /c "cmd /c del /f @path"
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"
C:\mysql\bin\mysqldump --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "emsc" > D:\db_backup\emsc_backup_%Ymd%.sql
@echo on
rem ******MySQL backup end********

  其中,forfiles删除过期文件的命令,-d -30删除30天的文件。C:\mysql\bin\mysqldump 为 MySQL 安装时,mysqldump.exe 文件所在路径,--user=root 指 MySQL 用户名为 root --password=123456 指 MySQL 密码为123456,"emsc" 为要备份的数据库的名称,emsc_backup_%Ymd%.sql, 为备份文件的名称,这个名称是根据当前的时间规则生成的,比如今天生产的备份文件,名称为emsc_backup_20150724012120.sql 。

自测案例:

mysql:

rem *******************************Code Start*****************************
@echo off
C:
CD C:\Program Files\MySQL\MySQL Server 5.5\bin

set "Y=%date:~,4%"
set "m=%date:~5,2%"
set "d=%date:~8,2%"

if not exist "F:\mysql\Backup\BK%Y%%m%\" (mkdir "F:\mysql\Backup\BK%Y%%m%\")
mysqldump --opt -u root --password= jitri > "F:\mysql\Backup\BK%Y%%m%\jitriBackUp_%Y%%m%%d%.sql"

@echo on
rem *******************************Code End*****************************

oracle:

@echo off
rem set backupfolder=%date:~0,4%-%date:~5,2%-%date:~8,2%
rem md D:\backup\%backupfolder%
set backupfile=jsqs_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp
set logfile=jsqs_%date:~0,4%-%date:~5,2%-%date:~8,2%.log
expdp jsqs/jsqs directory=dbbackup  dumpfile=%backupfile%  logfile=%logfile% schemas=jsqs parallel=4
forfiles /p "D:\dbbackup" /d -7  /c "cmd /c  del /f @path"

原文地址:https://www.cnblogs.com/lojun/p/9043594.html

时间: 2024-12-15 22:30:37

MySql 定时备份数据库的相关文章

linux下mysql定时备份数据库

linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈   一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql 这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-01.sql里了,如果数据量大会占用很大空间,这时可以利用gzip压缩数据, 命令如下:#mysqldump -uuse

windows下mysql定时备份数据库几种方法

第一种:新建批处理文件 backup.dat 代码如下: net stop mysqlxcopy "C:/Program Files/MySQL/MySQL Server 5.0/data/piaoyi/*.*" D:/db_backup/%date:~0,10%/ /ynet start mysql 注意:批处理命令中路径里有空格的话,必须在路径上加上双引号!然后使用Windows的"计划任务"定时执行该批处理脚本即可.(例如:每天凌晨3点执行backup.bat

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 -p12

mysql定时备份数据库的shell

一,准备好shell脚本 查看复制打印? vi /home/zhangy/database_bak.sh #!/bin/sh # File: /home/zhangy/database_bak.sh # Database info bakupmysql  TANK 2009/11/04 DB_USER="root"                                                              #用户名 DB_PASS="******

linux利用crontab执行sqldump 定时备份数据库

linux利用crontab执行sqldump 定时备份数据库 : #!/bin/bash var=`date +%Y%m%d` /usr/local/mysql/bin/mysqldump  --databases core|gzip >/apps/sqldump/bak/core${var}.gz /usr/local/mysql/bin/mysqldump  --databases access_service|gzip > /apps/sqldump/bak/access_servic

mysql 定时备份bat脚本 ,方便小型服务简单快速备份mysql

mysql定时备份bat脚本 echo 数据库为用户名为root 密码为root 数据库名为kdykt echo mysqldump 命令如果没有配置环境变量要在bin目录下执行 set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%" D: cd D:\phpStudy\MySQL\bin mysqldump --opt -u root --password=root kdykt > kdykt_%Ymd%

mysql自动备份数据库,同时ftp上传到指定服务器(scp远程获取本地备份)

最近要把服务器托管到电信机房,所以要对数据库进行备份,同时要把备份ftp上传到公司指定服务器. 一.先安装ftp服务 1.查询是否安装vsftpd: rpm -qa |grep vsftpd (rpm的安装:apt-get install rpm) 或者查询当前ftp进程:ps -ef|grep vsftpd ? 或者 ps -ef|grep ftp 2.如果没有就安装yum install vsftpd 3.安装完后看ftp安装目录:ps -ef|grep ftp 发现我的配置文件默认:/et

mysql自动备份数据库与自动删除临时文件

mysql自动备份数据库与自动删除临时文件,有需要的朋友可以参考下. 一.每日23:00自动删除临时文件 首先查看一下crontab的任务列表: crontab -l 然后新建: crontab -e 添加一行: 00 03 * * * rm -rf /www/cmstest/my120/public/scripts/jpgraph/* 保存退出. 重启服务:  /etc/rc.d/init.d/crond restart 二.每日24:00自动备份数据库 利用系统crontab来定时执行备份文

SqlServer定时备份数据库和定时杀死数据库死锁解决

PS:Sqlserver 2008 R2,windows 8 64位 1.备份数据库 因为要备份,我们就要用到Sqlserver的代理,默认数据库的代理是不开启的.需要我们手动开启的. 执行备份数据库脚本,现在将脚本公布,其实将这一段代码中需要保存的文件路径和数据库名称替换一下就可以实现备份了.但是还没有达到定时备份的目的 ? 1 2 3 4 5 6 7 8 9 10 11 --自动备份并保存最近5天的SQL数据库作业脚本 宋彪 20130310 DECLARE @filename VARCHA