我正在尝试将 ibdata 和 ib_logfile 移动到 SSD 驱动器上。我试过这种方法,但没有效果:
service mysql stop
cd /var/lib/
cp -ra mysql mysql_backup
cp -a mysql/ibdata1 mysql/ib_logfile* /ssd_drive/mysql
我的cnf看起来像这样(相关部分):
innodb_log_group_home_dir=/ssd_drive/mysql
innodb_data_home_dir=/ssd_drive/mysql
完成所有更改后我收到以下错误:
InnoDB: Unable to lock /ssd_drive/mysql/ibdata1, error: 13
InnoDB: Check that you do not already have another mysqld process
我是否需要删除一些锁文件,或者还有其他我忘记的东西......
我还设置了 mysql apparmor 以便它可以在此目录上执行 rwk,然后重新启动:
/usr/sbin/mysqld {
.................
/ssd_drive/mysql/* rwk,
.................
}
更新: 我忘了输入 k 选项,所以它可以锁定文件......
答案1
需要检查以下几点:
- 确保没有 mysql 进程正在运行
ps faux|grep mysql
- 检查
/ssd_drive/mysql
所有权是否正确chown mysql:mysql -R /ssd_drive/mysql
当您从原始位置启动 mysql 时一切是否正常工作?
编辑:谷歌搜索给了我这个:http://norman.hooper.name/blog/post/19/moving-mysql-in-ubuntu/您是否也调整了 apparmor 的插座部分?
答案2
请注意,从性能角度来看,将 ibdata 和 ib_logfiles 移动到 SSD 是最好的选择,因为这些是可在 SSD 上进行改进的随机 I/O 文件。