Rumah > Artikel > pangkalan data > MySQL 介绍完全备份与恢复
免费学习推荐:mysql视频教程
文章目录
前言
一、MySQL 完全备份
1.数据库备份方式精讲
1.1 数据库备份的重要性
生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果
数据库备份的重要性主要体现在:
- 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据库备份就没法找到数据
- 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案,如果让用户重新添加数据,代价未免太大
- 没有数据就没有一切,数据库备份是一种防范灾难的强力手段
使用数据库的过程中,有多种原因造成数据的丢失:
- 程序错误:指对数据库操作的程序难免有些错误,造成数据丢失
- 人为错误:指由于使用人员的误操作造成的数据被破坏,还有可能是黑客对系统攻击造成的数据丢失等
- 计算机失败:指运行数据库的服务器操作系统或软件损坏,有可能造成数据的损坏
- 磁盘失败:指硬盘等存储数据的硬件设备,长时间运行后可能损坏,造成数
据丢失- 灾难(如火灾、地震)和偷窃:指自然灾害等的发生,有可能造成数据丢失
备份方式分很多种,从物理与逻辑的角度,备份可分为以下几类:
从数据库的备份策略角度来看,备份又可分为完全备份、差异备份和增量备份
备份方式 | 完全备份 | 差异备份 | 增量备份 |
---|---|---|---|
完全备份时的状态 | 表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 |
1.3 MySQL 完全备份概念解读
2.mysqldump 备份演练
2.1 使用 tar 打包文件夹备份
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-02-05.tar.xz #对比打包前后的文件大小,可以看到压缩的备份文件所占用空间很小tar -Jxvf /opt/mysql-2021-02-05.tar.xz -C /usr/local/mysql/data/systemctl restart mysql#如果数据库文件损坏数据丢失,可以解压缩文件,相当于数据恢复
2.2 使用 mysqldump 工具备份
#开始之前,创建库和表,用作例子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.sqlls /opt/#查看打包命令是否运行成功,已经生成了备份文件
cat /opt/test05.sql#分析 mysqldump 工具生成的备份文件的内容
cat /opt/test01
二、MySQL 完全恢复
1.恢复整库操作
1.1 source 命令整库恢复
mysql -uroot -p123123show databases;drop database SCHOOL;show databases;source /opt/test03.sql#之前备份过的,该备份为SCHOOL和sys两个库的完整备份#注意!选项得加“--databases”才是完整的备份,不然会恢复不了
1.2 MySQL 命令整库恢复
quitmysql -uroot -p123123 -e 'drop database SCHOOL;'mysql -uroot -p123123 -e 'SHOW DATABASES;'mysql -uroot -p123123 < /opt/test03.sql mysql -uroot -p123123 -e 'SHOW DATABASES;'
2.恢复表操作
2.1 使用 source 命令恢复表
mysql -uroot -p123123use SCHOOL;show tables;drop table CLASS01; source /opt/test01.sql#恢复表show tables;select * from CLASS01;#查看
2.2 使用 mysql 命令恢复表
quitmysql -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.sqlmysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
3.MySQL 备份思路
相关免费学习推荐:mysql数据库(视频)
Atas ialah kandungan terperinci MySQL 介绍完全备份与恢复. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!