CentOS系统恢复MySQL数据库的常见方法
适用场景:适用于通过mysqldump工具创建的逻辑备份(如全量备份或单数据库备份)。
操作步骤:
.sql备份文件(如backup.sql,若为压缩文件需先解压,例:gunzip backup.sql.gz)。systemctl stop mysqld)。mysql客户端导入备份文件,例:mysql -u root -p 数据库名 < backup.sql(需替换为实际数据库名和备份文件路径)。systemctl start mysqld。mysql -u root -p),执行SHOW DATABASES;查看数据库是否存在,或查询表数据确认完整性。适用场景:适用于InnoDB引擎的大容量数据库,支持热备份(无需停止服务),恢复速度快。
操作步骤:
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/。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)。systemctl start mysqld。适用场景:需恢复到某个特定时间点(如误删除数据、误更新),前提是开启了二进制日志(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数据库,且数据目录未损坏的情况(如磁盘故障后恢复)。
操作步骤:
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)。systemctl start mysqld。mysqldump)可跨版本恢复(需注意语法差异)。my.cnf中配置log-bin=/var/lib/mysql/mysql-bin并重启服务。