上一篇
"小王,客户数据怎么全没了?!"早上刚到公司,经理的怒吼就让程序员小王瞬间清醒,原来昨晚服务器意外断电,MySQL数据库中有几张关键表损坏无法读取,小王额头冒汗——上周的备份还停留在三个月前...
这种惊魂时刻每个DBA都可能遇到,今天我就用最直白的语言,带你掌握MySQL数据备份与恢复的完整技能树,让你成为团队的数据"急救医生"。
数据库备份相当于给你的数据买保险,主要应对:
物理备份 - 直接复制数据库文件
逻辑备份 - 用SQL语句保存数据
热备份 vs 冷备份
# 备份单个数据库 mysqldump -u 用户名 -p 数据库名 > 备份文件.sql # 备份所有数据库(管理员权限) mysqldump -u root -p --all-databases > 全量备份.sql # 带压缩的备份(推荐) mysqldump -u 用户名 -p 数据库名 | gzip > 备份文件.sql.gz
实用参数:
--single-transaction
:对InnoDB实现无锁备份--routines
:包含存储过程--events
:包含事件调度--ignore-table
:排除特定表# 先锁定数据库(MyISAM需要) mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;" # 复制数据文件(默认路径通常是/var/lib/mysql) cp -R /var/lib/mysql /backup/mysql_data # 解锁 mysql -u root -p -e "UNLOCK TABLES;"
#!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR="/data/backups" MYSQL_USER="backup_user" MYSQL_PASS="your_password" # 创建当日备份目录 mkdir -p $BACKUP_DIR/$DATE # 备份所有数据库 mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases | gzip > $BACKUP_DIR/$DATE/full_backup.sql.gz # 只保留最近7天备份 find $BACKUP_DIR -type d -mtime +7 | xargs rm -rf
# 解压(如果是压缩文件) gzip -d 备份文件.sql.gz # 恢复整个数据库 mysql -u 用户名 -p 数据库名 < 备份文件.sql # 恢复单个表(需先创建数据库) mysql -u 用户名 -p 数据库名 -e "SOURCE 表备份.sql"
停止MySQL服务
systemctl stop mysql
清空原数据目录(谨慎操作!)
rm -rf /var/lib/mysql/*
复制备份文件
cp -R /backup/mysql_data/* /var/lib/mysql/
修改文件权限
chown -R mysql:mysql /var/lib/mysql
启动服务
systemctl start mysql
如果开启了二进制日志,可以恢复到故障前最后一秒:
# 1. 先恢复最近的全量备份 mysql -u root -p < full_backup.sql # 2. 找到binlog位置(通常在备份文件开头有记录) # 类似:-- Position to start replication or point-in-time recovery from # 3. 应用binlog mysqlbinlog --start-position=位置 /var/lib/mysql/mysql-bin.000123 | mysql -u root -p
# 检查SQL文件完整性 head -n 10 备份文件.sql | grep "MySQL dump" # 测试恢复(使用临时数据库) mysql -u root -p -e "CREATE DATABASE test_restore;" mysql -u root -p test_restore < 备份文件.sql
--default-character-set=utf8mb4
参数mydumper
替代mysqldumpdf -h
检查磁盘空间如果是阿里云RDS、AWS RDS等云服务:
下次当你执行DROP TABLE
前,先问自己三个问题:
没有备份的DELETE就像高空走钢丝不带安全绳,现在就去检查你的数据库备份策略吧!
本文由 袁碧玉 于2025-08-07发表在【云服务器提供商】,文中图片由(袁碧玉)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/558079.html
发表评论