移动datadir后MySQL 8.0 Ubuntu服务器无法启动

时间:2020-07-24 14:07:26

标签: mysql ubuntu

我在Ubuntu(18.04)上有一个MySQL服务器。数据库正在增长,我向系统添加了另一个磁盘(const TransactionReducer = ((state, action) => { switch(action.type) { case "ADD_TRANSACTION": return [action.payload, ...state]; case "DELETION": (state || []).splice(action.payload.index, 1) return [...state]; default: return state; } }); )。移动数据目录后服务器无法启动。

新磁盘已安装在sdb1上。我试图将MySQL数据目录移动到新磁盘上,所以我关闭了服务器并使用以下权限复制了该目录:/mnt/tb。我还编辑了cp -rp /var/lib/mysql /mnt/tb/,所以datadir是新路径。

但是,我无法使用新目录启动服务器。如果我切换回/etc/mysql/mysql.conf.d/mysqld.cnf路径,则服务器可以启动。这两个目录具有相同的用户/组读/写权限。 Ubuntu服务器未安装SELinux。

这是我的error.log,尝试2次启动服务器。第一个失败了/var/lib/mysql,第二个失败了/var/lib/mysql。我读了操作系统errno 13-权限之前被拒绝。我以为是因为找不到二进制日志文件,所以我在cnf文件中添加了/mnt/tb/mysql。它仍然找不到log_bin_basename = /mnt/tb/mysql/binlog

binlog.index

我不知道哪一部分出错了。感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

阻止MySQL初始化的问题是AppArmor,这是一种强制访问控制(MAC)系统,如SELinux。有3种处理方法:

  1. 修改/etc/apparmor.d/usr.sbin.mysqld,将/var/lib/mysql更改为自定义路径,然后重新加载apparmor

  2. 禁用mysql的Apparmor

     sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
     apparmor_parser -R /etc/apparmor.d/disable/usr.sbin.mysqld
    
  3. 完全禁用Apparmor

    sudo systemctl disable apparmor