MySQL备份与恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL备份与恢复相关的知识,希望对你有一定的参考价值。

数据库备份的分类

备份方式分很多种,从物理与逻辑的角度,备份分为以下几类:

(1)物理备份:指对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。物理备份又可以分为脱机备份(冷备份)和联机各份(热备份)。

  • 冷备份:在关闭数据库时进行的备份操作,能够较好地保证数据库的完整性。
  • 热备份:在数据库运行状态中进行操作,这种备份方法依赖于数据库的日志文件。

(2)逻辑备份:指对数据库逻辑组件(如表等数据库对象)的备份。

从数据库的备份策略角度,备份可分为完全备份、差异备份和增量备份。

(1)完全备份:每次对数据进行完整的备份。可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,做一次完全备份的周期要长些。

(2)差异备份:备份那些自从上次完全备份之后被修改过的文件,只备份数据库部分的内容。它比最初的完全备份小,因为只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。

(3)增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。

mysqldump备份演练

MySQL数据库的备份可以采用两种方式,因为数据库实际上就是文件,直接打包数据库文件夹,或者是使用专门备份工具mysqldump都可以进行备份工作

一、使用tar打包文件夹备份
1、安装xz压缩格式工具

MySQL的数据库文件默认都是保存在安装目录的data文件夹下面,可以直接保存data文件夹,但是占用的空间较大,可以使用tar打包压缩进行保存。

数据库文件很大,可以使用压缩率较大的xz格式压缩,首先需要安装xz压缩格式工具

yum install xz -y
2、对数据库文件夹/usr/local/mysql/data/进行打包操作
tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/      //将/usr/local/mysql/data/目录下所有内容进行备份到/opt目录下以带日期格式命名
3、如果数据库文件损坏数据丢失,可以解压缩备份文件,相当于做了数据的恢复工作。
tar Jxvf /opt/mysql-2018-07-18.tar.xz /usr/local/mysql/data/
二、使用mysqldump工具备份
1、查看/usr/local/mysql/data/目录下,暂时没有新的文件

技术分享图片

2、进数据库,创建school数据库,创建info数据表,并添加几条记录
mysql -u root -p     //以管理员身份进入数据库
create database school;      //创建school数据库
use school;       //进入school数据表
create table info (id int(4) primary key,name varchar(10) not null);       //创建info数据表
#添加三条记录
insert into info (id,name) values (1,‘jack‘); 
insert into info (id,name) values (2,‘tom‘);
insert into info (id,name) values (3,‘xxy‘);
mysql> select * from info;         //查看info表的信息
+----+------+
| id | name |
+----+------+
|  1 | jack |
|  2 | tom  |
|  3 | xxy  |
+----+------+

技术分享图片

3、退出数据库,再到/usr/local/mysql/data/目录下,可看到有school文件夹

技术分享图片

4、我们可进行如下一系列备份操作
mysqldump -u root -p school > /opt/school.sql     //将school数据库备份到/opt目录下命名为school.sql

#若有多个数据库需要备份,则使用如下命令
mysqldump -u root -p --databases school01 school02 > /opt/school.sql      //备份school01 school02两个数据库
#可使用如下命令备份所有数据库
mysqldump -u root -p --opt --all-databases > /opt/all.sql     //备份所有数据库

#还可以对表结构进行备份
mysqldump -u root -p -d school info > /opt/desc-info.sql //备份school数据库中info表结构

mysqldump -u root -p school info > /opt/info.sql //备份school数据库中的info表

技术分享图片

四、恢复

若原本数据库内数据损坏,想将备份的数据导回,需要建立空数据库才可导回,或者将原本损坏数据库删除,建立同名数据库导回数据
技术分享图片

mysql -u root -p school < /opt/info.sql  //将/opt/info.sql表导回数据库school中

技术分享图片

回到数据库查看,可看到原来的数据已恢复
技术分享图片

以上是关于MySQL备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

详解Mysql自动备份与恢复的几种方法(图文教

MySQL备份与恢复

Mysql备份与恢复

MySQL备份与恢复

MySQL备份与恢复

Mysql 备份恢复与 xtrabackup备份