ubuntu mysql如何恢复
导读:Ubuntu 上恢复 MySQL 的常用方法与步骤 一、准备与通用检查 确认备份类型:常见为 逻辑备份(.sql 或 .sql.gz)、二进制备份(binlog)、物理/热备(Percona XtraBackup)。 检查 MySQL 服...
Ubuntu 上恢复 MySQL 的常用方法与步骤
一、准备与通用检查
- 确认备份类型:常见为 逻辑备份(.sql 或 .sql.gz)、二进制备份(binlog)、物理/热备(Percona XtraBackup)。
- 检查 MySQL 服务状态:sudo systemctl status mysql,必要时启动:sudo systemctl start mysql。
- 权限与账户:使用具备 CREATE、DROP、INSERT 等权限的账户(如 root 或具备相应授权的用户)。
- 版本兼容:确保备份来源与目标 MySQL 版本兼容,避免结构/特性不兼容导致失败。
- 备份完整性:对 .sql.gz 先校验或解压;对 binlog 确认文件完整且未被截断。
二、方法一 逻辑备份恢复(.sql 或 .sql.gz)
- 适用:使用 mysqldump 导出的 .sql/.sql.gz 文件。
- 步骤:
- 如目标库不存在,先创建:
mysql -u root -p -e “CREATE DATABASE IF NOT EXISTS your_db; ” - 恢复:
- 普通 SQL:mysql -u root -p your_db < /path/to/backup.sql
- 压缩包:gunzip < /path/to/backup.sql.gz | mysql -u root -p your_db
- 验证:
mysql -u root -p -e “USE your_db; SHOW TABLES; ”
- 如目标库不存在,先创建:
- 说明:逻辑恢复通常 无需停止 MySQL;若遇到外键/存储过程限制,可在导入时临时调整 foreign_key_checks 等会话变量。
三、方法二 时间点恢复(启用 binlog 的场景)
- 适用:已开启 二进制日志(binlog),需要从某次误删或故障点前精确恢复到故障前或指定时间点。
- 步骤:
- 检查是否开启 binlog:
mysql -u root -p -e “SHOW VARIABLES LIKE ‘log_bin’; ” - 定位目标时间点或位置:
mysql -u root -p -e “SHOW MASTER STATUS; ” - 基于时间点的恢复示例:
mysqlbinlog --start-datetime=“2025-12-16 10:00:00”
–stop-datetime=“2025-12-16 10:05:00”
/var/log/mysql/mysql-bin.00000X | mysql -u root -p - 如需基于位置:
mysqlbinlog --start-position=POS_START --stop-position=POS_END
/var/log/mysql/mysql-bin.00000X | mysql -u root -p
- 检查是否开启 binlog:
- 提示:先在一个 测试库 演练,确认 stop-datetime/stop-position 能准确定位到误操作之前。
四、方法三 物理/热备恢复(Percona XtraBackup)
- 适用:使用 Percona XtraBackup 做的 物理备份,适合 InnoDB 的大数据量、需要快速恢复的场景。
- 步骤:
- 安装工具(示例):sudo apt-get install percona-xtrabackup-24
- 准备备份(回滚未提交事务,确保一致性):
sudo xtrabackup --prepare --target-dir=/path/to/backup - 停止 MySQL 并清空数据目录(务必先备份原数据目录!):
sudo systemctl stop mysql
sudo rm -rf /var/lib/mysql/* - 拷贝回数据文件:
sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql - 修正权限并启动:
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mysql
- 说明:XtraBackup 为 热备,恢复过程对线上影响小,但要求 严格按步骤执行,避免数据目录混用。
五、验证与常见问题处理
- 验证要点:
- 登录检查库表:mysql -u root -p -e “USE your_db; SHOW TABLES; ”
- 抽样校验数据行数与关键业务表内容。
- 常见问题:
- 目标库不存在:先 CREATE DATABASE。
- 权限不足:使用具备足够权限的账户或临时授予权限。
- 压缩包处理:.sql.gz 需 gunzip 或管道导入。
- 版本不兼容:尽量保持 备份与恢复端版本一致 或做兼容性评估。
- 字符集/SQL 模式差异:导入前确认 character_set_server/sql_mode 与备份环境一致。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu mysql如何恢复
本文地址: https://pptw.com/jishu/772453.html
