Data Base mysql备份与恢复
mysql 备份与恢复
为什么要备份:
由于系统使用到了MySQL 数 据库,所以每天的工作,就设计到了MySQL数据库的备份问题.但如果每天手工来做MySQL数据库的定时备份,工作量不说,时间还不准确,有时候还会忘 记做备份,哪一天忙起来忘记了,数据库出了问题,就不好搞了.所以,将MySQL数据库的备份,做成系统定时执行的,就很有必要.
一般情况下,我们手工备份MySQL数据库。
一.备份:
1.脚本命令备份:
(1).简单备份:(使用mysqldump备份)
@echo
set date1=%date:~0,4%
set date2=%date:~5,2%
set date3=%date:~8,2%
set date_string=%date1%%date2%%date3%
mysqldump --opt --add-locks -u zlp --password=123 test> D:\mysql_backup\%date_string%\test.sql
(2).data文件备份:
net stop mysql
xcopy c:\mysql\data\test\*.* c:\mysql_backup\test\%date:~0,10%\ /S /I
net start mysql
(3).备份(完整):
@REM 版本 1.4
@REM 要测试是否能成功运行,请在配置好以下参数后,直接运行,看能否正常备份MySQL数据。如果能正常备份,那么就可以配置到计划任务中了。
@REM 注意:运行计划任务的用户,需要有访问备份文件夹和临时目录读写的权限。
@REM 如果有运行异常,请将 @ECHO OFF 删除,并在最后添加一行加入 PAUSE 好观察在哪步出了错。 @ECHO OFF REM ***************************************************************************
REM 参数配置(参数前后不能有空格) REM 设置dbhost为主机名或IP地址
SET dbhost=localhost REM 设置登陆mysql数据库的用户名。如果用户名中有"号,请用""代替。
SET dbuser=root REM 设置登陆mysql的密码。如果密码中有"号,请用""代替。
SET dbpwd=123456 REM 设置backupPath为备份文件存放的路径。注意:文件夹名存在空格不需要引号括起来。警告:此文件夹应为专用目录,最好独立使用,避免删除历史备份时误删数据。
SET backupPath=D:\MySQLAutoBackup REM 备份文件夹前缀。
SET backupFolderPrefix=MyBackup_ REM 设置删除历史备份文件。删除多少次备份之前的备份文件。0--不删除历史备份文件;1,表示一次,2,表示2次,以此类推。如set deleteHistorySkips=30表示删除30次以前的备份文件;
SET deleteHistorySkips=30 REM 设置备份时发生错误是否删除历史备份文件。yes--删除;no--不删除。
SET onErrorDeleteBackFile=no REM 是否启用压缩功能。yes--开启压缩功能。no--禁用压缩功能。默认值:no,不开启。
SET enableCompress=yes REM 设置WinRAR压缩级别。取值0到5。0--无压缩;5--最高压缩比;默认值:3
SET compressLevel=3 REM 压缩类型。cab--系统内置cab压缩功能。rar--启用RAR压缩功能,需要安装RAR压缩软件支持
SET compressType=cab REM 设置WinRAR安装路径。
SET rarPath=C:\Program Files\WinRAR REM 设置分卷大小。0--表示不分卷;1--表示1k,1024--表示1M,2048--表示2M;默认值:102400,表示100M
SET volumePackSize=0 REM 设置压缩密码。{empty}表示没有密码。其他字符表示压缩文件密码
SET rarPwd={empty} REM 设置临时目录。如果备份时系统默认临时目录所在分区空间太小,可以通过这里调整该脚本运行的临时目录。默认值:%TEMP%
REM 启用压缩时,零时目录占用空间较大,大约是备份数据库的1.2倍。不启用压缩,占用临时目录空间很小。
REM 如果启用了CAB压缩,临时目录最好和备份文件夹在同一个分区。请保证指定的临时目录存在。
SET TEMP=%TEMP% REM 完成参数配置
REM *************************************************************************** REM ***************************************************************************
REM 环境检测,参数检测和初始化 REM 设置%myDate%为当前日期(2013-01-02)。因为日期后可能跟一个空格和星期几,并且日期中可能是”/"分割,所以要去除掉星期几和斜线。
FOR /F "tokens=1,2* delims= " %%i IN ('ECHO %date:/=-%') DO SET "myDate=%%i"
REM 设置%MyTime%为当前时间。格式:20.56.30.99
SET myTime=%TIME::=.%
SET myTime=%myTime: =0% REM 设置零时目录
SET myTempDir=%TEMP%\MySQLBack_%myDate%_%MyTime%
REM 设置备份日志文件
SET backupLogFile=%backupPath%\MySQLBackLog.txt
REM 用于环境检测的零时文件名
SET checkFileName=_1_2_3_backup_mysql_check_%myDate%_%MyTime% REM ****目录权限检测****
REM 检查备份目录是否存在,不存在则创建
:CheckAndMakeBackupFolder
IF exist "%backupPath%" GOTO CheckBackupFolderCreatFile
MD "%backupPath%"
IF %errorlevel%==0 GOTO CheckBackupFolderCreatFile
ECHO 创建数据库备份目录失败。请检测您是否具有写入"%backupPath%"的权限,或者驱动器是否存在。
PAUSE
GOTO END REM 检查备份目录是否有创建文件的权限
:CheckBackupFolderCreatFile
ECHO. > "%backupPath%\%checkFileName%"
IF EXIST "%backupPath%\%checkFileName%" del "%backupPath%\%checkFileName%" /Q /F & GOTO CheckBackupFolderCreateFolder
ECHO 请检查对备份文件夹"%backupPath%"是否有文件写入权限。
PAUSE
GOTO END REM 检查备份目录是否有创建文件夹的权限
:CheckBackupFolderCreateFolder
MD "%backupPath%\%checkFileName%" && ( RD /S /Q "%backupPath%\%checkFileName%" & GOTO CheckTempFolderAccess )
ECHO %myDate% %TIME% 请检查对备份文件夹"%backupPath%"是否有创建文件夹的权限。>>"%backupLogFile%"
GOTO END REM 检测临时目录访问权限
:CheckTempFolderAccess
ECHO. > "%temp%\%checkFileName%"
IF EXIST "%temp%\%checkFileName%" DEL "%temp%\%checkFileName%" /Q /F & GOTO MakeTempFolder
ECHO %myDate% %TIME% 没有临时目录写入权限。请用具有权限的用户执行备份脚本。>>"%backupLogFile%"
GOTO END REM 创建零时目录
:MakeTempFolder
MD "%myTempDir%" && GOTO CheckMySQLInstalled
ECHO %myDate% %TIME% 无法创建临时目录"%myTempDir%"。请检查临时目录权限。>>"%backupLogFile%"
GOTO END REM ****完成目录权限检测**** REM 检测MySQL是否安装
:CheckMySQLInstalled
mysql --help > NUL && GOTO CheckMySQLConnect
ECHO %myDate% %TIME% 无法检测到mysql,请确保已经正确安装MySQL.或者将MySQL的Bin目录的路径添加到系统变量Path中。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 验证数据库连接
:CheckMySQLConnect
ECHO exit | mysql -h"%dbhost%" -u"%dbuser%" -p"%dbpwd%" > NUL && GOTO CheckdeleteHistorySkips
ECHO %myDate% %TIME% 无法连接到%dbhost%。请检服务是否启动,连接的用户名和密码是否正确。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 验证删除历史备份配置参数
:CheckdeleteHistorySkips
ECHO %deleteHistorySkips%| findstr /be "[0-9]*" > nul && GOTO CheckOnErrorDeleteBackFile
ECHO %myDate% %TIME% 删除历史备份文件"deleteHistorySkipsFailed"配置错误,只能配置整数。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 验证删除历史备份配置参数
:CheckOnErrorDeleteBackFile
IF %onErrorDeleteBackFile%==no GOTO CheckCompressConfig
IF %onErrorDeleteBackFile%==yes GOTO CheckCompressConfig
ECHO %myDate% %TIME% 备份错误时是否删除历史文件"onErrorDeleteBackFile"配置参数错误。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 检查压缩软件配置
:CheckCompressConfig
IF %enableCompress%==no GOTO CheckSuccess
IF %enableCompress%==yes GOTO CheckCompressLevel
ECHO %myDate% %TIME% 是否启用压缩变量"enableCompress"的参数只能是"yes"或者"no".请检查配置。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 检查压缩级别
:CheckCompressLevel
ECHO %compressLevel%| findstr /be "[0-5]" > nul && GOTO CheckVolumePackSize
ECHO %myDate% %TIME% 压缩级别"compressLevel"配置错误,参数只能是0~5的数字>>"%backupLogFile%"
GOTO CheckParmsFailed REM 验证RAR分卷大小设置
:CheckVolumePackSize
ECHO %volumePackSize%| findstr /be "[0-9]*" > nul && GOTO CheckCompressType
ECHO %myDate% %TIME% 压缩包分卷大小"volumePackSize"配置错误。请检查设置。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 检查压缩类型
:CheckCompressType
IF %compressType%==rar GOTO CheckRarPath
IF %compressType%==cab GOTO CheckMakeCab
ECHO %myDate% %TIME% 压缩类型"compressType"设置错误.值只能是"cab"或者"rar".请检查设置。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 验证RAR配置目录
:CheckRarPath
IF exist "%rarPath%\Rar.exe" GOTO CheckSuccess
ECHO %myDate% %TIME% WinRAR安装路径"rarPath"设置错误.请检查设置。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 验证makecab
:CheckMakeCab
makecab /? >NUL && GOTO CheckSuccess
ECHO %myDate% %TIME% 系统内置MakeCab压缩功能无法使用,请使用RAR进行压缩。>>"%backupLogFile%"
GOTO CheckParmsFailed REM 参数验证无法通过时
:CheckParmsFailed
ECHO 无法完成初始化。请查看日志文件:%backupLogFile%
RD /S /Q "%myTempDir%"
GOTO END REM 验证成功
:CheckSuccess REM 完成环境检测和初始化
REM *************************************************************************** REM ***************************************************************************
REM 备份数据库 ECHO %myDate% %TIME% 启动数据库备份脚本...>>"%backupLogFile%" REM 当前备份使用的文件夹
set backupName=%backupFolderPrefix%%myDate% %myTime% REM 根据需要创建专属目录。在分卷压缩或者不压缩时,需要专属目录
IF %enableCompress%==no MD "%backupPath%\%backupName%"
IF %enableCompress%==yes ( IF NOT %volumePackSize%==0 MD "%backupPath%\%backupName%" ) IF "%enableCompress%"=="yes" MD "%myTempDir%\%backupName%" REM 设置数据库备份使用的直接目录
IF "%enableCompress%"=="no" SET backDbTmpPath=%backupPath%\%backupName%
IF "%enableCompress%"=="yes" SET backDbTmpPath=%myTempDir%\%backupName% SET errorFile=%backDbTmpPath%\##BackupFailDbs.txt
SET dbList=%myTempDir%\dblist.txt
SET backmysqlbat=%myTempDir%\bakmysql.bat REM 生成数据库列表文件
ECHO show databases; | mysql -h"%dbhost%" -u"%dbuser%" -p"%dbpwd%" > "%dblist%" SET isExistError=no REM 创建备份MySQL数据库的脚本。
ECHO ECHO 未成功备份的数据库: ^> "%errorFile%" > "%backmysqlbat%"
FOR /f "usebackq skip=1 tokens=*" %%i in ("%dblist%") DO ECHO mysqldump --single-transaction "%%i" -h"%dbhost%" -u"%dbuser%" -p"%dbpwd%" ^> "%backDbTmpPath%\%%i.sql" >>"%backmysqlbat%" && ECHO if not %%errorlevel%%==0 (ECHO %%i ^>^> "%errorFile%" ^& ECHO %myDate% %TIME% 数据库备份失败:%%i^>^>"%backupLogFile%" ^& SET isExistError=yes) >> "%backmysqlbat%" call "%backmysqlbat%" REM 如果不存在错误,删除错误文件。
IF %isExistError%==no DEL "%errorFile%" /Q /F > NUL
IF %enableCompress%==yes GOTO CompressBackup
GOTO BackupFinished REM ****压缩处理****
:CompressBackup
IF %compressType%==rar GOTO RarCompress REM CAB压缩处理
REM 进行CAB压缩。注:makecab,不能在一个压缩包中创建目录。而且需要创建文件列表才能创建多文件压缩包。同时文件名不能重复。
FOR /f "tokens=1* delims=" %%i in ('DIR "%backDbTmpPath%" /S /B /A-D') do echo "%%i" >> "%myTempDir%\cab_files.lst"
SET cabCompressLevel=18
IF %compressLevel%==0 SET cabCompressLevel=15
IF %compressLevel%==0 SET cabCompressLevel=21
REM 切换到零时目录
FOR /F "delims=:" %%i IN ('ECHO %myTempDir%') DO %%i:
CD "%myTempDir%" IF NOT %volumePackSize%==0 GOTO CabSplitCompress
makecab /f "%myTempDir%\cab_files.lst" /d compressiontype=lzx /d compressionmemory=%cabCompressLevel% /d maxdisksize=0 /d diskdirectorytemplate=cabdb /d cabinetnametemplate="%backupName%.cab"
MOVE /Y "%myTempDir%\cabdb\%backupName%.cab" "%backupPath%\"
GOTO BackupFinished :CabSplitCompress
SET /A maxdisksize=%volumePackSize% * 1024
makecab /f "%myTempDir%\cab_files.lst" /d compressiontype=lzx /d compressionmemory=%cabCompressLevel% /d maxdisksize=%maxdisksize% /d diskdirectorytemplate=cabdb /d cabinetnametemplate="%backupName%.part*.cab"
MOVE /Y "%myTempDir%\cabdb\*" "%backupPath%\%backupName%\"
GOTO BackupFinished REM RAR 压缩处理
:RarCompress
SET rarCommand="%rarPath%\rar.exe" a -r -ep1 -o+ -m%compressLevel%
IF NOT %volumePackSize%==0 SET rarCommand=%rarCommand% -v%volumePackSize%
IF NOT %rarPwd%=={empty} SET rarCommand=%rarCommand% -p%rarPwd%
REM 如果未分卷,保存在备份目录的根目录
IF %volumePackSize%==0 SET rarCommand=%rarCommand% "%backupPath%\%backupName%.rar"
REM 如果分卷,保存在根目录下的一个专属文件夹中
IF NOT %volumePackSize%==0 SET rarCommand=%rarCommand% "%backupPath%\%backupName%\%backupName%.rar"
SET rarCommand=%rarCommand% "%backDbTmpPath%\"
%rarCommand%
REM ****完成压缩处理**** :BackupFinished
ECHO %myDate% %TIME% 完成一次自动备份。备份目录:"%backupPath%\%backupName%" >> "%backupLogFile%"
IF %isExistError%==yes ECHO 但是存在没有成功备份的数据库。查看没有成功备份的数据库,请查看文件备份文件夹中的"##BackupFailDbs.txt" >> "%backupLogFile%" REM 完成备份数据库
REM *************************************************************************** REM ***************************************************************************
REM 删除历史备份 :RemoveHistoryBackup
IF %isExistError%==yes ( IF %onErrorDeleteBackFile%==no GOTO ClearTmpFile ) IF %deleteHistorySkips%==0 GOTO ClearTmpFile
IF %enableCompress%==no GOTO RemoveHistoryBackupFolder
IF NOT %volumePackSize%==0 GOTO RemoveHistoryBackupFolder
GOTO RemoveHistoryBackupFile :RemoveHistoryBackupFolder
FOR /F "Skip=%deleteHistorySkips% tokens=*" %%i IN ('DIR "%backupPath%\%backupFolderPrefix%*" /TC /O-D /AD /B') DO RD "%backupPath%\%%i" /S /Q & ECHO %myDate% %TIME% 删除历史备份:%%i >> "%backupLogFile%"
GOTO ClearTmpFile :RemoveHistoryBackupFile
FOR /F "Skip=%deleteHistorySkips% tokens=*" %%i IN ('DIR "%backupPath%\%backupFolderPrefix%*" /TC /O-D /A-D /B') DO DEL "%backupPath%\%%i" /Q /F & ECHO %myDate% %TIME% 删除历史备份:%%i >> "%backupLogFile%"
GOTO ClearTmpFile REM 完成删除历史备份
REM *************************************************************************** :ClearTmpFile
CD \
RD /S /Q "%myTempDir%" > NUL :END
ECHO. >> "%backupLogFile%"
2.工具备份:
(1).MySQL Backup Tool备份 (自动备份、手动备份)
下载地址:
http://www.jb51.net/database/42565.html
下载完后打开如下图:
打开图中标示的文件:
填写配置信息:
保存:保存配置信息;
创建备份:点击后会立即备份;测试使用,查看是否备份成功;
然后可以定时备份:使用系统的任务计划;
(2).mysql workbeach:(手动备份)
Server——》data export(导出)
(3).navicat:(手动备份)
导出向导
转储sql文件
3.web备份:
使用empirebak v2010备份
http://dbmanager.soft.supcon.com/
二.恢复:
1.脚本恢复:
@echo off
mysql -hlocalhost -uzlp -p123 test< D:\zlpBackup-mysql\20150817-test.sql
2.工具恢复:
(1).mysql workbeach:(手动恢复)
Server——》data import(导入)
(2).navicat:(手动恢复)
导入向导
运行sql文件
三.参考:
备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。 mysqldump ---add-drop-table -uusername -ppassword databasename > backupfile.sql 直接将MySQL数据库压缩备份 mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz 备份MySQL数据库某个(些)表 mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql 同时备份多个MySQL数据库 mysqldump -hhostname -uusername -ppassword --databases databasename1 databasename2 databasename3 > multibackupfile.sql 仅仅备份数据库结构 mysqldump --no-data --databases databasename1 databasename2 databasename3 > structurebackupfile.sql 备份服务器上所有数据库 mysqldump --all-databases allbackupfile.sql 还原MySQL数据库的命令 mysql -hhostname -uusername -ppassword databasename < backupfile.sql 还原压缩的MySQL数据库 gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename 将数据库转移到新服务器 mysqldump \-uusername \-ppassword databasename \| mysql \--host=*.*.*.\* \-C databasename 压缩备份 备份并用gzip压缩: mysqldump < mysqldump options> | gzip > outputfile.sql.gz 从gzip备份恢复: gunzip < outputfile.sql.gz | mysql < mysql options> 备份并用bzip压缩: mysqldump < mysqldump options> | bzip2 > outputfile.sql.bz2 从bzip2备份恢复: bunzip2 < outputfile.sql.bz2 | mysql < mysql options>
Data Base mysql备份与恢复的更多相关文章
- Data Base Mysql迁移到SqlServer 2008工具使用方法
Data Base Mysql迁移到SqlServer 2008工具使用方法 一.下载及安装: 二.
- Data Base MySQL的常用命令
MySQL的常用命令 一.下载地址: http://www.mysql.com 二.安装注意: root默认密码:123456 三.常用命令: 1.创建用户并授权: 创建用户,只能本地访问:cr ...
- Data Base mysql批量操作
mysql 批量操作 批量操作数据是利用 CommandBuilder 和 DataAdapter.Update() 方法 对数据库进行批量更新 说解: DataAdapter中有四个重要对象:S ...
- ch5 MySQL 备份与恢复
第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...
- Data Base 关于nosql的讲解
Data Base 关于nosql的讲解 nosql非关系型数据库. 优点: 1.可扩展 2.大数据量,高性能 3.灵活的数据模型 4.高可用 缺点: 1.不正式 2.不标准 非关系型数据库有哪些: ...
- mysql常用操作 mysql备份与恢复
先登录mysql ==>mysql -uroot -p 查看数据库的版本 select version(); 查看有哪些库 show datases; 查看当前处于哪个库 select da ...
- 第 5 章 MySQL 备份与恢复
第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...
- J2EE学习从菜鸟变大鸟之五 JDBC(Java Data Base Connectivity)
JDBC刚开始学习这个的时候看到了,以为是ODBC呢,很是相似啊,总的来说还是基本上一类的东东,但是还有一些细微的区别,下面和大家一起分享学习. JDBC(Java Data Base Connect ...
- JDBC(Java Data Base Connectivity,java数据库连接)
JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...
随机推荐
- 为什么是2MSL而不是MSL?
为什么等待2MSL,从TIME_WAIT到CLOSE? 在Client发送出最后的ACK回复,但该ACK可能丢失.Server如果没有收到ACK,将不断重复发送FIN片段.所以Client不能立即关闭 ...
- Python网络编程中的select 和 poll I/O复用的简单使用
首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select ...
- SQL子查询/嵌套查询
sql子查询 嵌套SELECT语句 嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为 ...
- 得到properties配置文件内容
代码: 1.配置文件内容 2.文件所在项目中位置: 3.java代码: 01.得到键值对: @Test public void getProp() { Properties prop = new Pr ...
- mysql 回顾小练习
Student(id,sname,age,sex) 学生表 Course(id,cname,t_id) 课程表 SC(s_id,c_id,score) 成绩表 Teacher(id,Tname) 教师 ...
- react过渡动画效果的实现,react-transition-group
本文介绍react相关的过渡动画效果的实现 有点类似vue的transition组件,主要用于组件mount和unmount之前切换时应用动画效果 安装 cnpm install react-tran ...
- 第三章 Java内存模型(上)
本章大致分为4部分: Java内存模型的基础:主要介绍内存模型相关的基本概念 Java内存模型中的顺序一致性:主要介绍重排序和顺序一致性内存模型 同步原语:主要介绍3个同步原语(synchroized ...
- 程序中使用log4J打印信息的两种方式
(1)通过org.apache.commons.logging.Log 接口实例化: public static Log log = LogFactory.getLog(String name); p ...
- 10-17C#语句(3)--跳转语句、异常处理语句
回顾: 穷举法(重点掌握):虽然运用for...嵌循环语句,但是也要找到执行for...循环的规律, 即一个题目中,需要得到哪个值,首先定义它初始变量:哪个条件需要改变,它对应的就是for...循环的 ...
- 我的第一个Socket程序-SuperSocket使用入门(一)
第一次使用Socket,遇到过坑,也涨过姿势,网上关于SuperSocket的教程基本都停留在官方给的简单demo上,实际使用还是会碰到一些问题,所以准备写两篇博客,分别来介绍SuperSocket以 ...