当前位置: 首页 > news >正文

MySQL 备份与还原

MySQL 备份与还原:全面指南

  • 前言
  • 一、数据备份的重要性
  • 二、数据库备份类型
      • 2.1 物理备份
      • 2.2 逻辑备份
  • 三、常见的备份方法
      • 3.1 物理冷备
      • 3.2 专用备份工具
      • 3.3 启用二进制日志进行增量备份
      • 3.4 第三方工具备份
  • 四、MySQL 完全备份
  • 五、数据库完全备份分类
      • 5.1 物理冷备份与恢复
      • 5.2 mysqldump 备份与恢复
  • 六、实战案例
      • 6.1 MySQL 完全备份与恢复
      • 6.2 MySQL 增量备份与恢复
      • 6.3 一般恢复
      • 6.4 断点恢复
  • 七、扩展:慢查询日志
      • 7.1 开启慢查询日志
      • 7.2 查看慢查询日志
      • 7.3 使用mysqldumpslow分析慢查询日志
      • 7.4 使用pt-query-digest进行专业分析(推荐)
      • 7.5 临时检查当前运行的慢查询
      • 7.6 最佳实践与建议
  • 八、MySQL 备份与恢复总结
      • 8.1、物理备份、逻辑备份
        • 8.1.1 物理备份:冷备、温备、热备
        • 8.1.2 逻辑备份:
        • 8.1.3 mysql 恢复的方式:
  • 结语

前言

  在当今数据驱动的世界中,数据库是企业运营的核心。无论是小型企业还是大型公司,数据的安全性和完整性都是至关重要的。数据库备份与恢复是确保数据安全的关键措施之一。本文将详细介绍 MySQL 数据库的备份与恢复策略,包括备份的重要性、备份类型、常见备份方法、实战案例以及慢查询日志的管理。通过本文,您将能够全面了解如何有效地保护您的数据,并在必要时迅速恢复。

一、数据备份的重要性

  数据备份的主要目的是为了灾难恢复。在生产环境中,数据的安全性至关重要,任何数据的丢失都可能产生严重的后果。造成数据丢失的原因多种多样,包括程序错误、人为操作错误、运算错误、磁盘故障以及灾难(如火灾、地震)和盗窃等。因此,制定一个可靠的备份策略是每个数据库管理员的首要任务。

二、数据库备份类型

2.1 物理备份

  物理备份是对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。物理备份可以分为冷备份(脱机备份)、热备份(联机备份)和温备份。
冷备份 (脱机备份)
  冷备份是在关闭数据库的情况下进行的备份操作。其优点是简单全面且无需额外资源,但劣势是必须在数据库脱机的情况下进行,这在生产环境中往往是无法接受的。
热备份 (联机备份)
  热备份是在数据库运行状态下进行的备份,依赖于数据库的日志文件。其优点是可以提供24x7的服务,不会因为备份而影响业务的正常运行,但缺点是过程复杂,消耗系统和数据库资源。
温备份
  温备份是在数据库锁定表格(不可写入但可读)的状态下进行的备份操作。其优点是可以供不停机的环境下用作备份,同时也不会像热备份那样对在线服务产生太大影响。

2.2 逻辑备份

  逻辑备份是对数据库逻辑组件的备份,表示为逻辑数据库结构。逻辑备份适用于可以编辑数据值或表结构的情况。备份策略可分为完全备份、差异备份和增量备份。
完全备份
  完全备份是对整个数据库、数据库结构和文件结构的备份。其优点是备份与恢复操作简单方便,但缺点是数据存在大量的重复并且会占用大量的磁盘空间。
在这里插入图片描述
差异备份
  差异备份是备份那些自从上次完全备份之后被修改过的所有文件。其优点是备份数据量会越来越大,但恢复数据时只需要恢复上次的完全备份与最佳的一次差异备份。
在这里插入图片描述
增量备份
  增量备份是只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。其优点是备份的数据量小,占用空间小,备份速度快,但恢复时需要从上一次的完整备份开始到最后一次增量备份之间的所有增量依次恢复。
在这里插入图片描述
备份方式比较

备份方式完全备份差异备份增量备份
完全备份时的状态表1、表2表1、表2表1、表2
第1次添加内容创建表3创建表3创建表3
备份内容表1、表2、表3表3表3
第2次添加内容创建表4创建表4创建表4
备份内容表1、表2、表3、表4表3、表4表4

三、常见的备份方法

3.1 物理冷备

  物理冷备是在数据库关闭状态下,直接打包数据库文件。其优点是备份速度快,恢复时也是最简单的。

3.2 专用备份工具

  常用的逻辑备份工具包括 mysqldump和 mysqlhotcopy。mysqldump是 MySQL 自带的备份工具,而 mysqlhotcopy仅适用于备份 MyISAM 和 ARCHIVE 表。

3.3 启用二进制日志进行增量备份

  进行增量备份时,必须启用二进制日志。二进制日志文件为用户提供复制,对执行备份点后进行的数据库更改所需的信息进行恢复。

3.4 第三方工具备份

  免费的 MySQL 热备份软件如 Percona XtraBackup 和 mysqlbackup 提供了高效的备份解决方案。

四、MySQL 完全备份

  完全备份是对整个数据库、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。
MySQL 完全备份

  • 优点是备份与恢复操作简单方便
  • 缺点是数据存在大量的重复,占用大量的备份空间,备份与恢复时间长。

五、数据库完全备份分类

5.1 物理冷备份与恢复

  物理冷备份与恢复通过关闭 MySQL 数据库并使用 tar 命令直接打包数据库文件夹来实现。

5.2 mysqldump 备份与恢复

  mysqldump是 MySQL 自带的备份工具,可方便实现对 MySQL 的备份,可以将指定的库、表导出为 SQL 脚本。

六、实战案例

create database sjd;
use sjd;
create table if not exists info1 (
id int(4) not null auto_increment,
name varchar(10) not null,
age char(10) not null,
hobby varchar(50),
primary key (id));
insert into info1 values(1,'user1',20,'running');
insert into info1 values(2,'user2',30,'singing');

6.1 MySQL 完全备份与恢复

  通过物理冷备份与恢复、mysqldump备份与恢复等方法,您可以轻松实现 MySQL 数据库的完全备份与恢复。
冷备份

systemctl stop mysqld
#压缩备份
tar zcvPf /opt/mysql_all_$(date +%F).tar.gz /usr/local/mysql/data/
mv /usr/local/mysql/data/ /opt/
#解压恢复
tar zxvPf /opt/mysql_all_2025-09-15.tar.gz -C /usr/local/mysql/

温备份

create table info2 (id int,name char(10),age int,sex char(4));
insert into info2 values(1,'user',11,'性别');
insert into info2 values(2,'user',11,'性别');
#(1)、完全备份一个或多个完整的库 (包括其中所有的表)
mysqldump -u root -p[密码] --databases 库名1 [库名2] ... > /备份路径/备份文件名.sql    #导出的就是数据库脚本文件
例:
mysqldump -u root -p --databases sjd > /opt/sjd.sql       #备份一个sjd库 结构和数据
mysqldump -u root -p --databases mysql sjd > /opt/mysql-sjd.sql    #备份mysql与sjd两个库结构和数据 
#(2)、完全备份 MySQL 服务器中所有的库
mysqldump -u root -p[密码] --all-databases > /备份路径/备份文件名.sql
例:
mysqldump -u root -p --all-databases > /opt/all.sql
#(3)、完全备份指定库中的部分表
mysqldump -u root -p[密码] 库名 [表名1] [表名2] ... > /备份路径/备份文件名.sql
例:
mysqldump -u root -p [-d] sjd info1 info2 > /opt/sjd_info1.sql
mysqldump -u root -p sjd info1 info2 > /opt/sjd_info2.sql
#使用“-d”选项,说明只保存数据库的表结构 
#不使用“-d"选项,说明表数据也进行备份
#做为一个表结构模板
#(4)查看备份文件
grep -v "^--" /opt/sjd_info1-2.sql | grep -v "^/" | grep -v "^$"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#恢复数据库
#1.使用mysqldump导出的文件,可使用导入的方法
source命令
mysql命令
#2.使用source恢复数据库的步骤    #登录到MySQL数据库    #执行source备份sql脚本的路径
#3.source恢复的示例
MySQL [(none)]> source /backup/all-data.sql
#使用source命令恢复数据
#1.模拟数据库出现问题
[root@server1 backup]# mysql -uroot -pabc123 登录数据库
mysql> show databases;  查看数据库信息
#应用示例:
#创建备份(对表进行备份)
[root@server1 ~]# mysqldump -uroot -p123456 sjd info1 > /opt/info1.sql  
[root@server1 ~]# mysql -uroot -pabc123 登录数据库查看
[root@server1 ~]# mysql -uroot -p123456 -e 'drop table sjd.info1;'  #删除数据库的表
#恢复数据表
mysq 
mysql> select * from info1;  查询所有字段
mysql> show tables; 查看表信息
MySQl> source /opt/info1.sql  
mysql -uroot -p123456 -e 'show tables from sjd;'

在这里插入图片描述
在这里插入图片描述

[root@mysql abc]# mysql -uroot -p123456 sjd < /opt/info1.sql   #恢复info1表
[root@mysql abc]# mysql -uroot -p123456 -e 'show tables from sjd;'  #查看info1表
PS:mysqldump 严格来说属于温备份,会需要对表进行写入的锁定
在全量备份与恢复实验中,假设现有0805yjs(sjd)库,0805yjs(sjd)库中有一个test表,需要注意的一点为:
① 当备份时加 --databases ,表示针对于0805yjs(sjd)库
#备份命令
mysqldump -uroot -p123456--databases sjd > /opt/sjd_01-all.sql 备份库后
#恢复命令过程为:
mysql -uroot -p123456
drop database  sjd ;
exit
mysql -uroot -p123456 < /opt/sjd_01.sql
② 当备份时不加 --databases,表示针对sjd库下的所有表
#备份命令
mysqldump -uroot -p123456 sjd > /opt/sjd_all.sql
#恢复过程:
mysql -uroot -p123456
drop database sjd;
create database sjd;
exit
mysql -uroot -p123456 sjd < /opt/sjd_02.sql 
#查看sjd_01.sql 和sjd_02.sql 
#主要原因在于两种方式的备份(前者会从"create databases"开始,而后者则全是针对表格进行操作)
#4.在生产环境中,可以使用Shell脚本自动实现定时备份(时间频率需要确认)
0 1 * * 6 /usr/local/mysql/bin/mysqldump -uroot -p123456 sjd info1 > ./sjd_infol_$(date +%Y%m%d).sql ;/usr/local/mysql/bin/mysqladmin -u root -p flush-logs

6.2 MySQL 增量备份与恢复

  增量备份与恢复通过启用二进制日志功能,进行完全备份和增量备份操作,实现数据的增量恢复。
一般恢复: 将所有备份的二进制日志内容全部恢复
基于位置恢复

  • 数据库在某一时间点可能既有错误的操作也有正确的操作
  • 可以基于精准的位置跳过错误的操作
  • 发生错误节点之前的一个节点,上一次正确操作的位置点停止

基于时间点恢复

  • 跳过某个发生错误的时间点实现数据恢复
  • 在错误时间点停止,在下一个正确时间点开始
#1.开启二进制日志功能
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED      #可选,指定二进制日志(binlog)的记录格式为MIXED(混合输入)
server-id = 1              
systemctl  restart mysqld   #重启服务
查看二进制日志文件的内容
cp /usr/local/mysql/data/mysql-bin.000001 /opt/
#① mysqlbinlog --no-defaults  /opt/mysql-bin.000001
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000001
#--base64-output=decode-rows:使用64位编码机制去解码(decode)并按行读取(rows)
#-v: 显示详细内容
#--no-defaults : 默认字符集(不加会报UTF-8的错误)
#PS: 可以将解码后的文件导出为txt格式,方便查阅
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002 > /opt/mysql-bin.000002

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#2.进行完全备份(增量备份时基于完全备份的,所以我们直接完全备份数据库)
mysqldump -uroot -p123456 sjd info1 > /opt/sjd_info1_$(date +%F).sql
mysqldump -uroot -p123456 sjd > /opt/sjd_all_$(date +%F).sql
#3.可每天进行增量备份操作,生成新的二进制日志文件(例如:mysql-bin.000002)
mysqladmin -u root -p flush-logs
#4.插入新数据,以模拟数据的增加或变更
#PS:在第一次完全备份之后刷新二进制文件,在第二个二进制文件中记载着"增量备份的数据"
create database sjd0916;
use sjd0916;
create table test1 (id int(4),name varchar(4));
insert into test1 values(1,'one');
insert into test1 values(2,'two');
select * from test1;
#5.再次生成新的二进制日志文件(例如:mysql-bin.000003)
mysqladmin -u root -p flush-logs

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 一般恢复

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002
mysql -u root -p -e 'show databases;'
cp /usr/local/mysql/data/mysql-bin.000002 /opt
mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p

在这里插入图片描述
在这里插入图片描述

6.4 断点恢复

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
(1)、基于位置恢复
① 插入三条数据
use sjd0916;
select * from test1;
insert into test1 values(3,'true');
insert into test1 values(4,'f');
insert into test1 values(5,'t');
select * from test1;
#需求:id =4的数据操作失误,需要跳过
#② 确认位置点,刷新二进制日志并删除test1表
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000003
mysqladmin -uroot -p123456 flush-logs
use sjd0916;
show tables;
drop table sjd0916.test1;
#③ 基于位置点恢复
mysqlbinlog --no-defaults --start-position='553' --stop-position='1712' /usr/local/mysql/data/mysql-bin.000003 | mysql -uroot -p      #恢复从位置为553开始到位置为1712为止
#基于时间点恢复
mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小时:分钟:秒' --stop-datetime='年-月-日小时:分钟:秒' 二进制日志 | mysql -u 用户名 -p 密码
mysqlbinlog --no-defaults --start-datetime='2025-09-16 21:17:58' /usr/local/mysql/data/mysql-bin.000003 | mysql -uroot -p

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、扩展:慢查询日志

  

7.1 开启慢查询日志

方法A:通过配置文件(推荐生产环境)
对于生产环境,通过配置文件永久开启慢查询日志是最可靠的方式。编辑MySQL配置文件(通常是my.cnf或my.ini),在[mysqld]部分添加以下配置:

[mysqld]
slow_query_log = ON               # 开启慢查询日志功能
slow_query_log_file = /var/log/mysql/mysql-slow.log  # 指定慢查询日志文件路径
long_query_time = 2               # 定义慢查询阈值(单位:秒,默认10秒)
log_queries_not_using_indexes = ON # 可选:记录未使用索引的查询

配置说明:
• slow_query_log:设置为ON开启慢查询日志功能
• slow_query_log_file:指定慢查询日志的存储路径(确保MySQL有写入权限)
• long_query_time:定义执行时间超过多少秒的查询被视为"慢查询"(默认10秒,可根据业务需求调整)
• log_queries_not_using_indexes:可选参数,记录那些没有使用索引的查询(即使执行很快)
生效配置:
修改配置文件后,需要重启MySQL服务使配置生效:

# 对于使用systemd的系统
sudo systemctl restart mysql
# 或使用传统服务管理方式
service mysql restart

方法B:运行时开启(临时生效)

如果需要在不停止服务的情况下临时开启慢查询日志(重启后会失效),可以使用SQL命令:
#开启慢查询日志
SET GLOBAL slow_query_log = 'ON';
#设置慢查询阈值为2秒(可根据需要调整)
SET GLOBAL long_query_time = 2;
#可选:记录未使用索引的查询
SET GLOBAL log_queries_not_using_indexes = 1;
#查看当前慢查询相关设置
SHOW VARIABLES LIKE '%slow_query_log%';
SHOW VARIABLES LIKE '%long_query_time%';

注意事项:
• 这种方式设置的参数在MySQL服务重启后会失效
• 适合临时调试或测试环境使用
• 生产环境建议使用配置文件方式永久生效

7.2 查看慢查询日志

日志文件位置
慢查询日志默认存储在配置文件中指定的位置,常见路径包括:
• Linux: /var/log/mysql/mysql-slow.log
• 其他可能路径: /var/lib/mysql/hostname-slow.log 或 MySQL数据目录下的slow_query.log
直接查看日志内容
可以使用常规的Linux文本查看命令查看慢查询日志:

# 查看日志最后几行
tail /var/log/mysql/mysql-slow.log
# 实时监控日志新增内容(类似tail -f)
tail -f /var/log/mysql/mysql-slow.log
# 查看完整日志内容
less /var/log/mysql/mysql-slow.log

日志内容解析

慢查询日志中的典型记录如下:

# Time: 2025-09-14T22:00:00.000000Z
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3  Lock_time: 0  Rows_sent: 1000  Rows_examined: 100000
use testdb;
SELECT * FROM big_table WHERE name LIKE '%abc%';

关键字段说明:
• # Time: 查询执行的时间戳
• # User@Host: 执行查询的用户名、主机和IP地址
• # Query_time: 查询执行总耗时(单位:秒)——这是最重要的指标
• Lock_time: 查询等待锁的时间
• Rows_sent: 返回给客户端的结果行数
• Rows_examined: 查询过程中扫描的行数
重点关注:
• Query_time值高的查询
• Rows_examined远大于Rows_sent的查询(说明扫描了大量不必要的数据)
• 频繁出现的相似慢查询

7.3 使用mysqldumpslow分析慢查询日志

MySQL自带了mysqldumpslow工具,可以方便地对慢查询日志进行统计分析。
基本使用

mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log

常用参数说明

参数含义示例用法
-s t按查询时间排序(从长到短)mysqldumpslow -s t
-s r按扫描行数排序mysqldumpslow -s r
-t 10只显示最慢的10条查询mysqldumpslow -t 10
-g “pattern”只分析匹配特定模式的查询mysqldumpslow -g “user”

实用分析示例

  1. 查看最耗时的10个查询:
    mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log
  2. 查看扫描行数最多的10个查询:
    mysqldumpslow -s r -t 10 /var/log/mysql/mysql-slow.log
  3. 查看特定模式的慢查询(如包含"user"的查询):
    mysqldumpslow -g “user” -t 5 /var/log/mysql/mysql-slow.log

7.4 使用pt-query-digest进行专业分析(推荐)

pt-query-digest是Percona Toolkit中的工具,提供了比mysqldumpslow更详细、更专业的慢查询分析。
安装Percona Toolkit
在大多数Linux发行版上,可以通过包管理器安装:

# Ubuntu/Debian
sudo apt-get install percona-toolkit
# CentOS/RHEL
sudo yum install percona-toolkit
基本使用
pt-query-digest /var/log/mysql/mysql-slow.log
输出内容解析
pt-query-digest会生成一份详细的报告,包含以下关键信息:
  1. 总体统计:慢查询总数、不同查询类型的分布等
  2. 最慢的查询:按执行时间排序的查询列表
  3. 每个查询的详细分析:
    • 查询语句(简化显示)
    • 执行次数
    • 平均/最小/最大执行时间
    • 扫描行数与返回行数比例
    • 索引使用情况分析
    • 查询执行时间分布

高级用法

1. 分析并输出到文件:
pt-query-digest /var/log/mysql/mysql-slow.log > slow_report.html
2. 分析最近的慢查询(按时间范围):
pt-query-digest --since '2025-01-01 00:00:00' /var/log/mysql/mysql-slow.log
3. 实时监控慢查询(结合tail):
tail -f /var/log/mysql/mysql-slow.log | pt-query-digest --processlist SLOW_QUERY

7.5 临时检查当前运行的慢查询

除了分析历史慢查询日志,我们还可以实时查看当前正在执行的查询,及时发现并处理长时间运行的查询:
SHOW FULL PROCESSLIST;
结果解读
• Id: 连接ID(可用于终止特定查询)
• User: 执行查询的用户名
• Host: 客户端主机信息
• db: 当前使用的数据库
• Command: 当前执行的命令类型
• Time: 查询已执行的时间(秒)——重点关注长时间运行的查询
• State: 查询状态
• Info: 正在执行的SQL语句(完整显示使用SHOW FULL PROCESSLIST)
终止长时间运行的查询
如果发现某个查询执行时间过长,可以使用KILL命令终止它:
– 首先找到要终止的查询ID
SHOW FULL PROCESSLIST;
– 然后使用KILL命令终止指定ID的查询
KILL <query_id>;
注意:终止查询前,请确认该查询确实可以安全终止,避免影响业务逻辑。

7.6 最佳实践与建议

  1. 生产环境配置建议:
    • 将long_query_time设置为适合您业务的阈值(通常2-5秒)
    • 启用log_queries_not_using_indexes以发现潜在的索引问题
    • 通过配置文件而非运行时命令设置,确保配置持久化
  2. 日志管理:
    • 定期轮转慢查询日志(使用logrotate等工具)
    • 为慢查询日志设置适当的文件大小限制
    • 敏感环境考虑对慢查询日志进行访问控制
  3. 分析流程:
    • 定期(如每天或每周)分析慢查询日志
    • 优先解决执行频率高且耗时长的查询
    • 结合EXPLAIN分析查询执行计划,找出优化点
    • 对于复杂查询,考虑重写SQL或添加适当索引
  4. 监控集成:
    • 将慢查询分析集成到监控系统中
    • 设置慢查询数量或比例的告警阈值
    • 跟踪慢查询趋势,发现性能退化问题

八、MySQL 备份与恢复总结

8.1、物理备份、逻辑备份

8.1.1 物理备份:冷备、温备、热备

1)冷备: tar,需要关闭mysql服务,或者确保mysql服务在进行tar备份时,没有客户端的写入操作
2)温备: mysqldump,这个是mysql自带的备份工具,特性,逐表备份,每备份一张表时,会先drop删除,然后重新create 创建表结构,然后再锁表(仅锁定写的操作,但可读),进行insert语句的备份,备份完成后,进行unlock解锁,然后继续备份下一个
3)热备: xtrabackup mysqlhotcopy等热备工具(第三方),在mysql正常运行时,进行备份。

8.1.2 逻辑备份:

1)全量备份: tar、 mysqldump -u -p --all-databases
2)增量备份:主要使用bin-log 二进制日志来完成备份,同时每个增量备份的文件,可以通过:mysqladmin -u -p flush-logs来刷新生成新的增备的日志文件,同时可以结合crontab完成自动刷新
PS:再进行基于二进制文件的增备恢复时,有必要的话,需要先恢复完备的数据,再逐个恢复增备的数据,直到恢复至我们需要恢复的数据为止
3)差异备份:需要选择保存日志的格式为ROW(基于行)的备份方式日志保存的类型:

  • 混合模式Mixed(建议使用) 两者结合,既能保证一致性,又尽量提高性能
  • 基于行ROWS 最精确,保证一致性,但速度慢。
  • 基于sql (默认) 速度快,但可能会导致数据不一致
8.1.3 mysql 恢复的方式:

1)基于冷备(tar)形式: tar zxvf解压打包的/usr/local/mysql/data数据下的内容

2)基于自带的温备工具:使用mysgldump进行备份后,可使用两种方式进行恢复
① : mysql -u -p 库名< /opt/mysql_all.sql(备份文件的路径)
② mysql -u -p -e 'source /opt/mysql_all.sql’直接使用source进行恢复
3)基于日志: bin-log,首先开启二进制日志的配置log-bin=mysql-bin log_format=MiXED,
然后在/usr/local/mysql/data MysQL工作目录下,会生成mysql-bin.00000x的二进制日志文件
接着使用mysqlbinlog --no-defaults 二进制日志路径│ mysql -u -p 基于完整的二进制日志文件进行恢复
基于位置点和时间点进行恢复:使用mysqlbinlog --no-defaults --base64-output=decode-rows -v二进制日志文件路径,查看正确操作和需要跳过的错误操作的at (position位置点)和datetime(时间点)来进行恢复

结语

  数据库备份与恢复是确保数据安全和业务连续性的关键措施。通过本文的介绍,您应该对 MySQL 数据库的备份与恢复有了全面的了解。无论您是数据库管理员还是开发者,掌握这些技能将帮助您在面对数据丢失时,迅速恢复业务,保障数据的安全性和完整性。希望本文能为您在数据库管理方面提供有价值的参考。


文章转载自:

http://cADJAAHF.nbhft.cn
http://SI5JWJp9.nbhft.cn
http://PylZcpEv.nbhft.cn
http://FFdDPuWS.nbhft.cn
http://kBzzy3Xm.nbhft.cn
http://d4LCTw5f.nbhft.cn
http://fbvfSzPM.nbhft.cn
http://kUYHn4ny.nbhft.cn
http://bfYTh7io.nbhft.cn
http://uCyJxlQl.nbhft.cn
http://sHnyDOem.nbhft.cn
http://IYvwJ8E0.nbhft.cn
http://ljupNX5g.nbhft.cn
http://5L0C6klt.nbhft.cn
http://gfCBZVAu.nbhft.cn
http://w1pWsL9B.nbhft.cn
http://GKgnkAOj.nbhft.cn
http://G6d1NtdU.nbhft.cn
http://cj0beDCw.nbhft.cn
http://2mU2M5bX.nbhft.cn
http://JwOxxqfC.nbhft.cn
http://WufFPEkh.nbhft.cn
http://NldzD1fL.nbhft.cn
http://d4MLTwVF.nbhft.cn
http://1a46X2Je.nbhft.cn
http://n5zBQoeb.nbhft.cn
http://LhoQY3bk.nbhft.cn
http://10rAXEJM.nbhft.cn
http://DEviajat.nbhft.cn
http://YffVcQfH.nbhft.cn
http://www.dtcms.com/a/386515.html

相关文章:

  • 5 分钟 SAE 极速部署 Dify,高效开发 AI 智能体应用
  • [硬件电路-233]:增强型MOS中的增强,是指通过增加正电压使得沟道从无到有的增强。耗尽型MOS中的耗尽,通过增加负电压使得沟通从最大逐渐减弱直到耗尽。
  • 整体设计 之 绪 思维导图引擎 之 引 认知系统 之 引 认知系统 之 序 认知元架构 之 概要设计收官 之1 汇总 形式化表示
  • TDengine 时序函数 DIFF 用户手册
  • 60.[前端开发-Vue3]Day02-模板语法-列表渲染-OptionsAPI-侦听器
  • UML_类图
  • 八串口服务器-工业物联网解决方案
  • 烟花爆竹储存防火防爆知识,《烟花爆竹储存作业证》考试重点
  • Linux网络:守护进程
  • 用C语言求数组Sn的前5项
  • 物联网传感器检测实验
  • GTA式送货!新游《Deliver At All Costs》上线steam
  • 亚马逊新品优化全攻略:从冷启动到高转化的系统化路径
  • 基于属性描述转移的高压断路器零样本智能诊断模型
  • C2(Command Control)命令与控制
  • Tessent_ijtag_ug——第 5 章IJTAG 网络插入 (2)
  • Kaggle铜牌攻略:从泰坦尼克到房价预测,数据科学竞赛完整流程解析
  • 结合图像-文本信息与特征解纠缠的多标签广义零样本胸部X射线分类|文献速递-最新医学人工智能文献
  • JavaScript数组some()和every()方法
  • 全球炭黑复合导电浆料市场报告:原材料波动与技术创新的双重博弈
  • 自动为wordpress外贸网站设置一个标题图
  • 【大模型记忆-Mem0详解-6】核心组件-图形记忆
  • Ansys Zemax | 如何使用极探测器和 IESNA / EULUMDAT 光源数据
  • 【记录】初赛复习 Day2 Day3(内附2024S第一轮难题详解)
  • 洛谷 闰年求和 简单模板题
  • 【Sa-Token 中 三种Session会话 模型详解】
  • MacOS M1安装face_recognition
  • 鸿蒙应用冷启动优化:本地 KV 缓存预热实战指南
  • glib2-2.62.5-7.ky10.x86_64.rpm怎么安装?Kylin Linux RPM包安装详细步骤
  • 少儿舞蹈小程序(16)购物车功能开发