MySQL备份与恢复

151次阅读
没有评论

共计 2727 个字符,预计需要花费 7 分钟才能阅读完成。

备份

mysqldump

是逻辑备份工具,备份的是 SQL 语句。

备份方式:

  • InnoDB 表可采取快照备份的方式,开启一个独立事务,获取当前最新的一致性快照。将快照数据,放在临时表中,转换成 SQL,保存到 sql 文件中
  • 非 InnoDB 表需要锁表备份。触发 FTWRL,全局锁表。转换成 SQL,保存到 sql 文件中

备份参数:

  • -A 全备:mysqldump -A > /backup/full.sql
  • -B 备份 1 或多个库:mysqldump -B test1 test2 > /backup/db.sql

备份单表或多表:mysqldump database_name table1 table2 > /backup/tab.sql

加不加 - B 参数的区别:

  • 加 - B 参数,例如,-B test 备份的是:create database test;use test;
  • 没加 - B 参数,备份的是表,在应用时如果 test 库不存在,需要手工创建,并且 use 到 test 库下再恢复

备份高级参数:

  • –master-data,功能:

    • 备份时自动记录 binlog 信息
    • 自动锁表和解锁
    • 配合 –single-transaction 可以减少锁表时间
    • –master-data= 1 会将 change master 语句写入 dump 文件中,–master-data= 2 会将 change master 语句写入 dump 文件中,但是会被注释掉
  • -R:备份存储过程和函数
  • -E:备份事件
  • –triggers:备份触发器
  • –max_allowed_packet=128M:控制备份时传输数据包大小

每天全备:

mysqldump -A --master-data=2 --single-transaction -R -E --triggers --max_allowed_packet=64M > /backup/full_`date +%F`.sql

mysqldump 小结:

  • 优点:可读性较强,压缩比,节省空间,不需要下载安装
  • 缺点:备份时间较长,恢复时间也长
  • 数据量较少 100G 以内,建议使用 mysqldump

从 mysqldump 全备中获取库和表备份:

# 获得表结构
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `city`/!d;q' full.sql >createtable.sql
# 获得 INSERT INTO 语句
grep -i 'INSERT INTO `city`'  full.sqll >data.sql &
# 获取单库备份
sed -n '/^-- Current Database: `world`/,/^-- Current Database: `/p' all.sql >world.sql

Percona Xtrabackup(XBK)

是物理备份工具,支持全备和增量备份。有两个主要的工具:xtrabackup、innobackupex

  • xtrabackup 只能备份 InnoDB 和 XtraDB 两种数据表
  • innobackupex 则封装了 xtrabackup,同时可以备份 MyISAM 数据表

InnoDB 表:
热备份:业务正常发生时,影响较小的备份方式

  • checkpoint,将已提交数据页刷新到磁盘,记录一个 LSN
  • 拷贝 InnoDB 表相关文件 (ibdata1、frm、ibd…)
  • 备份期间产生新数据变化的 redo 也会被备份走

非 InnoDB 表:
温备份:锁表备份

  • FTWRL,触发全局锁
  • 拷贝非 InnoDB 表数据
  • 解锁

再次统计 LSN,写入到专用文件,记录二进制日志位置,所有备份文件统一存放在一个目录下。

全量备份

命令:

innobackupex --no-timestamp /data/xbk/full_`date +%F`

–no-timestamp:表示不创建时间戳目录来存储备份,而是指定备份文件夹

全备恢复:

  • 准备备份:innobackupex --apply-log /data/xbk/full_*/,redo 前滚,undo 回滚,模拟 CSR 过程
  • 数据恢复:cp -a /data/xbk/full_*/* /data/3306/,前提是被恢复目录 /data/3306/ 为空,被恢复数据库实例是关闭
  • 数据授权:chown -R mysql.mysql /data/*
  • 启动数据库

增量备份

增量备份无法单独恢复,必须依赖于全备进行恢复,所有增量必须要按顺序合并到全备中。

增量备份命令:innobackupex –no-timestamp –incremental –incremental-basedir=/backup/full /backup/inc1

–incremental-basedir:增量备份基目录(上次全量备份路径)

恢复过程,备份整理(apply-log)+ 合并备份(full+inc1+inc2):

  • 基础全备整理:innobackupex –apply-log –redo-only /backup/full
  • 合并 inc1 到 full 中:innobackupex –apply-log –redo-only –incremental-dir=/backup/inc1 /backup/full
  • 合并 inc2 到 full 中(最后一个增量不用加 –redo-only):innobackupex –apply-log –incremental-dir=/backup/inc2 /backup/full
  • 最后一次全备整理:innobackupex –apply-log /backup/full

截取 binlog 并恢复:

  • 找到起点:cat /backup/inc2/xtrabackup_binlog_info
  • 找到终点:文件末尾
  • position 截取:mysqlbinlog –skip-gtids –start-position=219 binlog 文件 >/tmp/binlog.sql
  • 临时关闭日志:set sql_log_bin=0;
  • 导入 SQL 语句:source /tmp/bin.sql;
  • 恢复日志:set sql_log_bin=1;

source 命令执行 sql 脚本优点:可支持大文件。

恢复

恢复全备:source /backup/full.sql

截取 binlog:

  • 找到起点:grep "\-- CHANGE MASTER TO" /backup/tab.sql
  • 找到终点:show binlog events in ‘binlog 文件 ’;
  • position 截取:mysqlbinlog –skip-gtids –start-position=219 –stop-position=335 binlog 文件 >/tmp/binlog.sql

恢复 binlog:

  • 临时关闭日志:set sql_log_bin=0;
  • 导入 SQL 语句:source /tmp/bin.sql;
  • 恢复日志:set sql_log_bin=1;

正文完
 0
阿伯手记
版权声明:本站原创文章,由 阿伯手记 于2024-02-02发表,共计2727字。
转载说明:本站原创内容,除特殊说明外,均基于 CC BY-NC-SA 4.0 协议发布,转载须注明出处与链接。
评论(没有评论)
验证码

阿伯手记

阿伯手记
阿伯手记
喜欢编程,头发渐稀;成长路上,宝藏满地
文章数
766
评论数
204
阅读量
381152
今日一言
-「
热门文章
职场救急!AI请假话术生成器:1秒定制高通过率理由

职场救急!AI请假话术生成器:1秒定制高通过率理由

超级借口 不好开口?借口交给我!智能生成工作请假、上学请假、饭局爽约、约会拒绝、邀约推辞、万能借口等各种借口理...
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

本文收集了目前国内已部署 DeepSeek 模型的第三方列表,个个都是免费不限次数的满血版 DeepSeek,...
TVAPP:开源电视盒子资源库,一键打造家庭影院

TVAPP:开源电视盒子资源库,一键打造家庭影院

导语 TVAPP 是一个专为 Android TV 电视盒子用户打造的开源影音资源库,集成了影视、直播、游戏等...
巴别英语:用美剧和TED演讲轻松提升英语听力与口语

巴别英语:用美剧和TED演讲轻松提升英语听力与口语

还在为枯燥的英语学习而烦恼吗?巴别英语通过创新的美剧学习模式,让英语学习变得生动有趣。平台提供海量美剧和 TE...
2025年12月 每日精选

2025年12月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 12 月 26 日 .ax 顶级域 目前全球唯一...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
最新评论
15220202929 15220202929 怎么用
八对 八对 麻烦大佬更新下【堆新】的友链站名:八对星星描述:极目星视穹苍无界•足履行者大地有疆链接:https://8dui.com图标:https://cf.8dui.com/logo.webp横标:https://cf.8dui.com/logo-w.webp订阅:https://8dui.com/rss.xml
三毛笔记 三毛笔记 已添加
DUINEW DUINEW 已添加贵站,期待贵站友链~博客名称:堆新博客地址:https://duinew.com/博客描述:堆新堆新,引力向新!——堆新(DUINEW)博客头像:https://d.duinew.com/logo.webp横版头像:https://d.duinew.com/logo-w.webp博客订阅:https://duinew.com/rss.xml
hedp hedp 没看懂
bingo bingo 直接生成就可以啦,也可以添加一些选项
满心 满心 申请更新下友联信息,原名:满心记,现名:周天记原域名:qq.mba,现域名:zhoutian.com描述:我在人间混日子
开业吉日 开业吉日 没看明白这个怎么用
开业吉日 开业吉日 beddystories 这个网站太赞了,收藏
热评文章
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

本文收集了目前国内已部署 DeepSeek 模型的第三方列表,个个都是免费不限次数的满血版 DeepSeek,...
清华大学官方免费DeepSeek教程

清华大学官方免费DeepSeek教程

AI 领域近期最引人注目的焦点当属 DeepSeek,这款由中国创新企业深度求索研发的人工智能工具,正以开放源...
Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 是一款基于 Fastify、Vercel 和 Supabase 构建的 URL 缩短服务...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
BeddyStories 完全免费儿童睡前故事库,让孩子随时随地入睡更轻松

BeddyStories 完全免费儿童睡前故事库,让孩子随时随地入睡更轻松

BeddyStories 是一个致力于为儿童提供优质睡前故事的在线平台,用户可以在这里找到来自世界各地的经典故...
WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror 是一款基于 WebRTC 技术的在线屏幕共享工具,它利用浏览器内置的...