MySQL数据库恢复主要有以下几种方式:
- 使用备份SQL文件恢复:适用于所有备份类型,语法如下:
mysql -u root -p < db_backup.sql
- 使用binlog恢复:需要在备份时指定–master-data参数,获取binlog位置,恢复语法如下:
#针对主库恢复
mysqlbinlog --stop-position=... /var/lib/mysql/binlog.000001 | mysql -u root -p
#针对从库恢复
CHANGE MASTER TO MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=...;
START SLAVE;
- 使用物理备份文件恢复:
先停止MySQL服务,替换数据文件:
service mysql stop
cp db_backup.tar.gz /var/lib/mysql
tar -zxvf /var/lib/mysql/db_backup.tar.gz -C /var/lib/mysql
service mysql start
- 使用快照恢复:
克隆卷快照,启动数据库并指定新数据目录:
lvcreate -L10G -s -n db_backup_snapshot /dev/mysqlvg/mysql_data
lvconvert --merge /dev/mysqlvg/db_backup_snapshot #合并快照
service mysql start --datadir=/var/lib/mysql_snapshot
- 使用InnoDB恢复:
InnoDB存储引擎可使用ibd,frm文件进行恢复:
先将ib_logfile文件删除,启动数据库并修复表:
rm -f /var/lib/mysql/ib_logfile0
rm -f /var/lib/mysql/ib_logfile1
service mysql start
mysql -u root -p
REPAIR TABLE table_name;