CentOS MySQL数据库如何恢复
导读:CentOS系统恢复MySQL数据库的常见方法 一、使用mysqldump备份文件恢复 适用场景:适用于通过mysqldump工具创建的逻辑备份(如全量备份或单数据库备份)。 操作步骤: 准备备份文件:确保已有数据库的.sql备份文件(如...
CentOS系统恢复MySQL数据库的常见方法
一、使用mysqldump备份文件恢复
适用场景:适用于通过mysqldump
工具创建的逻辑备份(如全量备份或单数据库备份)。
操作步骤:
- 准备备份文件:确保已有数据库的
.sql
备份文件(如backup.sql
,若为压缩文件需先解压,例:gunzip backup.sql.gz
)。 - 停止MySQL服务(可选):为避免恢复过程中数据冲突,建议停止服务(
systemctl stop mysqld
)。 - 执行恢复命令:使用
mysql
客户端导入备份文件,例:mysql -u root -p 数据库名 < backup.sql
(需替换为实际数据库名和备份文件路径)。 - 启动MySQL服务(若停止):
systemctl start mysqld
。 - 验证恢复结果:登录MySQL(
mysql -u root -p
),执行SHOW DATABASES;
查看数据库是否存在,或查询表数据确认完整性。
二、使用Percona XtraBackup物理备份恢复
适用场景:适用于InnoDB引擎的大容量数据库,支持热备份(无需停止服务),恢复速度快。
操作步骤:
- 安装XtraBackup:通过YUM仓库安装,例:
yum install percona-xtrabackup-24-mysql
(需替换为适合CentOS版本的包)。 - 创建全量备份:使用
innobackupex
命令备份数据目录(如/data/mysql/backup/
),例:innobackupex --defaults-file="/etc/my.cnf" --user=root --password=密码 --socket="/var/lib/mysql/mysql.sock" /data/mysql/backup/
。 - 准备备份:恢复前需“准备”备份(应用事务日志),例:
innobackupex --defaults-file="/etc/my.cnf" --prepare --target-dir=/data/mysql/backup/
。 - 停止MySQL服务:
systemctl stop mysqld
。 - 清空数据目录:删除原数据库文件(
rm -rf /var/lib/mysql/*
)。 - 恢复备份:将准备好的备份复制到数据目录,例:
innobackupex --defaults-file="/etc/my.cnf" --copy-back --target-dir=/data/mysql/backup/
。 - 调整权限:修改数据目录属主为
mysql:mysql
(chown -R mysql:mysql /var/lib/mysql
)。 - 启动MySQL服务:
systemctl start mysqld
。 - 验证恢复:登录MySQL检查数据。
三、基于二进制日志(Binlog)的时间点恢复
适用场景:需恢复到某个特定时间点(如误删除数据、误更新),前提是开启了二进制日志(log-bin
参数开启)。
操作步骤:
- 确认二进制日志位置:查看备份时记录的
CHANGE MASTER TO
语句(如在mysqldump
备份文件中搜索MASTER_LOG_FILE
和MASTER_LOG_POS
),或通过SHOW MASTER STATUS;
获取当前日志位置。 - 提取增量日志:使用
mysqlbinlog
工具提取指定时间段的日志,例:mysqlbinlog --start-datetime="2025-10-01 10:00:00" --stop-datetime="2025-10-01 11:00:00" /var/lib/mysql/mysql-bin.000001 > inc.sql
(替换为实际日志文件和时间范围)。 - 执行增量恢复:将提取的日志导入数据库,例:
mysql -u root -p 数据库名 < inc.sql
。
四、物理冷备恢复(直接拷贝数据目录)
适用场景:适用于同版本MySQL数据库,且数据目录未损坏的情况(如磁盘故障后恢复)。
操作步骤:
- 停止MySQL服务:
systemctl stop mysqld
。 - 备份当前数据(可选):防止数据覆盖,将原数据目录(如
/var/lib/mysql
)重命名(mv /var/lib/mysql /var/lib/mysql.bak
)。 - 恢复冷备文件:将备份的压缩包解压到数据目录,例:
tar xvf mysql.tar.gz -C /var/lib/mysql/
(mysql.tar.gz
为之前通过tar zcvf mysql.tar.gz /var/lib/mysql
创建的备份)。 - 调整权限:修改数据目录属主为
mysql:mysql
(chown -R mysql:mysql /var/lib/mysql
)。 - 启动MySQL服务:
systemctl start mysqld
。 - 验证恢复:登录MySQL检查数据。
注意事项
- 备份优先:恢复前务必确认备份文件的完整性和可用性(如检查备份文件大小、解压是否正常)。
- 版本兼容性:物理备份(如冷备、XtraBackup)需确保恢复环境的MySQL版本与备份时一致;逻辑备份(
mysqldump
)可跨版本恢复(需注意语法差异)。 - 权限问题:恢复过程中需确保MySQL用户对备份文件和数据目录有读写权限。
- 日志文件位置:若未开启二进制日志,无法进行时间点恢复,需提前在
my.cnf
中配置log-bin=/var/lib/mysql/mysql-bin
并重启服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS MySQL数据库如何恢复
本文地址: https://pptw.com/jishu/731872.html