【MySql】数据库的备份与恢复

文章目录

  • 前言
  • 备份mysqldump
  • 还原source
  • 注意事项
  • 查看连接情况

前言

对与数据库的备份与恢复该怎么去做呢?

Linux下对于文件或目录的备份,直接拷贝一份,留着备用,对于备份,比较简单的做法会就是直接打包拷贝一下,但是,如果需要恢复数据时,你可能会发现更多的问题,如受到版本的影响

不同版本的数据库对于命令,可以增加删除查找修改,但是对于数据库很难rename重命名,可能受版本影响,对于数据库的重命名,有一点不好:当你在操作数据库的时候别人却在修改。

MySql不提供拷贝或直接对文件夹重命名,而且我们也不推荐这么去做;我们比较推荐的是使用mysql的备份工具。

备份mysqldump

我们需要用到的工具是mysqldump

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

举个例子,把test1数据库备份到到/home/hwc/workspace/test1.sql中去,现在我们当前的路径是/home/hwc/workspace

【MySql】数据库的备份与恢复_第1张图片

此时vim打开test1.sql,我们会发现,备份的不仅仅只是数据,还有把历史上所有有效的操作都备份起来了。

也就是说 test1.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

现在我们在把数据库test1给删除drop掉:

【MySql】数据库的备份与恢复_第2张图片

如何进行还原

还原source

source /home/hwc/workspace/test1.sql;

采用source命令,后面加上要还原的文件路径,此时就直接将历史对应的sql命令全部在新的sql执行一次:

【MySql】数据库的备份与恢复_第3张图片

备份不是只备份了数据,操作也备份了:

此时查看数据库show databases;

【MySql】数据库的备份与恢复_第4张图片

先使用数据库test1:use test1;查看test1数据库中的表person:

【MySql】数据库的备份与恢复_第5张图片

查看到对于表person已经还原

注意事项

如果备份的不是整个数据库,而是其中的一张表,怎么做?

指明数据库后的表即可:无需带上-B选项

 mysqldump -u root -p 数据库名 表名1 表名2 > 数据库存放路径

如备份test1数据库中的表person:

image-20230606204715909

同时备份多个数据库:

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原

-B的意思:在备份文件test1.sql中是有创建create database的语句:

【MySql】数据库的备份与恢复_第6张图片

如果没有-B的选项,备份的数据库只会把数据库的所有表信息,数据信息备份出来, 而数据库的名称则需要自己创建出来

所以要备份的话,只需要把表备份一下,还原的时候不要-B,直接source一下即可,创建的时候简单的创建,备份的时候直接不带-B把表名带上。

查看连接情况

如果数据库很卡,可以查一下当前有什么人在使用数据库,也就是查看连接情况:

show processlist

【MySql】数据库的备份与恢复_第7张图片

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况

你可能感兴趣的:(MySql,数据库,mysql,linux)