Skip to content

备份与恢复

备份数据

数据库中的数据十分重要,出于安全性考虑,在数据库的使用中,应该注意使用备份功能。

备份与导出的区别:导出的文件只是保存数据库中的数据;而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件。

mysqldumpMySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件,其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT 等。

使用 mysqldump 备份的语句:

shell
mysqldump -u root -p 数据库名 > 备份文件名;        # 备份整个数据库
mysqldump -u root -p 数据库名 表名字 > 备份文件名;    # 备份整个表

mysqldump 是一个备份工具,因此该命令是在终端中执行的,而不是在 mysql 交互环境下

我们尝试备份整个数据库 python,将备份文件命名为 bak.sql,先 Ctrl+D 退出 MySQL 控制台,再打开命令终端,在终端中输入命令:

shell
cd /home/ubuntu/
mysqldump -u root -p python > bak.sql;

使用命令 ls 可见已经生成备份文件 bak.sql

查看备份文件的内容,可以看见里面不仅保存了数据,还有所备份的数据库的其他信息。

恢复数据

mysql 命令导入

shell
mysql -u 用户名 -p < /home/abc/源.sql

mysql 里面用 source 命令导入

shell
mysql> source /home/abc/源.sql

使用

shell
source /home/ubuntu/Desktop/bak.sql

这就是一条恢复语句,它把 bak.sql 文件中保存的python 数据库恢复。

还有另一种方式恢复数据库,但是在这之前我们先使用命令新建一个空的数据库 test:

shell
mysql -u root -p         # 因为在上一步已经退出了 MySQL ,现在需要重新登录
CREATE DATABASE test;    # 新建一个名为 test 的数据库

再次退出 MySQL,然后输入语句进行恢复,把刚才备份的 bak.sql 恢复到 test数据库:

mysql -u root -p test < bak.sql

我们输入命令查看 test 数据库的表,便可验证是否恢复成功:

shell
mysql -u root -p          # 因为在上一步已经退出了 MySQL ,现在需要重新登录
use test;                 # 连接数据库test
SHOW TABLES;              # 查看 test 数据库的表

总结

查询的完整格式 不要被吓到 其实很简单 !

shell
SELECT select_expr[, select_expr, ...] [
  FROM tb_name
  [WHERE 条件判断]
  [GROUP BY {col_name | postion} [ASC | DESC],...]
  [HAVING WHERE 条件判断]
  [ORDER BY {col_name|expr|postion} [ASC | DESC],...]
  [ LIMIT {[offset,]rowcount | row_count OFFSET offset}]
]
  • 完整的 select 语句
sql
select distinct *
from 表名
where....
group by ... having ...
order by ...
limit
start
,count
  • 执行顺序为:
    • from 表名
    • where ....
    • group by ...
    • select distinct *
    • having ...
    • order by ...
    • limit start,count
  • 实际使用中,只是语句中某些部分的组合,而不是全部