MySQL数据恢复需先验证备份文件完整性,再创建目标库并授权,最后执行SQL导入;恢复后须检查表数量、记录数及关键数据,并解决字符集乱码问题。
MySQL 数据恢复主要依赖 mysqldump 生成的 SQL 文本备份文件,恢复过程本质是执行 SQL 语句重建数据库。关键前提是:备份文件完整、目标 MySQL 实例正常运行、权限足够、字符集和引擎兼容。
先检查 dump 文件是否可读且结构完整:
head -20 backup.sql 查看开头是否有 CREATE DATABASE 或 USE `db_name` 等语句INSERT INTO 或 CREATE TABLE 确认含实际数据或表结构gzip 压缩(如 backup.sql.gz),需先解压:gunzip backup.sql.gz
确保目标 MySQL 服务就绪,并按需创建空库:
mysql -u root -p
CREATE DATABASE,需手动建库:CREATE DATABASE db_
name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;(字符集尽量与备份一致)INSERT、CREATE、DROP 等权限;必要时授权:GRANT ALL ON db_name.* TO 'user'@'localhost';
SET autocommit = 0;,恢复完再 COMMIT;,便于出错回滚根据备份方式选择对应恢复方法:
CREATE DATABASE 和 USE(常见于 mysqldump -A 或 mysqldump --databases db1 db2):mysql -u root -p
CREATE DATABASE,先选库再导入:mysql -u root -p db_name
mysql -u root -p --default-character-set=utf8mb4 --max-allowed-packet=512M db_name
mysql -u root -p db_name restore.log,方便排查错误恢复完成后务必验证数据完整性:
USE db_name; 后查表数:SHOW TABLES;
SELECT COUNT(*) FROM table_name; 对比备份前或日志记录SELECT * FROM orders ORDER BY id DESC LIMIT 5;
--default-character-set 参数导入