讲师中心 微信公众号
AI工具推荐 视频效率加速

MySQL如何进行快照备份_LVM逻辑卷管理与文件系统层快照

浅伟姑娘_3727

浅伟姑娘_3727

发布时间:2026-03-22 14:37:30

|

544人浏览过

|

来源于php中文网

原创

LVM快照可实现MySQL秒级物理备份,但需先执行FLUSH TABLES WITH READ LOCK、FLUSH LOGS、FLUSH ENGINE LOGS并记录binlog位置,再创建快照;xfs快照挂载前须运行xfs_repair -o force_geometry,ext4可直接只读挂载;恢复时必须删除ib_logfile*并核对innodb_log_file_size。

mysql如何进行快照备份_lvm逻辑卷管理与文件系统层快照

MySQL直接停机备份太慢?用LVM快照能秒级冻结数据文件

只要你的MySQL数据目录在LVM逻辑卷上,且文件系统是ext4/xfs这类支持快照的类型,LVM快照就是最轻量、最可靠的物理层备份手段。它不依赖MySQL自身状态,也不需要锁表或停服务——但必须确保mysqld进程已刷完所有脏页到磁盘,否则快照里可能含不一致的InnoDB页。

常见错误现象:ERROR 2013 (HY000): Lost connection to MySQL server during query 或备份后恢复时报InnoDB: Database page corruption,基本都是没等FLUSH TABLES WITH READ LOCK和FLUSH LOGS完成就建了快照。

  • 先执行FLUSH TABLES WITH READ LOCK(仅对MyISAM有效)+ FLUSH LOGS(强制滚动binlog、刷redo),再立刻执行FLUSH ENGINE LOGS(InnoDB专用,确保redo日志落盘)
  • 用SHOW MASTER STATUS记录当前binlog位置,后续恢复时要用到
  • 快照创建命令必须在FLUSH之后、UNLOCK TABLES之前执行,例如:lvcreate -L 5G -s -n mysql_snap /dev/vg0/mysql_data
  • 快照卷创建后立即UNLOCK TABLES,让MySQL恢复正常写入

LVM快照挂载后发现文件系统只读或无法识别

这是xfs和ext4对快照处理方式不同导致的。xfs要求挂载前必须运行xfs_repair -o force_geometry(即使没报错也要跑),而ext4一般可直接mount -o ro挂载只读快照卷;若提示mount: wrong fs type,大概率是快照卷未激活或LV状态为suspended。

  • 检查快照状态:lvs -o +attr,origin,确认Attr列第5位是s(snapshot),且不是S(suspended)
  • 如被suspend,用lvchange -ay /dev/vg0/mysql_snap激活
  • xfs快照挂载前必做:xfs_repair -o force_geometry /dev/vg0/mysql_snap(注意:该操作不修改原卷,只修复快照卷元数据)
  • 挂载命令统一用只读:mount -o ro,nouuid /dev/vg0/mysql_snap /mnt/snap(nouuid防止与原卷UUID冲突)

备份文件拷贝慢、占用空间大?快照本身不压缩,但可以边挂载边rsync

LVM快照只是COW(写时复制)索引,实际数据块仍指向原LV,所以快照卷本身很小(初始几MB),但随着原卷写入增多,快照占用空间会线性增长。真正占空间的是你把整个/mnt/snap拷出去的过程——这不是快照的问题,而是备份策略问题。

  • 不要cp -r整个挂载点,改用rsync -a --delete --exclude='ib_logfile*' /mnt/snap/ /backup/mysql_$(date +%F)/
  • 跳过ib_logfile*和mysql-bin.*(这些在快照时刻已无效,应从SHOW MASTER STATUS记录的位置重放)
  • 如果网络传输慢,可在挂载后直接用tar -cf - -C /mnt/snap . | gzip -c > backup.tar.gz,避免中间落盘
  • 快照生命周期要短:备份完成后立刻umount /mnt/snap && lvremove -f /dev/vg0/mysql_snap,否则原LV写入频繁时快照卷可能因空间耗尽而自动丢弃

恢复时MySQL启动失败,报InnoDB redo日志不匹配

这是最容易被忽略的一环:LVM快照备份的是某一瞬间的文件系统状态,但InnoDB重启时会尝试用redo日志前滚。如果快照里包含未完全刷盘的redo,或者你误把旧的ib_logfile*一起恢复了,MySQL就会拒绝启动。

  • 恢复前务必清空目标数据目录下的ib_logfile*和ibdata1(如果是独立表空间模式,ibdata1可保留,但ib_logfile*必须删)
  • 恢复命令示例:rsync -a --delete /backup/mysql_2024-06-01/ /var/lib/mysql/,然后手动删除/var/lib/mysql/ib_logfile*
  • 启动前检查my.cnf中innodb_log_file_size是否与备份时一致,不一致会导致启动失败
  • 首次启动加--innodb-force-recovery=1测试能否读取,成功后再去掉参数正常启

快照本身没问题,问题永远出在“以为文件全拷过去就能跑”这个想法上——InnoDB不是纯文件系统,它的崩溃恢复机制和redo生命周期必须被显式尊重。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2493

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1499

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

875

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3532

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

6108

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1299

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6371

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

5482

2023.08.14

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn