MySQL 数据库备份与恢复

MySQL 数据库备份与恢复

一、备份类型

冷备份数据库关闭状态下备份,操作简单但需停机,生产环境极少使用。

温备份数据库运行中备份,会添加读锁,阻塞数据写入,影响业务正常使用。

热备份数据库正常对外提供服务,无锁或低锁备份,不影响业务,生产环境首选。

二、常用备份工具

mysqldump逻辑备份工具,简单通用、易于上手,适合中小型数据库。

mysqlpumpMySQL 5.7 及以上版本支持,支持多线程并行备份,备份速度更快。

xtrabackup物理热备份工具,备份和恢复速度快,适合大型高并发生产库。

三、mysqldump 备份命令

备份所有数据库

plaintextmysqldump -u用户名 -p --all-databases > all_db_$(date +%Y%m%d).sql

备份单个数据库

plaintextmysqldump -u用户名 -p 数据库名 > db_$(date +%Y%m%d).sql

备份多个数据库

plaintextmysqldump -u用户名 -p --databases 库名1 库名2 库名3 > multi_db.sql

仅备份表结构,不备份数据

plaintextmysqldump -u用户名 -p -d 数据库名 > db_schema.sql

仅备份数据,不备份表结构

plaintextmysqldump -u用户名 -p -t 数据库名 > db_data.sql

备份指定数据表

plaintextmysqldump -u用户名 -p 数据库名 表名1 表名2 > tables_backup.sql

生产环境推荐备份命令

plaintextmysqldump -u用户名 -p --single-transaction --set-gtid-purged=OFF --default-character-set=utf8mb4 --databases 数据库名 > backup.sql

--single-transaction:热备份 InnoDB 引擎表,不锁表

--set-gtid-purged=OFF:避免主从复制环境冲突

--default-character-set=utf8mb4:防止字符乱码

四、数据恢复命令

系统命令行直接恢复

plaintextmysql -u用户名 -p 目标数据库名 < 备份文件.sql

登录 MySQL 后恢复

plaintextmysql -u用户名 -p

use 目标数据库;

source /路径/备份文件.sql;

恢复全部数据库

plaintextmysql -u用户名 -p < all_db.sql

五、mysqlpump 并行备份plaintextmysqlpump -u用户名 -p --default-parallelism=4 --databases 数据库名 > db_backup.sql

--default-parallelism=4 表示使用 4 个线程并行备份,恢复方式与 mysqldump 一致。

六、xtrabackup 物理备份与恢复

全量备份

plaintextinnobackupex --user=用户名 --password=密码 /备份存放路径

备份预处理

plaintextinnobackupex --apply-log /备份路径/备份目录

停止 MySQL 服务

plaintextsystemctl stop mysqld

数据恢复

plaintextinnobackupex --copy-back /备份路径/备份目录

修改数据目录权限

plaintextchown -R mysql:mysql /var/lib/mysql

启动 MySQL 服务

plaintextsystemctl start mysqld

七、定时自动备份

编写备份脚本 mysql_backup.sh

plaintext#!/bin/bash

DATE=$(date +%Y%m%d_%H%M%S)

BACKUP_DIR="/data/backup"

USER="root"

PASS="数据库密码"

DB="需备份的库名"

mysqldump -uUSER -pPASS --single-transaction DB \> BACKUP_DIR/db_$DATE.sql

gzip BACKUP_DIR/db_DATE.sql

find $BACKUP_DIR -name "db_*.sql.gz" -mtime +7 -delete

添加执行权限

plaintextchmod +x mysql_backup.sh

配置定时任务(每天凌晨 2 点执行)

plaintextcrontab -e

0 2 * * * /data/backup/mysql_backup.sh

八、重要注意事项

恢复数据前关闭相关应用,避免数据写入导致冲突。

恢复前提前创建空数据库,避免因库不存在导致恢复失败。

大型数据库优先使用物理备份,速度快且对业务影响小。

备份完成后必须进行恢复测试,确保备份文件可用。

备份文件及时压缩,节省磁盘存储空间。

生产环境开启 binlog,可实现基于时间点的精准恢复。

统一使用 utf8mb4 字符集,兼容特殊字符及 emoji 表情。

相关推荐
OnlineProxy32 分钟前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
辻弋2012 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_3 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼3 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川4 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
念何架构之路4 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna5 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
第七页独白5 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
晚安日记wanna5 小时前
索引建了却不走?7 个失效原因逐层排查
数据库·mysql·性能优化
KID1412号5 小时前
PostgreSQL入门
数据库·postgresql