先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
正文
1.优点
备份与恢复操作简单方便。
2.缺点
(1)数据存在大量的恢复。
(2)占用大量的备份空间。
(3)备份与恢复时间长。
3.数据库完全备份分类
(1)物理冷备份与恢复
1)关闭MySQL数据库。
2)使用tar命令直接打包数据库文件夹。
3)直接替换现有MySQL目录即可。
(2)mysqldump备份与恢复
直接替换现有MySQL目录即可。
(3)mysqldump备份与恢复
1)MySQL自带的备份工具,可方便实现对MySQL的备份。
2)可以将指定的库、表导出为SQL脚本。
3)使用命令mysql导入备份的数据。
五、MySQL完全备份与恢复
1.环境准备
use 数据库名;
create table if not exists info1 (
id int(4) not null auto_ increment,
name varchar(10) not null,
age char(10) not null,
hobby varchar (50),
primary key (id));
insert into info1 values(1, 'user1' ,20, 'running');
insert into info1 values (2, 'user2',30, 'singing');
2.备份与恢复
InnoDB 存储引擎的数据库在磁盘上存储成三个文件: db.opt (表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件)。
(1)物理冷备份与恢复
systemctl stop mysqld
yum -y install xz
(2)压缩备份
tar Jcvf /opt/mysql_all_ $(date +%F) .tar.xz /usr/local/mysql/data/
mv /usr/local/mysql/data/ /opt/
(3)解压恢复
tar jxvf /opt/mysql_all_2022-9-17.tar.xz -C /usr/local/mysql/data/
cd /usr/local/mysql/data
mv /usr/local/mysql/data/* ./
如果重启失败更改data的权限
3.mysqldump备份与恢复(温备份)
(1)完全备份一个或多个完整的库(包括其中所有的表)
mysqldump -u root -p[密码] --databases 库名1 [库名2] ... > /备份路径/ 备份文件名.sql
导出的就是数据库脚本文件
例:
mysqldump -u root -p --databases 数据库名 > /opt/数据库名. sql
备份一个数据库
mysqldump -u root -p --databases mysql 数据库名 > /opt/mysql-数据库名.sql
备份mysql与另一个数据库两个库
(2)完全备份MySQL服务器中所有的库
mysqldump -u root -p[密码] --all-databases > / 备份路径/备份文件名.sql
例:
mysqldump -u root -P --all-databases > /opt/all.sql
(3)完全备份指定库中的部分表
mysqldump -u root -p[密码] 库名[表名1] [表名2] ... > /备份路径/备份文件名.sql
例:
mysqldump -u root -p [-d] 数据库名 info1 info2 > /opt/库名_info1. sql
使用“-d”选项,说明只保存数据库的表结构
不使用“-d"选项,说明表数据也进行备份
做为一个表结构模板
(4) 查看备份文件
grep -v "^--" /opt/库名_info1.sql | grep -v "^/" | grep -v "^$"
六、MySQL物理冷备份及恢复
先备份数据库中的数据打包,模拟数据丢失,损坏,利用备份打包恢复数据。
1.物理冷备份
1)先关闭数据库,之后打包备份。
2)恢复数据库。
3)恢复数据库,采用将备份数据mv成线上库文件夹的方式。
(1)创建数据库数据
mysql -uroot -p密码 登录数据库
mysql> create database 数据库名; 创建数据库
mysql> use 库名; 使用数据库
mysql> create table a(id int(10)); 创建数据库并设置数据
mysql> desc a; 描述表a的结构
mysql> exit 退出
(2)进行数据备份打包
systemctl stop mysqld 关闭数据库
tar zcvf /opt/mysql_all-$(date +%F).tar.gz /usr/local/mysql/data/ 源文件来源路径
备份打包所有数据库,当天日期
cd /opt/
ls -lh 查看文件
(3)模拟数据丢失,损坏
systemctl start mysqld 开启数据库
mysql -uroot -p密码 登录数据库
mysql> show databases; 查看数据库信息
mysql> drop database 数据库名; 删除数据库
mysql> show databases; 查看数据库
mysql> exit
(4)恢复数据
systemctl stop mysqld 关闭数据库
cd /opt/
tar zxvf mysql_all-2020-12-24.tar.gz 解压缩
ls -lh
mkdir mysql_old 创建目录
mv /usr/local/mysql/data/ mysql_old/
剪切在备份完成之前产生的数据
mv usr/local/mysql/data/ /usr/local/mysql/
cd /usr/local/mysql/
ls -lh
cd
systemctl start mysqld 开启数据库
mysql -uroot -p密码 登录数据库
mysql> show databases; 查看数据库信息 ,数据恢复
mysql> use 库名; 使用数据库
mysql> show tables; 查看表
mysql> desc a; 模式表结构
mysql> exit 退出
七、MySQL完全备份与恢复
InnoDB 存储引擎的数据库在磁盘上存储成三个文件: db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件)。
1.mysqldump 备份与恢复
(1)完全备份一个或多个完整的库 (包括其中所有的表)
mysqldump -u root -p[密码] --databases 库名1 [库名2] ... > /备份路径/备份文件名.sql
导出的就是数据库脚本文件
例:
mysqldump -u root -p --databases 库名 > /opt/库名.sql 备份一个gcc库
mysqldump -u root -p --databases mysql 库名 > /opt/mysql-库名.sql 备份mysql与 gcc两个库
(2)完全备份 MySQL 服务器中所有的库
mysqldump -u root -p[密码] --all-databases > /备份路径/备份文件名.sql
例:
mysqldump -u root -p --all-databases > /opt/all.sql
(3)完全备份指定库中的部分表
mysqldump -u root -p[密码] 库名 [表名1] [表名2] ... > /备份路径/备份文件名.sql
例:
mysqldump -u root -p [-d] 库名 info1 info2 > /opt/gcc_info1.sql
使用“-d”选项,说明只保存数据库的表结构
不使用“-d"选项,说明表数据也进行备份
2.恢复数据库
(1)使用mysqldump导出的文件,可使用导入的方法。
source命令
mysql命令
(2)使用source恢复数据库的步骤
登录到MySQL数据库
执行source备份sql脚本的路径
(3)source恢复的示例
MySQL [(none)]> source /backup/all-data.sql
3.使用source命令恢复数据
(1)模拟数据库出现问题
mysql -uroot -p密码 登录数据库
mysql> show databases; 查看数据库信息
mysql> drop database 库名; 删除数据库
mysql> show databases;
(2)应用
1)创建备份(对表进行备份)
mysqldump -uroot -p密码 库名 info > /opt/info.sql
mysql -uroot -p密码 登录数据库查看
2)恢复数据表
mysql> source /opt/info.sql
mysql> select * from info; 查询所有字段
mysql> show tables; 查看表信息
3)方法2
mysqldump -uroot -p密码 库名 info >/abc/库名.info.sql
mysql -uroot -p密码 -e 'drop table 库名.info;'
mysql -uroot -p密码 -e 'show tables from 库名;'
mysql -uroot -p密码 库名 < /abc/库名.info.sql
mysql -uroot -p密码 -e 'show tables from 库名'
mysqldump 严格来说属于温备份,会需要对表进行写入的锁定
八、MySQL 增量备份与恢复
1.MySQL数据库增量恢复
(1)一般恢复
将所有备份的二进制日志内容全部恢复。
(2)基于位置恢复
1)数据库在某一时间点可能既有错误的操作也有正确的操作。
2)可以基于精准的位置跳过错误的操作。
3)发生错误节点之前的一个节点,上一次正确操作的位置点停止。
(3)基于时间点恢复
1)跳过某个发生错误的时间点实现数据恢复。
2)在错误时间点停止,在下一个正确时间点开始。
2.MySQL 增量备份
(1)开启二进制日志功能
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED 可选,指定二进制日志(binlog)的记录格式为MIXED(混合输入)
server-id = 1 可加可不加该命令
二进制日志(binlog)有3种不同的记录格式: STATEMENT (基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT。
1)STATEMENT(基于SQL语句):
①每一条涉及到被修改的sql 都会记录在binlog中。
②缺点:日志量过大,如sleep()函数,last_insert_id()>,以及user-defined fuctions(udf)、主从复制等架构记录日志时会出现问题。
2)ROW(基于行)
①只记录变动的记录,不记录sql的上下文环境。
②缺点:如果遇到update…set…where true 那么binlog的数据量会越来越大。
create table info
insert into info values(1,'自定义');
insert into info values(2,'自定义');
delete id=其中一个
3)MIXED 推荐使用
一般的语句使用statement,函数使用ROW方式存储。
systemctl restart mysqld
4)查看二进制日志文件的内容
cp /usr/local/mysql/data/mysql-bin.000002 /opt/
mysqlbinlog --no-defaults /opt/mysql-bin.000002
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
--base64-output=decode-rows:使用64位编码机制去解码(decode)并按行读取(rows)
-v: 显示详细内容
--no-defaults : 默认字符集(不加会报UTF-8的错误)
PS: 可以将解码后的文件导出为txt格式,方便查阅
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002 > /opt/mysql-bin.000002
5)二进制日志中需要关注的部分
①at :开始的位置点
②end_log_pos:结束的位置 position (位置点)
③时间戳: 210712 11:50:30
④SQL语句
(2)进行完全备份
mysqldump -uroot -p school info > /opt/库名_info1_$(date +%F).sql
mysqldump -uroot -p密码 库名 > /opt/库名_all_$(date +%F).sql
可每天进行增量备份操作,生成新的二进制日志文件(例如:mysql-bin.000002)
mysqladmin -u root -p flush-logs
1)插入新数据,以模拟数据的增加或变更
PS:在第一次完全备份之后刷新二进制文件,在第二个二进制文件中记载着"增量备份的数据"
create database 数据库名;
use 库名;
create table test1 (id int(2),name varchar(4));
insert into test1 values(1,'one');
insert into test1 values(2,'two');
select * from test1;
再次生成新的二进制日志文件(例如:mysql-bin.000003)
mysqladmin -u root -p flush-logs
之前的步骤的数据库操作会保存到mysql-bin.000002文件中,之后测试删除数据库的操作会保存在mysql-bin.000003文件中 (以免当基于mysql-bin.000002日志进行恢复时,依然会删除库)
3.MySQL增量恢复
(1)一般恢复
1)模拟丢失更改的数据的恢复步骤(直接使用恢复即可)
① 备份数据库库中test1表
mysqldump -uroot -p密码 库名 test1 > /opt/库名_test1.sql
② 删除数据库中test1表
drop table 表名.test1;
③ 恢复test1表
mysql -uroot -p 库名 < info-年-月-日.sql
查看日志文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002
2)模拟丢失所有数据的恢复步骤
模拟丢失所有数据
mysql -uroot -p密码
show databases;
exit
基于mysql-bin.000002恢复
mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p
(2)断点恢复
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
(3)基于位置恢复
1)插入三条数据
use 数据库;
select * from test1;
insert into test1 values(3,'true');
insert into test1 values(4,'f');
insert into test1 values(5,'t');
select * from test1;
2)确认位置点,刷新二进制日志并删除test1表
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
模拟丢失所有数据
mysql -uroot -p密码
show databases;
exit
基于mysql-bin.000002恢复
mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p
(2)断点恢复
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
(3)基于位置恢复
1)插入三条数据
use 数据库;
select * from test1;
insert into test1 values(3,'true');
insert into test1 values(4,'f');
insert into test1 values(5,'t');
select * from test1;
2)确认位置点,刷新二进制日志并删除test1表
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-OzOPDO5D-1713311485673)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!