凭借简答、实用、高效等种种特性,宝塔面板赢得了越来越多站长的芳心,俺这个懒家伙自然也不例外。
在建站维护过程中确实也遇到过不少的细节困扰,今天来分享一段惊心的数据库存储位置迁移经历,当然这个惊心不能怪宝塔,是俺这懒虫没有事先备份造成的心理恐慌!!
宝塔数据库默认存放的位置:/www/server/data
因为在安装的时候,还没挂载数据盘,而阿里的系统盘只有40G,几个稍大点的数据库,系统盘宝间就不足了,所以迁移是必然的,晚迁不如早迁,就算空间足够,数据库放在系统盘也不妥当,万一系统崩了重装是一大障碍。
宝塔提供的数据库存储迁移功能位置如图
注意,操作前先备份数据库,这样即使出问题也不用太担心,不会象我一样吓出一身冷汗了
具体迁移步骤,很简单:
先选择目标位置
点迁移按钮
根据数据库的大小,进行或短或长的等待,期实会停止MYSQL数据库,所以尽量选数据库请求少的时候,我是看了部大片回来后它就迁移完了。
本以为是一气呵成,这就完工了,但打开网站一试,数据库链接失败了,看了下软件管理,MYSQL服务状态是停止(难道是宝塔迁移完需要手动重开MYSQL)手动开启,已经失败 [ERROR] Aborting跑不起来呢,这是杂的了啊,难道是缓存问题,重启面板问题依旧,我重启服务器总该可以了吧
,焦急的一分钟等待后,MYSQL依旧是罢工不干活。
基本可以确认迁移失败了,先恢复原来的存储位置想办法手动迁移吧,可是打开存储位置一看
迁移完后,他这里显示的还是老的存储位置,到迁移目标位置一看,也有对应的数据库,这下小心脏有点受不了,因为没备份数据库啊,这个可能意味着,老位置的不能用了,迁移目标的也不好使,我这十几G的数据,一点点匹配得累吐血了。百度了半天,居然没找到类似的资料,难不成是宝塔6.8以后才出现的情况,看来只能自己动手丰衣足食了
。
打开MYSQL的配置,发现迁移后MYSQL的配置文件并没有自动修改,还是老的位置
手动改成了迁移后目标位置,保存,再重新切换到存储位置标签,发现目录已经变了。看来对宝塔存储位置迁移功能,我理解的有些偏差,默认的位置是配置文件里读取的,通过OPEN文件夹标签选择的目标位置,并不能自动写入配置文件,迁移功能类似于复制数据库到新位置,但配置要手动修改
配置修改一共涉及到四个地方:注意不要有遗漏
datadir = /www/server/data
slow-query-log-file=/www/server/data/mysql-slow.log
innodb_data_home_dir = /www/server/data
innodb_log_group_home_dir = /www/server/data
存储位置修复好了,再次启动,依然 [ERROR] Aborting,无奈只能爬日志了
/www/server/mysql/bin/mysqld: File './mysql-bin.~rec~' not found (Errcode: 13)
190121 15:00:49 [ERROR] MYSQL_BIN_LOG::open_purge_index_file failed to open register file.
190121 15:00:49 [ERROR] MYSQL_BIN_LOG::open_index_file failed to sync the index file.
居然是权限问题,原来宝塔在迁移的时候没有把MYSQL的权限继承过来
再次启动MYSQL,一路绿灯,跑起来了,打开站点测试,一切正常,看来这回是真的迁移成功了
重新总结一下宝塔数据存储位置迁移步骤:
备份数据库
通过面板选择目标存储位置
点迁移,并等待数据复制完成
修改MYSQL配置文件中对应的存储位置
设置MYSQL用户权限
重启MYSQL服务