外观
数据备份
备份数据是数据库管理最常用的操作。为了保证数据库中数据的安全,数据管理员还需定期进行数据备份,一旦数据库遭到损坏,即通过备份的文件来还原数据库。可能遭到数据破坏的原因有以下几个:存储介质故障、服务器彻底瘫痪、用户的误操作以及黑客的入侵。因此数据备份是很重要的操作。
使用mysqldump命令备份
使用mysqldump命令可以将数据库的数据备份成一个文本文件。表的结构和表的数据将存储在文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一条CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。在恢复时,CREATE语句和INSERT语句就可以用来重新生成表。
在使用mysqldump命令进行数据备份时,经常分为以下三种格式:备份一个数据库、备份多个数据库、备份所有数据库。下面将分别介绍这三种备份格式。
备份一个数据库
使用mysqldump备份一个数据库的语法如下。
mysqldump -u username -p dbname table1,table2,... > BackupName.sql其中,username指用户名;dbname指数据库的名称;tableX表示表的名称,没有该参数时将备份整个数据库;BackupName.sql代表目标备份文件的名称,文件名前还可加上一个绝对路径。
目标备份文件的后缀并非都是.sql,只是.sql给人的第一感觉就是它和数据库有关,但如将它命名为.txt的文件也可以。
如我们创建一个如下的数据库和数据表并将它备份至A盘中。
create database db_stu;
use db_stu;
create table tb_stu(
id int(11) auto_increment,
name varchar(50) not null comment '姓名',
enroll_year year not null comment '入学年份',
stu_id varchar(4) not null comment '学号',
birthday date not null comment '生日',
primary key id (id),
index id (id),
unique u_stu_id (stu_id),
check (stu_id regexp '[0123456789]{4}')
);
insert into tb_stu (name, enroll_year, stu_id, birthday) values
('张三', 2020, '1001', '2002-01-01'),
('李四', 2020, '1002', '2002-02-01'),
('王五', 2022, '2001', '2002-10-01'),
('王六', 2022, '2002', '2003-01-01');
select * from tb_stu;

执行完以上语句后,使用mysqldump将此表备份到A盘,语法如下。
mysqldump -u root -p db_stu tb_stu > A:\stu.sql
在退出MySQL命令行之后,回到系统命令行,然后输入上面的命令,再输入密码,就可以在A盘根目录看到此文件了。我们使用Datagrip打开此文件,便可查看此文件的内容。此文件的主要内容及意义如下图。

文件开头记录的就是MySQL的版本号、备份的主机名、数据库名;以/*!40101开头的内容是只有MySQL版本大于4.1.1才执行的语句,下面的/*!40103、/*!40104也是这样。
该文件中没有创建数据库的语句,因此以上语句必须还原到已经存在的数据库中。
备份多个数据库
使用mysqldump命令备份多个数据库的语法如下。
mysqldump -u root -p --databases database1,database2,... > BackupName.sql这里要加上子参数--databases,代表选择多个数据库。
备份所有数据库
使用mysqldump命令备份所有数据库的语法如下。
mysqldump -u root -p254456 --all-databases > A:/BackupName.sql直接复制整个数据库目录
MySQL有一种最简单的备份方法,就是将MySQL的数据库文件直接复制出来,使用此方法前最好先将服务器停止,因为在复制的过程中若服务器改变了数据,再次恢复时会造成数据不一致的情况。即使这样,一般情况下也不建议这样做,因为可能涉及到版本等诸多问题。
采用此方法复制目录前可通过以下语句查看数据库文件的保存位置。
SHOW VARIABLES LIKE '%datadir%';