• MySQL——使用mysqldump备份与恢复数据


    目录

    1.mysqldump简介

    2.mysqldump备份数据

    2.1 备份所有数据库

    2.2 备份一个/多个数据库

    2.3 备份指定库中的指定表

    3.mysqldump恢复数据

    3.1 恢复数据库

    3.2 恢复数据表


    前言mysqldumpbinlog都可以作为MySQL数据库备份的方式

    • mysqldump用于将整个或部分数据库导出为可执行的SQL文件,也可以用于导入或还原数据库,它可以创建一个数据库的逻辑备份,包括表结构和数据
    • binlog(二进制日志)是一种事务日志,记录了对数据库进行的每个更改操作,如插入、更新、删除等。它用于增量备份和数据恢复,可以重放这些更改以还原到之前的状态

    mysqldumpbinlog的主要区别如下:

    1. 数据格式:mysqldump生成的备份文件是以文本形式保存的SQL语句,可以读取和修改。binlog则是以二进制格式保存的事务日志,不能直接查看或修改,需要专门的工具(如mysqlbinlog)进行解析和分析。
    2. 备份范围:mysqldump可以备份整个数据库或特定的表,以及备份时可以选择备份的数据内容(例如只备份表结构、只备份数据等)。而binlog会记录所有的更改操作,包括对表结构和数据的更改,因此可以用来恢复到任何一个时间点之前的状态。
    3. 使用场景:mysqldump适用于定期完整备份数据库或移植数据库,以便将数据导入到不同的MySQL服务器。binlog则适用于增量备份和恢复,可以用于故障恢复、数据同步、主从复制等场景。

    通过binlog恢复数据传送门:通过binlog恢复数据icon-default.png?t=N7T8https://blog.csdn.net/DreamEhome/article/details/130010601

    1.mysqldump简介

            mysqldump命令可以将数据库中指定或所有的库、表导出为SQL脚本。表的结构和表中的数据将存储在生成的SQL脚本中。

            mysqldump备份恢复原理:通过先查出需要备份的库及表的结构,在SQL脚本中生成CREATE语句。然后将表中的所有记录转换成INSERT语句并写入SQL脚本中。这些CREATE语句和INSERT语句都是还原时使用的:还原数据时可使用其中的CREATE语句来创建表,使用INSERT语句还原数据。


    环境准备:如下图所示,共准备了database_test1和database_test2两个数据库,每个数据库中都有两个表table_test1和table_test2(未演示database_test2,同database_test1),每个表中各有一条数据。


    2.mysqldump备份数据

    备份的形式可以分为以下4种

    1. 备份所有数据库(包含库中所有表及数据)
    2. 备份一个/多个数据库(包含库中所有表及数据)
    3. 备份指定库中的指定表(指定表及其数据)

    下面将分别介绍如何实现这3种形式的数据备份。

    2.1 备份所有数据库

    语法:mysqldump -u[用户名] -p[密码] --all-databases > /备份路径/备份文件名.sql

    1. #备份全部数据库
    2. mysqldump -uroot -p123456 --all-databases > backup_all_databases.sql

    mysqldump

            -uroot -p123456                   登录MySQL的用户名/密码 

            --all-databases >

            backup_all_databases.sql   备份文件的名称,可加保存路径

    2.2 备份一个/多个数据库

    语法:mysqldump -u[用户名] -p[密码] --databases DB1 [DB2 DB3...]  > /备份路径/备份文件名.sql

    1. #备份一个数据库
    2. mysqldump -uroot -p123456 --databases database_test1 > backup_database_test1.sql
    3. #备份多个数据库
    4. mysqldump -uroot -p123456 --databases database_test1 database_test2 > backup_database_test1_test2.sql

     mysqldump

            -uroot -p123456                           登录MySQL的用户名/密码 

            --databases

            database_test1 database_test2  要备份的数据库,多个以空格间隔

            >

            backup_*.sql                                备份文件的名称,可加保存路径

    2.3 备份指定库中的指定表

    语法:mysqldump -u[用户名] -p[密码] [database] [table1] [table2] > /备份路径/备份文件名.sql

    1. #备份库中的部分表
    2. mysqldump -uroot -p123456 database_test1 table_test1 table_test2 > backup_tables.sql

     mysqldump

            -uroot -p123456                   登录MySQL的用户名/密码 

            database_test1                    要备份表所在的库名

            table_test1 >                        要备份的表名,可以有多个,以空格分割

            backup_tables.sql                备份文件的名称,可加保存路径


    查看备份文件中的内容: 

    1. #查看其中一个备份文件
    2. cat backup_tables.sql | grep -v "^--" |grep -v "^/" |grep -v "^$"

     cat

            backup_database_test1.sql                       要查看的文件

            | grep -v "^--" |grep -v "^/" |grep -v "^$"      过滤不显示的信息(grep为搜索,-v表示忽略)


    3.mysqldump恢复数据


    环境准备:登录mysql数据库后删除database_test1和 database_test2

    1. #登录mysql后删除database
    2. drop database database_test1;
    3. drop database database_test2;


    3.1 恢复数据库

    备份所有数据库和备份指定库的恢复逻辑相同

     语法:mysql -u[用户名] -p[密码] < /备份文件路径/备份文件名.sql

    1. #还原数据库
    2. mysql -uroot -p123456 < backup_database_test1_test2.sql


     环境准备:登录mysql数据库后删除database_test1库中的table_test1和table_test2(只删除一个或删除任意数据都可以)

    1. #进入database_test1库
    2. use database_test1;
    3. #删除表
    4. drop table table_test1;
    5. drop table table_test2;


    3.2 恢复数据表

    语法:mysqldump -u[用户名] -p[密码] [database]  < /备份文件路径/备份文件名.sql

    恢复表的前提是表所在的库必须存在,且可任意指定库进行恢复操作

    mysql -u root -p123456 database_test1 < backup_tables.sql

     mysql

            -uroot -p123456      数据库用户名/密码

            database_test1       要恢复的数据库

            <

            backup_tables.sql   指定的数据库备份文件

     

  • 相关阅读:
    Postgresql | 锁机制详解(表锁和行锁)
    Educational Codeforces Round 133 (Rated for Div. 2)
    OpenHarmony鸿蒙南向开发案例:【智能猫眼(基于3518开发板)】
    mysql安装
    uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能
    AutoDev 自定义 Agent:快速接入内部 AI Agent,构建 IDE 即 AI 辅助研发中心
    com.google.code:kaptcha-2.3.jar
    轻松拿捏C语言——【文件操作】
    常用的git指令
    2024042期传足14场胜负前瞻
  • 原文地址:https://blog.csdn.net/DreamEhome/article/details/133580992