zoukankan      html  css  js  c++  java
  • MySql数据的备份与还原

    为什么要备份数据?

      保证重要的数据不丢失。

      数据转移

    MySql 数据库备份的方式

     直接拷贝物理文件

    通过工具自带的备份还原工具导出

    还可以使用命令行导出

    1、逻辑备份

           逻辑备份通过保存代表数据库结构及数据内容的描述信息实现,如,保存创建数据结构以及添加数据内容的SQL语句,这种备份方式适用于少量数据的备份与还原。逻辑备份需要查询MySQL服务器获得数据结构及内容信息,因为需要查询数据库信息并将这些信息转换为逻辑格式,所以相对于物理备份而言比较慢。逻辑备份不会备份日志、配置文件等不属于数据库内容的资料。逻辑备份的优势在于不管是服务层面、数据库层面还是数据表层面的备份都可以实现,由于是以逻辑格式存储的,所以这种备份与系统、硬件无关。

          全备份将备份某一时刻所有的数据,增量备份仅备份某一段时间内发生过改变的数据。通过物理或逻辑备份工具就可以完成完全备份,而增量备份需要开启MySQL二进制日志,通过日志记录数据的改变,从而实现增量差异备份。

     下面将通过一些案例介绍如何使用MySQL提供的工具命令进行逻辑备份。使用 mysqldump 备份数据库,默认该工具会将SQL语句信息导出至标准输出,可以通过重定向将输出保存至文件:

    1)备份所有的数据库

     mysqldump -u root -p --all-databases > bak.sql

     2)备份指定的数据库db1、db2以及db3

    mysqldump -u root -p --databases db1 db2 db3 > bak.sql
    3)备份db数据库,当仅备份一个数据库时,--databases可以省略
    mysqldump -u root -p db4 > bak.sql
    
    mysqldump -u root -p --databases db4 > bak.sql

    两者之间的差别在于不使用 --databases 选项,则备份输出信息中不会包含CREATE DATABASE或USE语句。不使用 --databases 选项备份的数据文件,在后期进行数据还原操作时,如果该数据库不存在,必须先创建该数据库。

    注意:mysqldump默认会将多条插入语句导出成一条insert语句格式,不方便查看,遇到数据量较大的表,导入也是问题,如:

    insert into t values(1),(2);

    如果想导出多条insert语句,如:

    insert into t values(1);
    insert into t values(2);

    加上参数--skip-extended-insert即可。

    mysqldump -u${user} -p${passwd} --skip-extended-insert --database ${dbname} --table ${tablename} > ${tablename}.sql

    使用mysql命令读取备份文件,实现数据还原功能:

    mysql -u root -p < bak.sql
    mysql -u root -p db4 < bak.sq1

    案例:

    1、将创建的xiaomi数据库导出成一个文件,保存到 D:Program Filesmysql-8.0.23-winx64in 目录下

    mysqldump -u root -p --databases xiaomi > bak.sql

    2、删除xiaomi数据库,然后导入备份的数据库

     1、查询数据库

     

    2、删除数据库

     3、显示存在的数据库

     4、创建数据库xiaomi

    5、将备份的数据导入到刚新建的 testDB 数据库中

    mysql -u root -p xiaomi < bak.sql

     6、查看数据是否导入成功

     

     

  • 相关阅读:
    HADOOP security
    apache sentry
    spark-deployment-modes-cluster-or-client
    Hadoop,Spark,Flink 相关KB
    OSGi类加载流程
    why-the-default-authentication-hadoop-is-unsecured ?
    Spring源码情操陶冶-PathMatchingResourcePatternResolver路径资源匹配溶解器
    maven跳过单元测试-maven.test.skip和skipTests的区别
    Maven+eclipse+jetty配置
    分布式事务资料
  • 原文地址:https://www.cnblogs.com/Learnall/p/14653522.html
Copyright © 2011-2022 走看看