• 05【数据的备份与恢复】



    上一篇04【DQL查询】


    下一篇06【数据库的约束】

    目录【MySQL零基础系列教程】



    05【数据的备份与恢复】

    5.1 备份的应用场景

    在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。

    5.2 备份与还原的语句

    5.2.1 数据备份

    mysqldump命令主要用于数据库的备份。

    语法:

    mysqldump [OPTIONS] database [tables]
    
    • 1

    参数:

    • options:
      • -h:mysql服务器的IP
      • -P:mysql服务器的端口
      • -u:mysql用户名
      • -p:mysql密码
      • -n(--no-create-db):不包含创建数据库语句(包含建表语句和数据)
      • -t(--no-create-info):不包含创建表语句(只要插入语句)
      • -d(--no-data):不包含数据
      • -B(--database):导出数据库(也包含建库语句也包含数据)
      • -A(--all-databases):导出所有数据库
    1)导出表:
    mysqldump -hip地址 -P端口 -u用户名 -p密码 数据库 表12... > 文件路径
    
    mysqldump -h127.0.0.1 -P3306 -uroot -padmin db02 student > D:/test.sql
    
    • 1
    • 2
    • 3

    如果没有写需要导出的表则默认导出库中所有的表:

    mysqldump -uroot -padmin db02 > D:/test.sql
    
    • 1

    在这里插入图片描述

    Tips:-h默认值为127.0.0.1,-P默认值为3306

    2)导出库:
    mysqldump -u用户名 -p密码 --databases 库1 库2... > 文件路径
    
    mysqldump -uroot -padmin --databases db02 > D:/test.sql
    mysqldump -uroot -padmin -B test > test.sql
    
    • 1
    • 2
    • 3
    • 4

    Tips:导出库和导出表的区别在于导出库的sql语句里面加了create database db_name语句。

    导出当前数据库服务器的所有数据库:

    mysqldump -u用户名 -p密码 --all-databases > 文件路径
    
    mysqldump -uroot -padmin --all-databases > D:/test.sql
    mysqldump -uroot -padmin -A > D:/test.sql
    
    • 1
    • 2
    • 3
    • 4
    3)指定条件导出:

    只导出某张表的数据(不包含建表语句):

    mysqldump -uroot -padmin -t db02 student > D:/test.sql
    
    • 1

    只导出指定数据库的所有表数据(不包建库、建表语句):

    mysqldump -uroot -padmin -t -n db02 > D:/test.sql
    
    • 1

    导出某张表结构(不包含表数据):

    mysqldump -uroot -padmin -d db02 student > D:/test.sql
    
    • 1

    导出某个数据库的建库、建表语句(不包含表数据):

    mysqldump -uroot -padmin -d -B db02> D:/test.sql
    
    • 1

    导出当前数据库服务器的所有的建库、建表语句(不包含表数据):

    mysqldump -uroot -padmin -d -A> D:/test.sql
    
    • 1

    5.2.2 数据还原

    1)mysql命令恢复

    准备数据,将其保存到D:/test.sql中:

    use db02;
    
    drop table if exists student; 
    
    CREATE TABLE `student` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(20) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      `sex` char(1) DEFAULT NULL,
      `address` varchar(100) DEFAULT NULL,
      `math` int(11) DEFAULT NULL,
      `english` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    INSERT INTO `student` VALUES (1,'小明',24,'男','湖北武汉',90,100),(2,'小红',25,'女','湖南长沙',88,69),(3,'小龙',26,'男','江西南昌',78,80),(4,'小丽',24,'女','安徽合肥',95,80),(5,'张三',19,'男','福建福州',80,90),(6,'李四',24,'男','广东广州',100,95),(7,'王五',24,'男','河南郑州',90,95);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    保存到文本中记得以GBK编码保存,因为windows窗口默认采用GBK编码导入数据;

    在这里插入图片描述

    修改成GB2312编码后发现中文都变成了乱码:

    在这里插入图片描述

    没关系,这个时候再将没有乱码的内容复制到文件中即可;

    执行数据导入命令(实质上就是把里面的sql执行一遍):

    mysql -uroot -padmin < D:/test.sql
    
    • 1

    在这里插入图片描述

    2)source

    source是属于mysql的命令,需要登录进mysql执行(实质也是把里面的sql执行一遍)。

    mysql> source d:/test.sql;
    
    • 1

    在这里插入图片描述

    Tips:这两种类型的导入只适用于临时的数据导入(数据量不会太大),如果数据量大,导入速度会非常慢

  • 相关阅读:
    PHP自增构造_GET
    深度学习-支持向量机(SVM)
    记一次生产大对象及GC时长优化经验
    ali内核服务器搭建Linux版本的小皮面板(微调)
    扩展卡尔曼滤波EKF
    MySQL约束详解
    我想说说长短链接
    图书管理系统路径不对
    C++之构造函数、缺省构造函数
    Verilog 过程赋值 区别 详解
  • 原文地址:https://blog.csdn.net/Bb15070047748/article/details/126564074