如何恢复MySQL数据库?

MySQL数据库恢复主要有以下几种方式:

  1. 使用备份SQL文件恢复:适用于所有备份类型,语法如下:
mysql -u root -p < db_backup.sql
  1. 使用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;  
  1. 使用物理备份文件恢复:
    先停止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
  1. 使用快照恢复:
    克隆卷快照,启动数据库并指定新数据目录:
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
  1. 使用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;