服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL数据库完全备份与增量备份详解

MySQL数据库完全备份与增量备份详解

2022-08-10 15:04My2538772270 Mysql

这篇文章主要介绍了MySQL数据库完全备份与增量备份详解,完全备份就是将数据库中的数据及所有对象全部备份,具体详细内容需要的朋友可以参考一下

定义

完全备份就是将数据库中的数据及所有对象全部备份。

由于 MySQL 服务器中的数据文件是基于磁盘的文本文件,所以完全备份就是复制数据库文件,是最简单也是最快速的方式。

但 MySQL 服务器的数据文件在服务器运行期间,总是处于打开状态,为实现真正的完全备份,需要先停止 MySQL 数据库服务器。

为了保障数据的完整性,在停止 MySQL 服务器之前,需要先执行 flush tables 语句将所有数据写入到数据文件中。对于该方法同学们只需了解,因为将生产环境下的数据库停下来做备份是不可取的。

使用 mysqldump 命令实现对表、数据库、数据库系统进行备份:

?
1
mysqldump [-h主机名] –u用户名 –p密码 --lock-all-tables --database [tables] > 文件名

-h 主机名,可省略,表示本地服务器,--lock-all-tables 对要备份的数据库的所有表施加读锁(在这个过程中,数据库严格处于 read only 状态),--database 后面可以加上需要备份的表,没有指定表名,则表示备份整个数据库。

完全备份与恢复演示

准备一张 student 表,将该表建在 world 数据库中。

建表:

?
1
2
3
4
5
6
7
8
CREATE DATABASE world;
USE world;
CREATE TABLE student(
    stuId INT(10) NOT NULL,
    stuName VARCHAR(10) NOT NULL,
    stuAge INT(10) NOT NULL,
    PRIMARY KEY(stuId)
    );

插入数据:

?
1
INSERT INTO student(stuId, stuName, stuAge) VALUES(1, 'zhangsan', 18), (2, 'lisi', 19),(3, 'wangwu', 18);

MySQL数据库完全备份与增量备份详解

使用 flush tables; 语句将所有数据写入到数据文件中:

?
1
FLUSH TABLES;

退出 mysql 环境,使用 mysqldump 命令对数据库 world 进行完全备份:

?
1
mysqldump -u root -p --lock-all-tables --databases world > /tmp/world.sql

进入 /tmp 目录下,查看备份文件:

?
1
2
cd /tmp
ls

现在,我们对 world 这个库已经做了完全备份,不怕其数据丢失。

模拟 world 数据库中的 student 表丢失:

?
1
DROP TABLE student;

确认表被删除

?
1
SHOW TABLES;

MySQL数据库完全备份与增量备份详解

使用 mysql 命令恢复数据库:

?
1
mysql -uroot -p < /tmp/world.sql

进入 mysql 环境,查看恢复结果:

?
1
SHOW TABLES;

输出结果:

MySQL数据库完全备份与增量备份详解

验证表中数据:

?
1
SELECT * FROM student;

MySQL数据库完全备份与增量备份详解

增量备份是对上次完全备份或增量备份以来改变了的数据进行备份,依赖二进制日志文件,需要开启数据库的 binlog 日志。先对数据库进行一次全量备份,备份同时将 binlog 日志刷新,在这次备份之后的所有操作都会记录在新增的 binlog 日志当中,我们只需要对增加的 binlog 进行备份,就实现了对不断增加内容的数据库的完美备份了。当数据库出现异常的时候,我们可以先恢复最近一次的全量备份,接着将增量备份的文件一个一个按顺序恢复即可实现数据库恢复。

到此这篇关于MySQL数据库完全备份与增量备份详解的文章就介绍到这了,更多相关MySQL数据库备份内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7129795033443598366

延伸 · 阅读

精彩推荐
  • MysqlMySQL备份与恢复之热备(3)

    MySQL备份与恢复之热备(3)

    热备使用mysqldump命令进行备份,此工具是MySQL内置的备份和恢复工具,功能强大,它可以对整个库进行备份,可以对多个库进行备份,可以对单张表或者某...

    Wentasy5232020-05-17
  • Mysqlmysql备份的三种方式详解

    mysql备份的三种方式详解

    备份的本质就是将数据集另存一个副本,但是原数据会不停的发生变化,所以利用备份只能回复到数据变化之前的数据。那变化之后的呢?所以制定一个好...

    MYSQL教程网1852020-01-10
  • MysqlMySql开发之自动同步表结构

    MySql开发之自动同步表结构

    这篇文章主要给大家介绍了关于MySql开发之自动同步表结构的相关资料,这样可以避免在开发中由于修改数据库字段导致的数据库表不一致问题,需要的朋...

    无毁的湖光-Al11732021-08-06
  • MysqlMySQL数据库char与varchar的区别分析及使用建议

    MySQL数据库char与varchar的区别分析及使用建议

    本文主要介绍了mysql中VARCHAR与CHAR字符型数据的差异以及这两种字符型数据在项目中的使用建议,真心不错。值得一看。小编有种受益匪浅的感觉。 ...

    TKOL10712020-04-20
  • MysqlMySQL读写分离,写完读不到问题如何解决

    MySQL读写分离,写完读不到问题如何解决

    今天我们来详细了解一下主从同步延迟时读写分离发生写后读不到的问题,依次讲解问题出现的原因,解决策略以及 Sharding-jdbc、MyCat 和 MaxScale 等开源数据...

    程序员历小冰6332021-03-08
  • MysqlMySQL数据库对敏感数据加密及解密的实现方式

    MySQL数据库对敏感数据加密及解密的实现方式

    这篇文章主要介绍了MySQL数据库对敏感数据加密及解密的实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价...

    懂点IT的耿小厨13272021-01-10
  • MysqlMySQL的查询计划中ken_len的值计算方法

    MySQL的查询计划中ken_len的值计算方法

    本文首先介绍了MySQL的查询计划中ken_len的含义;然后介绍了key_len的计算方法;最后通过一个伪造的例子,来说明如何通过key_len来查看联合索引有多少列被使...

    MYSQL教程网1692020-07-16
  • Mysql这种sql写法真的会导致索引失效吗

    这种sql写法真的会导致索引失效吗

    这篇文章主要给大家介绍了关于网上流传的某种sql写法会导致索引失效的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用sql具有一定的...

    谭小谭啊2232020-11-26