大家好,又见面了,我是你们的朋友全栈君。
目录
前言
一、MySQL 完全备份
1.数据库备份方式精讲
1.1 数据库备份的重要性
1.2 数据库备份的分类
1.3 MySQL 完全备份概念解读
2.mysqldump 备份演练
2.1 使用 tar 打包文件夹备份
2.2 使用 mysqldump 工具备份
二、MySQL 完全恢复
1.恢复整库操作
1.1 source 命令整库恢复
1.2 MySQL 命令整库恢复
2.恢复表操作
2.1 使用 source 命令恢复表
总结
随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数据库作为信息系统的核心,担当者重要的角色 数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段 一个合理的数据库备份方案,能够在数据丢失时,有有效地恢复数据,而且也需要考虑技术实现难度和有效地利用资源
生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果
数据库备份的重要性主要体现在:
使用数据库的过程中,有多种原因造成数据的丢失:
备份方式分很多种,从物理与逻辑的角度,备份可分为以下几类:
1.2.1 物理备份
1.2.2 逻辑备份
从数据库的备份策略角度来看,备份又可分为完全备份、差异备份和增量备份
1.2.3 完全备份
1.2.4 差异备份
1.2.5 增量备份
1.2.6 备份方式比较
备份方式 | 完全备份 | 差异备份 | 增量备份 |
---|---|---|---|
完全备份时的状态 | 表1、表2 | 表1、表2 | 表1、表2 |
第1次添加内容 | 创建表3 | 创建表3 | 创建表3 |
备份内容 | 表1、表2、表3 | 表3 | 表3 |
第2次添加内容 | 创建表4 | 创建表4 | 创建表4 |
备份内容 | 表1、表2、表3、表4 | 表3、表4 | 表4 |
MySQL 的数据库文件默认都是保存在安全目录的 data 文件夹下,可以直接保存 data 文件夹,因为占用空间较大,可以使用data 打包压缩进行保存
yum -y install xz
#数据库文件很大,可以使用压缩率较大的xz格式压缩,首选需要安装xz压缩格式工具
tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/
#对数据库文件夹进行打包操作
ls /opt
#查看打包命令是否运行成功,已经生成了备份文件
du -sh /opt/mysql-2021-10-26.tar.xz
#对比打包前后的文件大小,可以看到压缩的备份文件所占用空间很小
tar -Jxvf /opt/mysql-2021-10-26.tar.xz -C /usr/local/mysql/data/
systemctl restart mysql
#如果数据库文件损坏数据丢失,可以解压缩文件,相当于数据恢复
#开始之前,创建库和表,用作例子
mysql -uroot -p123123
#输入密码进入数据库,以上为我的密码
create database SCHOOL;
#创建库
use SCHOOL;
create table CLASS01 ( id int(2) not null auto_increment, name varchar(10) not null, sex char(5) not null, hobby varchar(10), primary key (id));
#创建表结构
#字段一:id,最大显示长度2,不能为空,自动递增从1开始
#字段二:name,可变长度字段,10,不能为空
#字段三:sex,固定长度5,不能为空
#字段四:hobby,可变长度,最多10字符
#字段四:主键(id)
insert into CLASS01 values(1,'wangyi','man','reading');
insert into CLASS01 values(2,'wanger','woman','singing');
#插入2条数据
select * from CLASS01;
#检查一下
quit
#退出数据库
#使用 mysqldump 对某些表进行完全备份,命令格式如下:
mysqldump -u[用户名] -p[密码] [选项] [数据库名] [数据表名] > /备份路径/备份文件名.sql
#导出的为数据库脚本文件
例:对库SCHOOL中的表class进行备份至/opt/目录下
mysqldump -uroot -p[密码] SCHOOL CLASS01 > /opt/test01.sql
#对某些库进行完全备份
mysqldump -uroot -p[密码] [数据库名] > /目录/备份文件名.sql
例:
mysqldump -uroot -p123123 SCHOOL > /opt/test02
#对多个库进行完全备份
mysqldump -uroot -p123123 --databases SCHOOL sys > /opt/test03.sql
#对所有库进行完全备份
mysqldump -uroot -p123123 --all-databases > /opt/test04.sql
#直接备份表结构
mysqldump -uroot -p123123 -d SCHOOL CLASS01 > /opt/test05.sql
ls /opt/
#查看打包命令是否运行成功,已经生成了备份文件
cat /opt/test05.sql
#分析 mysqldump 工具生成的备份文件的内容
cat /opt/test01
mysql -uroot -p123123
show databases;
drop database SCHOOL;
show databases;
source /opt/test03.sql
#之前备份过的,该备份为SCHOOL和sys两个库的完整备份
#注意!选项得加“--databases”才是完整的备份,不然会恢复不了
quit
mysql -uroot -p123123 -e 'drop database SCHOOL;'
mysql -uroot -p123123 -e 'SHOW DATABASES;'
mysql -uroot -p123123 < /opt/test03.sql
mysql -uroot -p123123 -e 'SHOW DATABASES;'
mysql -uroot -p123123
use SCHOOL;
show tables;
drop table CLASS01;
source /opt/test01.sql
#恢复表
show tables;
select * from CLASS01;
#查看
2.2 使用 mysql 命令恢复表
quit
mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
mysql -uroot -p123123 -e 'DROP TABLES SCHOOL.CLASS01;'
mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
mysql -uroot -p123123 SCHOOL < /opt/test01.sql
mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
MySQL 需要定期实施备份,指定合适的备份计划或策略,并严格遵守 除了进行完全备份,开启 MySQL 服务器的日志功能也很重要,完全备份加上日志,可以对 MySQL 进行最大化还原 备份文件的名字还需钥使用统一的易于理解的名称,推荐使用库名或表名加上时间的命名规则,在需要恢复数据库时能很容易的定位到相应的所需备份文件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146647.html原文链接:https://javaforall.cn