你可能试过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] //还原数据完成,以下测试数据库。
本还原方法要求用户在/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
有问题可以留言,随时交流。