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备份与恢复的更多相关文章

  1. Data Base Mysql迁移到SqlServer 2008工具使用方法

    Data Base  Mysql迁移到SqlServer 2008工具使用方法 一.下载及安装: 二.

  2. Data Base MySQL的常用命令

       MySQL的常用命令 一.下载地址: http://www.mysql.com 二.安装注意: root默认密码:123456 三.常用命令: 1.创建用户并授权: 创建用户,只能本地访问:cr ...

  3. Data Base mysql批量操作

    mysql  批量操作 批量操作数据是利用 CommandBuilder  和 DataAdapter.Update() 方法 对数据库进行批量更新 说解: DataAdapter中有四个重要对象:S ...

  4. ch5 MySQL 备份与恢复

    第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...

  5. Data Base 关于nosql的讲解

    Data Base  关于nosql的讲解 nosql非关系型数据库. 优点: 1.可扩展 2.大数据量,高性能 3.灵活的数据模型 4.高可用 缺点: 1.不正式 2.不标准 非关系型数据库有哪些: ...

  6. mysql常用操作 mysql备份与恢复

    先登录mysql  ==>mysql -uroot -p  查看数据库的版本 select version(); 查看有哪些库 show datases; 查看当前处于哪个库 select da ...

  7. 第 5 章 MySQL 备份与恢复

    第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...

  8. J2EE学习从菜鸟变大鸟之五 JDBC(Java Data Base Connectivity)

    JDBC刚开始学习这个的时候看到了,以为是ODBC呢,很是相似啊,总的来说还是基本上一类的东东,但是还有一些细微的区别,下面和大家一起分享学习. JDBC(Java Data Base Connect ...

  9. JDBC(Java Data Base Connectivity,java数据库连接)

    JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...

随机推荐

  1. Linux之时间、地点、人物、事件、情节

    时间 date 显示当前时间 time cmd 显示 cmd的运行时间 地点 locate 根据文件名,迅速找到文件.基于系统构建的索引 find 根据各种规则找到文件,更强大,但比较慢 wherei ...

  2. [转]A记录和CNAME记录的区别

    1.什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程.IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址.域名的解 ...

  3. 为什么很多公司招聘前端开发要求有 Linux / Unix 下的开发经验?

    知乎: http://www.zhihu.com/question/19666395

  4. 编译使用CEF2623遇到的错误解决办法

    https://cmake.org/download/win10的同学注意了按右键以管理员模式启动cmake-gui.exe在Where is the source code:里填上你解压的CEF3路 ...

  5. Poj 1631 Bridging signals(二分+DP 解 LIS)

    题意:题目很难懂,题意很简单,求最长递增子序列LIS. 分析:本题的最大数据40000,多个case.用基础的O(N^2)动态规划求解是超时,采用O(n*log2n)的二分查找加速的改进型DP后AC了 ...

  6. PHP5之前的构造函数与PHP5之后的构造函数的区别

    在PHP5以前的版本中,构造函数的名称必须与类名相同,这种方法在PHP5中仍然可以使用,但现在已经很少有人用了. PHP5以及之后的版本,构造函数用__construct()方法来声明,这样做的好处是 ...

  7. 获得Oracle中刚插入的数据的ID(for produce)

    在sql sever中实现插入数据的自动增长是很容易的,但是在oracle数据库中实现这一操作不是很容易,同时要想在.net中实现获取新插入数据的id,而 且不会出现读错的情况,就更显得困难了,为了解 ...

  8. Oracle 内存结构

     内存结构 Oracle内存,进程与数据库的图 sga:系统全局区,用来存放操作的数据,库缓存,数据字典等控制信息的内存区域, pga:进程全局区,服务进程专用的内存区域,大多数内容非共享 uga:用 ...

  9. Android SDK下载项的说明

    Tools下 1.android sdk tools 软件开发工具包(software development kit):包括测试.调试.第三方工具.模拟器.数据管理工具等. 2.android sd ...

  10. 此上下文中不允许异步操作。启动异步操作的页必须将 Async 特性设置为 true,并且异步操作只能在 PreRenderComplete 事件之前的页上启动。

    <%@ Page Language="C#" AutoEventWireup="true" ...... Async="true" % ...