Ubuntu 10.04下如何解决修改MySQL的datadir的问题

64次阅读
没有评论

共计 2262 个字符,预计需要花费 6 分钟才能阅读完成。

行业资讯    
数据库    
Ubuntu 10.04 下如何解决修改 MySQL 的 datadir 的问题

这篇文章主要介绍 Ubuntu 10.04 下如何解决修改 MySQL 的 datadir 的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

由于服务器空间告紧,需要将 Ubuntu 10.04 下 mysql 的 datadir 从默认的 /var/lib/mysql 移到 /usr/local/mysql 下,操作如下:
1. 修改了 /etc/mysql/my.cnf,改为:datadir = /usr/local/mysql
2.cp -a /var/lib/mysql /usr/local/
3./etc/init.d/mysql start
 
问题出现了,系统报错了,无法启动 mysql,日志显示为:Can t find file: ./mysql/plugin.frm (errno:13)
[ERROR] Can t open the mysql.plugin table. Please run mysql_upgrade to create it.
但是执行 mysql_upgrade 时,同样报错。
在网上 google 一圈后,没有找到解决办法。
忽然想起,之前在调试 mail server 时,修改系统默认存储目录,需要修改系统的 chroot 参数,于是决定试下,后面事实证明就是这个原因。这里把相关步骤记录下,以备需要的朋友共享之。
修改系统的 chroot,需要修改 /etc/apparmor.d 下的相关文件,这里以 mysql 为例,需要修改:usr.sbin.mysqld 和 abstractions/mysql 两个文件。
1. 修改 usr.sbin.mysqld 里面的两行内容:/var/lib/mysql/ r, 改为:/usr/local/mysql/ r,/var/lib/mysql/** rwk, 改为:/usr/local/mysql/** rwk,
2. 修改 abstractions/mysql 中一行:/var/lib/mysql/mysql.sock rw, 改为:/usr/local/mysql/mysql.sock rw,
3. 重新加载 apparmor 服务:/etc/init.d/apparmor reload
这时再启动 mysql 就成功了!
启示:不只是 mysql,如果需要修改其他一些系统自带软件的存储目录,改了配置之后,仍然报错的话,则可能需要修改相应 chroot 才行!请参照上面的方法!
关键就下面几点:

  1. 找到 mysql 启动时加载的 Option File(如果有多个,那么一定是起作用的那一个)。在我的机器上只有一个,是 /etc/mysql/my.cnf,进去把 datadir 一项的值改成自己指定的目录。这个不难。

  2. 最关键的,把原先的数据目录(默认是 /var/lib/mysql)里面的东西都转移到新的目录下,而且!一定!要保证相关的内容在新的目录下仍然保持跟原来一样的用户和权限设置。用 chown 和 chmod 就能搞定,很简单。但是如果这步出了差错,找起来就麻烦了,重新启动 mysql 的时候只会说连不上,很难发现真正的原因。我是通过 Ubuntu 下的 Package Manager 安装的 MySQL,安装之后相关文件和目录的 user name 和 group name 都是“mysql”,所以新的 datadir 也要将 owner 设成 mysql,并确保它有合适的权限。

  3. 不仅要保证 datadir 的用户 / 权限设置正确,如果 datadir 目录比较深的话,好像跟上面几级目录的权限也有关系。总之,要保证用户“mysql”能顺利地访问新的 datadir 的内容,而且要保证所有必要的内容都已被复制到新的 datadir 下面。在 MySQL 里面,像用户记录这种启动时必需的信息也是以形式保存的,在启动时会加载这些必需的 database,如果相关目录的权限有问题,或者文件根本不存在,都会启动失败。

  4. 关于 AppArmor,网上资料说需要把所做的改动通过 profile 文件告诉它,否则 AppArmor 会阻止 mysql 访问新的文件路径而导致 mysql 不能运行。以我的经验来看,好像没感觉到 AppArmor 的影响。不过保险起见,还是按照网上说的,修改一下它的 profile 文件,在我的机器上是:/etc/apparmor.d/usr.sbin.mysqld,照着原先 datadir 有关内容的格式,新加几行:

  /my/new/datadir/ r,
  /my/new/datadir/** rwk,

  5. AppArmor 和 mysql 都需要重启。重启的命令是:
 
  sudo /etc/init.d/{apparmor|mysql} stop
  sudo /etc/init.d/{apparmor|mysql} start

  或者用 service 命令也可以:

  sudo service {apparmor|mysql} stop
  sudo service {apparmor|mysql} start

—- TroubleShooting:

 mysql 的 Error log 文件,在我的机器上是:/var/log/mysql/error.log,如果出了问题,这里记录的是真正的原因。对于终端里的几行输出不用太在意,基本上无论出什么事都只会说连不上 Server,没什么用。

以上是“Ubuntu 10.04 下如何解决修改 MySQL 的 datadir 的问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计2262字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)