问题描述:由于磁盘满了,将mysql的data目录全部转移到别的目录下(/data/mysql),修改mysql配置
datadir = /data/mysql
修改目录权限:/etc/apparmor.d/usr.sbin.mysqld
添加:
/data/mysql/r,
/data/mysql/**rwk,
启动mysql 发现如下错误:
150826 10:33:18 InnoDB: Error: page 7 log sequence number 110 2657205495
InnoDB: is in the future! Current system log sequence number 0 3114505740.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html
InnoDB: for more information.
解决方法尝试1:重命名/data/mysql目录下ib_logfile0、ib_ logfile1文件
再启动mysql 发现可以连上了 偷笑~~ 可是过了一会儿mysql死了就再也起不来了。。
解决方法尝试2:删除ibdata1文件
启动mysql 可以,但是innoDB存储方式的数据库数据没了,这不是我们想要的
解决方法尝试3:以只读方式打开数据库并导出:
mysqld-nt --innodb_force_recovery=4
再开个窗口
mysqldump-uroot –p******* --opt --add-drop-table database1>database1
mysqldump-uroot -p******* --opt --add-drop-table database2>database2
…
我这里好多个库~~~
导好了,退出mysql,回到刚那个窗口下ctrl+c,没效果的话就在killall mysqld吧
犯二了下:怕没导好,再备份了下数据文件
/data目录下 mv mysql my1
Cp my1 mysql
不知道我想的啥。。。反正是这么干的。。
删除/data/mysql中除目录以外的所有文件
启动mysql,报错:
15082611:58:01 [Warning] Using unique option prefix myisam-recover instead ofmyisam-recover-options is deprecated and will be removed in a future release.Please use the full name instead.
^G/usr/sbin/mysqld:Can't find file: './mysql/plugin.frm' (errno: 13)
15082611:58:01 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade tocreate it.
15082611:58:01 InnoDB: The InnoDB memory heap is disabled
15082611:58:01 InnoDB: Mutexes and rw_locks use GCC atomic builtins
15082611:58:01 InnoDB: Compressed tables use zlib 1.2.3.4
15082611:58:01 InnoDB: Initializing buffer pool, size = 128.0M
15082611:58:01 InnoDB: Completed initialization of buffer pool
15082611:58:01 InnoDB: Operating system errornumber 13 in a file operation.
InnoDB:The error means mysqld does not have the access rights to
InnoDB:the directory.
InnoDB:File name ./ibdata1
InnoDB:File operation call: 'create'.
InnoDB:Cannot continue operation.
一直找不到原因,后来才发现,刚才备份的问题,mysql目录的权限是root下了。。。
/data目录下执行
chown-R mysql:mysql mysql/
再启动mysql,ok
Mysql –p****进入mysql把刚才备份的数据库全drop掉
Dropdatabase database1;
Dropdatabase database2;
…
再创建起来:
Createdatabase database1;
Createdatabase database2;
…
导入刚备份的数据库:
mysql -u** -p** database1< database1;
mysql -u** -p** database1< database1;
ok,数据库完美恢复