首页 > 代码库 > MySQL数据备份与恢复

MySQL数据备份与恢复

**无论备份还是恢复,都要验证用户及权限**


一、数据备份

1、数据备份的备份方式

  物理备份:cp、tar、tar+gzip  —> 兼容性差,目标地址空间大,耗时

         系统自带物理备份工具mysqlhotcopy --> 备份时锁表

逻辑备份:备份产生数据的SQL语句  —> 兼容性好,占用空间小

     系统自带完整备份工具Mysqldump(MySQL-client包产生) --> 备份时锁表


2、数据备份的备份策略

  完整备份: 完全备份,把数据库服务器上的所有库所有表全部备份

  差异备份: 自‘完整备份’之后,叠加备份所有产生的新数据。

  优缺点:备份数据有冗余,占用空间,恢复时方便


例如:第1天做了完整备份,第2天产生3条记录,差异备份时需备份3条记录,第3天产生2条            记录,差异备份时则需备份5条记录  

       完整备份  1条记录    1day     备份1条记录

       差异备份  3条记录    2day     备份3条记录

      2条记录    3day     备份5条记录

……… ……………


  增量备份:‘自上一次备份’之后,备份产生的新数据。

  优缺点:备份节省空间,恢复时调用的文件多

        完整备份  1条记录    1day    1

         增量备份  3        2day    3

     2        3day    2

……… …………


3、工作中通常备份策略用法:

  完整备份+差异备份

  完整备份+增量备份

     

4、备份工具

  1)完整备份工具mysqldump

    **由mysql包提供,数据量不太大时用,

    **备份的时候锁表,备份期间别人不能对备份数据进行操作


格式:mysqldump [–h数据库IP/主机名] -u登录用户名 -p密码 数据库名 > 路径/备份文件名.sql                                                         

不写路径时,默认备份到当前命令所在的目录下

若写路径,需事先创建好

若数据库管理员从本机登录且没有密码:mysqldump 数据库名 >路径/xxx.sql

用来连接数据库的用户要对相应的数据库有权限


数据库名的表示格式:

所有库               --all-databases

指定单个库下的所有表    数据库名

某个库下的某个表      数据库名 表名

备份某几个库           -B 数据库名1  数据库名2  数据库名N

   

例:mysqldump -uroot -p --all-databases > /mysqlbak/alldb.sql //备份数据库服务器上的所有库


解决:将备份写入计划任务后,因备份名一样,会复盖前天的备份,可以用“时间”做备份文件名。


获取时间命令:#date +%F   →2014-07-21

    #date +%T  →17:30:17


mysqldump webdb > webdb-`date +%F`.sql          

mysqldump -h192.168.10.20 -uroot -ptarena webdb > /mysqllog/webdb-`date+%F`.sql //远程备份


二、数据恢复

格式:mysql –h服务器IP/主机名  -u登录用户名 –p密码 数据库名 < 备份文件名  

   mysql 数据库名 < 备份文件名  //若登录数据库不需要用户名密码


注意:恢复数据时候“<”必须写对千万注意不要写反,要是恢复的时候写成“>”那么会自动清除备份文件内容


备份库的时候,前面加-B备份出的文件里面带“创建库”的SQL语句,恢复的时候不用在数据库里在创建库

数据库名是可选项,恢复数据时候必须查看一下备份文件里面的SQL语句,当恢复时使用的备份文件里有建库SQL语句时,数据库名可以省略,反之没有建库SQL语句的时候必须“进数据库里面手动建一个库(库名可以随便写)”然后在恢复的时候写上新建的数据库名


例:

mysql webdb < webdb-2014-01-06.sql               

mysql -h192.168.10.20 -uroot -ptarena webdb < /mysqllog/webdb-2014-01-06.sql                                        

本文出自 “Dave-技术博客” 博客,请务必保留此出处http://davewang.blog.51cto.com/6974997/1858713

MySQL数据备份与恢复