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备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章