随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数据库作为信息系统的核心,担当者重要的角色,数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段,一个合理的数据库备份方案,能够在数据丢失时,有有效地恢复数据,而且也需要考虑技术实现难度和有效地利用资源
备份的主要目的就是灾难恢复
在生产环境中,数据的安全性至关重要
任何数据的丢失都可能产生严重的后果
造成数据丢失的原因
程序错误
人为操作错误
运算错误
磁盘故障
灾难(天灾)和盗窃
物理备份:对数据操作系统的物理文件(数据文件、日志文件等)的备份,方法有:
逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份
①物理冷备
②专用备份工具mydump或mysqlhotcopy
③启用二进制日志进行增量备份
④第三方工具备份
完全备份时对整个数据库、数据库结构和文件结构的备份
保存的时备份完成时刻的数据
是差异备份和增量备份的基础
优点:备份与恢复操作简单方便
缺点:数据存在大量的重复、占用大量的备份空间、备份与恢复时间长
systemctl stop mysqld
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-24.tar.xz
#对比打包前后的文件大小,可以看到压缩的备份文件所占用空间很小
tar -Jxvf /opt/mysql-2021-10-24.tar.xz -C /usr/local/mysql/data/
systemctl restart mysql
#如果数据库文件损坏数据丢失,可以解压缩文件,相当于数据恢复
#开始之前,创建库和表,用作例子
mysql -uroot -p123123
#输入密码进入数据库,以上为我的密码
create database puxinL;
#创建库
use puxin;
create table club ( id int not null auto_increment, name varchar(10) not null, age char(5) not null, hobby varchar(10), primary key (id));
#创建表结构
#字段一:id,最大显示长度2,不能为空,自动递增从1开始
#字段二:name,可变长度字段,10,不能为空
#字段三:sex,固定长度5,不能为空
#字段四:hobby,可变长度,最多10字符
#字段四:主键(id)
insert into club values(1,'大潘','22','洗脚');
insert into club values(2,'徐舔舔','23','舔狗');
insert into club values(3,'汪汪','24','弹琴');
insert into club values(4,'吴工','25','买买买');
insert into club values(5,'姜姜','26','骂人');
#插入2条数据
select * from club;
#检查一下
quit
#退出数据库
/#使用 mysqldump 对某些表进行完全备份,命令格式如下:
mysqldump -u[用户名] -p[密码] [选项] [数据库名] [数据表名] > /备份路径/备份文件名.sql
/#导出的为数据库脚本文件
例:对库puxin中的表club进行备份至/opt/目录下
mysqldump -uroot -p[密码] puxin club > /opt/xjj.sql
#对某些库进行完全备份
mysqldump -uroot -p[密码] [数据库名] > /目录/备份文件名.sql
例:
mysqldump -uroot -p123123 puxin > /opt/xjj
#对多个库进行完全备份
mysqldump -uroot -p123123 --databases puxin sys > /opt/xjj1.sql
#对所有库进行完全备份
mysqldump -uroot -p123123 --all-databases > /opt/xjj2.sql
#直接备份表结构
mysqldump -uroot -p123123 -d puxin club > /opt/xjj3.sql
ls /opt/
#查看打包命令是否运行成功,已经生成了备份文件
cat /opt/xjj3.sql
#分析 mysqldump 工具生成的备份文件的内容
cat /opt/xjj1
mysql -uroot -p123123
show databases;
drop database puxin;
show databases;
source /opt/xjj1.sql
#之前备份过的,该备份为SCHOOL和sys两个库的完整备份
#注意!选项得加“--databases”才是完整的备份,不然会恢复不了
quit
mysql -uroot -p123123 -e 'drop database puxin;'
mysql -uroot -p123123 -e 'SHOW DATABASES;'
mysql -uroot -p123123 < /opt/xjj2.sql
mysql -uroot -p123123 -e 'SHOW DATABASES;'
mysql -uroot -p123123
use puxin;
show tables;
drop table club;
source /opt/xjj.sql
#恢复表
show tables;
select * from club;
#查看
quit
mysql -uroot -p123123 -e 'SHOW TABLES FROM puxin;'
mysql -uroot -p123123 -e 'DROP TABLES puxin.club;'
mysql -uroot -p123123 -e 'SHOW TABLES FROM puxin;'
mysql -uroot -p123123 puxin < /opt/xjj.sql
mysql -uroot -p123123 -e 'SHOW TABLES FROM puxin;'
①MySQL 需要定期实施备份,指定合适的备份计划或策略,并严格遵守
②除了进行完全备份,开启 MySQL 服务器的日志功能也很重要,完全备份加上日志,可以对 MySQL 进行最大化还原
③备份文件的名字还需钥使用统一的易于理解的名称,推荐使用库名或表名加上时间的命名规则,在需要恢复数据库时能很容易的定位到相应的所需备份文件
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_53560205/article/details/120938766
内容来源于网络,如有侵权,请联系作者删除!