mysql的inndb服务器宕机数据还原:使用ibdata1及数据库文件夹(*.frm,*.ibd)还原数据

你可能试过innodb_force_recovery等方法,但是启动mysql时还失败。这可能需要完整的binlog日志吧。一旦日志损坏则无法完成还原。

本还原方法要求用户在/etc/my.cnf中配置innodb_file_per_table=1,才行。如果没有配置不能保证还原成功,因为只有配置了在数据库文件夹里才会显示*.ibd文件。

我们希望将主机A的mysql服务由主机B接管,所以要求主机B与主机A的/etc/my.cnf基本配置相同(尤其是innodb_buffer_pool_size、default-storage-engine、innodb)。

主机A:mysql宕机(内存过小、突然关机等、硬盘空间满)造成mysql无法正常启动。
主机B: 与主机A配置相同的机器。

#由于硬盘太小,所以备份所需要文件之前后添加一个卷。


#备份到主机A的ibdata和希望还原的数据库文件夹到/bak/目录下。

cp -r /var/lib/mysql/ibdata1 /bak/

#yum install -y mysql-server  //注意/etc/my.cnf配置与主机A的/etc/my.cnf基本配置相同(尤其是innodb_buffer_pool_size、default-storage-engine、innodb)。
#service mysqld start     [ok]    //此步是为了初始化mysql服务器。

Initializing MySQL database:  Installing MySQL system tables...
OK

#service mysqld stop             //为了拷贝主机A的备份数据做准备
#拷贝主机A的/bak/*到主机B的/var/lib/mysql/目录下。提示是否覆盖ibdata时,确认覆盖。

#修改拷贝文件的权限:

chmod -R 777 数据库名/
chown -R mysql:mysql 数据库名/

#service mysqld start     [ok]     //还原数据完成,以下测试数据库。

#mysql -uroot -p               


有问题可以留言,随时交流。

你可能感兴趣的:(Mysql)