第四节:MySQL的备份和恢复详解
一. 简介
1. 备份分类
备份类型可以分为物理备份和逻辑备份两种。
(1). 物理备份:是指通过拷贝数据库文件的方式完成备份,这种备份方式适用于数据库很大,数据重要且需要快速恢复的数据库。
(2). 逻辑备份:是指通过备份数据库的逻辑结构(create database/table语句) 和 数据内容(insert语句或者文本文件)的方式完成备份。这种备份方式适用于数据库不是很大,或者你需要对导出的文件做一定的修改,又或者是希望在另外的不同类型服务器上重新建立此数据库的情况。
(3). 对比:
通常情况下物理备份的速度要快于逻辑备份,另外物理备份的备份和恢复粒度范围为整个数据库或者是单个文件。对单表是否有恢复能力取决于存储引擎,比如在MyISAM存储引擎下每个表对应了独立的文件,可以单独恢复;但对于InnoDB存储引擎表来说,可能每个表示
对应了独立的文件,也可能表使用了共享数据文件。物理备份通常要求在数据库关闭的情况下执行,但如果是在数据库运行情况下执行,则要求备份期间数据库不能修改。
注:MyISAM的表天生就分成了三个独立的数据文件(*.frm, *.MYD, and *.MYI),可以直接拷贝;InnoDB不支持拷贝表级别或者DB级别的拷贝,但是InnoDB可以直接把Data文件夹整体拷贝,也就是将所有的数据库都拷贝了。
逻辑备份的速度要慢于物理备份,是因为逻辑备份需要访问数据库并将内容转化成逻辑备份需要的格式;通常输出的备份文件大小也要比物理备份大;另外逻辑备份也不包含数据库的配置文件和日志文件内容;备份和恢复的粒度可以是所有数据库,也可以是单个数据库,也
可以是单个表;逻辑备份需要再数据库运行的状态下执行;它的执行工具可以是mysqldump或者是select … into outfile两种方式。
2. 其他分类说明
(1). 备份又可以分为在线备份和离线备份两种,在线备份是指在数据库运行的状态下执行的备份,而离线备份是指在数据库关闭情况下执行的备份。
(2). 备份还可以分为本地备份和远程备份两种,本地备份是指备份是在和当前MySQL运行的相同主机上发起和执行,远程备份是指备份是在和当前MySQL运行的不同主机上发起和执行。
比如mysqldump命令可以连接本机MySQL,也可以连接远程MySQL;在比如select …into outfile命令可以通过本地或者远程的MySQL客户端执行,但生成的文件则会存放在MySQL实例运行的主机上。
对物理备份来说启动备份的过程是MySQL实例主机,但备份的地址有可能是远程的某个。存储
(3).备份还可以分为全量备份和增量备份两种,全量备份是指备份中包含所有的数据,而增量备份是指备份中仅包含在某个指定时间段内的变化情况。
全量备份的方法正如之前说到的物理备份和逻辑备份方式,而增量备份的方法在MySQL中需要借助二进制日志完成。
3. 恢复
恢复类型分为全量恢复和基于时间点恢复两种。全量恢复是指将备份文件中所有的数据都进行恢复,恢复完成之后的数据就是为生成备份的那一刻的数据状态,而基于时间点的恢复是指将数据库恢复到指定的某个时间点的状态,通常需要依赖二进制日志将指定时间点前的所有数据库操作都重新操作一遍。
基于时间点的恢复是将数据库恢复到指定的时间点状态,通常是先通过全量恢复的方式先将数据库恢复到上一个全量恢复的时间点,然后再利用二进制日志恢复到指定的时间点,Mysqlbinlog工具可以用来解析二进制日志的内容,让日志可以被执行或者是查看。
二. 指令操控--待补充
1. Mysqldump指令
2. Select … into outfield指令
3. Xtrabackup工具
Xtrabackup是一个对Mysql做数据备份的工具,支持在线热备份(备份时不影响数据读写),Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中innobackupex已经逐渐被xtrabackup取代
特点:
(1). 备份过程快速、可靠;
(2). 备份过程不会打断正在执行的事务;
(3). 能够基于压缩等功能节约磁盘空间和流量;
(4). 自动实现备份检验;
(5). 还原速度快
下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup- 2.4.9/binary/tarball/percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz tar -zxvf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz cp xtrabackup-2.4.9/bin/* /usr/bin/
4. mysqlbinlog 基于时间点恢复
三. Navicat客户端操控
这里主要通过Navicat Premium 15 工具进行备份和恢复
1. 方案一: 备份和还原
(1). 选择数据库下面的备份,右键→新建备份,如下图,根据需要选择需要备份的表、视图、函数、事件等,最后点击备份按钮。
(2). 在备份选项卡下会产生一条记录,右键→在文件夹中显示→则可以找到这个后缀为 .nb3 的备份文件,将其拷贝到指定位置即可。
(3). 新建一个数据库,如TestDB3,选择下面的备份,右键还原备份从→选择xxxx.nb3备份文件,点击还原即可。
2. 方案二:转存SQL和运行SQL
(1). 选中数据库,右键→选择【转存SQL文件】→选择【结构和数据】(也可以只选择结构)→选择生成SQL存放的位置 。
PS:生成的SQL文件包含创建表和插入数据的指令,不含创建DB的指令,所以下面恢复的时候要,先创建一个空数据库。
(2). 新建一个空数据库(TestDB2),右键→运行SQL文件→选择刚才生成的SQL文件,点击开始即可。
注:这种模式适合数据量比较小的场景。
!
- 作 者 : Yaopengfei(姚鹏飞)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 声 明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
- 声 明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。