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

MySQL数据备份与恢复全攻略

一、数据备份与恢复

按照备份方式分类:物理备份,直接复制数据库的物理文件,可以直接拷贝和恢复;逻辑备份,通过SQL语句导出数据库结构和数据,可用于不同版本和不同类型的MySQL数据库之间的数据迁移。

按照数据库服务状态分类:冷备份,在备份时停止数据库服务,将整个数据库复制到备份设备中;热备份,在备份的时候数据库依旧运行。

二、备份策略

完全备份策略:每次备份都完整复制整个数据库的所有数据。

增量备份策略:只备份自上次备份后发生变化的数据。

差异备份策略:备份自上次完全备份后所有变化的数据。

1.完全备份与恢复
(1)物理备份与恢复

备份操作示例:

cp -r /var/lib/mysql /bakdir/mysql.bak  #拷贝数据库目录
tar -zcf /bakdir/mysql.tar.gz  ./*      #打包压缩数据源文件

恢复操作示例:

tar -xf /root/mysql.tar.gz  -C /var/lib/mysql/   #释放压缩包
chown -R mysql:mysql /var/lib/mysql        #修改所有者和组用户
(2)逻辑备份与恢复

完全备份语法:

mysqldump -uroot -p密码 库名 > /目录/xxx.sql

完全恢复语法:

mysql -uroot -p密码 库名 < /目录/xxx.sql
(3)备份缺点

物理备份跨平台型差,备份时间长、浪费存储空间。

mysqldump备份效率较低、备份和还原速度慢、会锁表,在备份过程中,数据插入和更新操作被阻塞。

2.增量备份与恢复

PERCONA Xtrabackup是一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境。支持完全备份与恢复、增量备份与恢复、差异备份与恢复。

(1)增量备份

首次全备份

xtrabackup --host=ip --user=root --password=密码 --backup --target-dir=备份目录 --datadir=数据库目录

增量备份

xtrabackup --host=ip --user=root --password=密码 --backup --target-dir=备份目录 --incremental-basedir=参考目录  --datadir=数据库目录
(2)增量恢复

准备恢复数据

xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak

合并数据

xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak --incremental-dir=新数据目录名

清空数据库目录

rm -rf /var/lib/mysql/*

拷贝数据

xtrabackup --copy-back --target-dir=/fullbak

修改数据库目录所有者/组用户为mysql

chown -R mysql:mysql /var/lib/mysql

重启数据库服务

systemctl  restart  mysqld
3.差异备份与恢复
(1)差异备份

 首次全备份

xtrabackup --host=ip --user=root --password=密码 --backup --target-dir=备份目录 --datadir=数据库目录

增量备份

xtrabackup --host=ip --user=root --password=密码 --backup --target-dir=备份目录 --incremental-basedir=参考目录  --datadir=数据库目录
(2)差异恢复

准备恢复数据

xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak

合并数据

xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak --incremental-dir=最后一次差异备份

拷贝数据

xtrabackup --copy-back --target-dir=/fullbak

三、Binlog日志管理

Binlog日志记录了所有对数据库的修改操作,但不包含select和show这类只读查询。其主要功能包括:实现主从复制,从库通过读取主库的binlog完成数据同步;支持数据恢复,可根据binlog将数据库恢复到指定时间点的状态。

查看正在使用的binlog日志文件

show master status;      #查看日志文件

自定义日志目录和日志名

#vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
log-bin=/mylog/mysqllog       #定义日志目录和日志文件名

查看已有的日志文件

show binary logs;

查看日志文件内容

show binlog events in 日志文件;

日志字段说明:

  • Log_name: 日志文件名
  • Pos: 命令在日志文件中的起始位置
  • Event_type: 事件类型(如 Query、Table_map、Write_rows 等)
  • Server_id: 服务器 ID
  • End_log_pos: 命令在文件中的结束位置(单位:字节)
  • Info: 执行的命令详细信息

删除日志文件名之前的所有日志文件

purge master logs to 日志文件;

删除所有日志文件,并重新创建日志文件

reset master;

执行日志恢复数据

mysqlbinlog 日志文件 | mysql -u 用户名 -p 密码
http://www.dtcms.com/a/350447.html

相关文章:

  • 10-应用调试与性能优化
  • 嵌入式与机器视觉的交叉点:构建智能化设备的实时视频通路
  • [pilot智驾系统] 控制守护进程(controlsd) | 纵向横向 | 比例-积分-微分(PID)
  • AR技术赋能农业机械智能运维
  • imx586手册和相机寄存器部分解读
  • 钉钉推出下一代AI办公应用形态:钉钉ONE
  • 智谱多模态系列:GLM-4.5V 环境配置与本地部署
  • java全局处理Date和LocalDateTime,统一响应固定格式
  • 无刷电机控制 - STM32F405+CubeMX+HAL库+SimpleFOC08,速度闭环控制(有电流环)
  • xm-select多选组件在layer.open中使用、获取、复现
  • 交叉导轨在医疗设备领域中的应用
  • 5G与6G技术演进与创新对比分析
  • 在线旅游及旅行管理系统项目SQL注入
  • 力扣(用队列实现栈)
  • STL——vector的使用(快速入门详细)
  • c++26新功能—带原因说明的删除函数
  • 用 PyTorch 从零实现 MNIST 手写数字识别
  • 微论-神经网络中记忆的演变
  • volatile关键字:防止寄存器操作被优化
  • Java设计模式-装饰器模式:从“咖啡加料”到Java架构
  • 动态线程池核心解密:从 Nacos 到 Pub/Sub 架构的实现与对比
  • 使用百度统计来统计浏览量
  • 网易算法岗位--面试真题分析
  • 江苏安全员 A 证 “安全生产管理” 核心考点
  • 【笔记】Roop 之 NSFW 检测屏蔽测试
  • 电池分选机:破解电池性能一致性难题的自动化方案|深圳比斯特
  • 【车载开发系列】ParaSoft集成测试环境配置(五)
  • Seaborn数据可视化实战:Seaborn数据可视化实战入门
  • 我的小灶坑
  • 使用 gemini 来分析 github 项目