记笔记是好习惯,记笔记是好习惯,记笔记是好习惯!
重要的事情说三遍。
说多了都是泪。第一次装MYSQL时候就遇到了很多问题,当时解决了忘记记录了。家里硬盘满了,于是买了个4T的硬盘重装系统。重装系统后开始了开发环境重装。Anaconda3,pycharm,mongodb,pycharm... 到了mysql时候就遇到各种问题。
1、先把mysql-5.7.18-win32从H盘挪到D:\Program Files\mysql-5.7.18-win32。
2、建立配置文件D:\Program Files\mysql-5.7.18-win32\my.ini,内容为
[mysqld]
basedir=D:\Program
Files\mysql-5.7.18-win32
datadir=D:\Program
Files\mysql-5.7.18-win32\data
tmpdir=D:\Program
Files\mysql-5.7.18-win32\MySqltemp
innodb_buffer_pool_size=64M
3、建立tmpdir。必须按照配置中的临时目录配置建立这个临时目录,不然后面启动会报错!!!
4、添加环境变量PATH=D:\Program Files\mysql-5.7.18-win32\bin
5、打开cmd,进入D:\Program Files\mysql-5.7.18-win32\bin,执行mysqld --initialize
6、把D:\Program Files\mysql-5.7.18-win32\data移到D:\Program
Files\mysql-5.7.18-win32\data1,执行mysqld
--install。成功后,就可以在系统的服务里看到mysql开头的服务了。
7、上一步成功后,把生成的data文件夹移为data2文件夹,把刚才的data1移到data。恢复原来数据,如果不备份启动会报错,data文件夹不为空。
8、执行net start mysql,报错无法启动,那么尝试mysqld --remove,反复执行几次。
9、后面终于成功启动了。却连接成功后执行对原数据的一个select后服务瞬间停止。查看日志D:\Program
Files\mysql-5.7.18-win32\data\ZGC-20170506NQH.err 最后一行为:
2017-05-06T15:44:39.138589Z 3 [ERROR] InnoDB: Trying to access page number
1784129 in space 31, space name samp_db/dd_chaptername, which is outside the
tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this
error at mysqld startup, please check that your my.cnf matches the ibdata files
that you have in the MySQL server.
多查了下,发现是日志和数据不匹配。参看:https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
10、于是在my.ini中添加innodb_force_recovery = 6 重启服务,再连进去查询,终于恢复了!!!
特意写了这篇日志记录下解决过程。