我的硬盘驱动器分为两个分区,所以我可以轻松地重新安装 Ubuntu 并尝试不同的版本,而不会丢失我的主目录数据。它是这样设置的:
20GB -> / (root)
180GB -> /home
Run Code Online (Sandbox Code Playgroud)
我做了很多开发工作,所以我的/var/www
文件夹符号链接到/home/valorin/workspace
.
但是我也想用我的 MySQL 数据文件来做这个,因为我很恼火,每次我重新安装我的机器时,我需要做一个完整的 SQLdump,然后在我可以做更多的工作之前恢复所有的数据库。
在不破坏 MySQL 的情况下做到这一点的最佳方法是什么?
and*_*dol 29
嗯,实际上这个问题有一个潜在的 Ubuntu 特定答案。
正如 Gergoes 链接所提到的,这基本上是关于修改/etc/mysql/my.cnf并在[mysqld]部分为datadir =设置一个新值。到目前为止,答案的非特定部分。
假设你正在运行一个有点现代的 Ubuntu 版本,你很可能默认安装了AppArmor,在强制模式下有一个/usr/sbin/mysqld的配置文件。该默认配置文件很可能不接受您的新数据目录。
让我们假设您的新 datadir 将是/home/data/mysql。
如果您打开文件/etc/apparmor.d/usr.sbin.mysqld,您将在规则中找到这两行。
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
Run Code Online (Sandbox Code Playgroud)
假设我们上面的例子,它们将不得不被这两行替换或(可能更可取)补充。
/home/data/mysql/ r,
/home/data/mysql/** rwk,
Run Code Online (Sandbox Code Playgroud)
在我们可以使用新的数据目录启动我们的 MySQL 服务器之前,我们还必须明确地重新加载我们的新 apparmor 配置文件。
$ sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
Run Code Online (Sandbox Code Playgroud)
这是另一组关于做同样事情的指令 http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html
这里重新发布一下。如果可以的话,请为超级用户投票。
在对权限进行了一些普遍的困惑之后,我意识到问题不是我没有正确的权限和路径,而是 AppArmor 阻止 mysql 读取和写入新位置。
这是我的解决方案:
首先停止 MySQL,这样当你摆弄时就不会发生任何奇怪的事情:
$ sudo stop mysql
Run Code Online (Sandbox Code Playgroud)
然后将所有数据库目录移动到新目录:
$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/
Run Code Online (Sandbox Code Playgroud)
不要移动文件,它们将由mysql生成,只需移动文件夹(即数据库)。
然后礼貌地请求 AppArmor 允许 mysql 使用新文件夹:
$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
Run Code Online (Sandbox Code Playgroud)
添加行:
/new-mysql-dir/ r,
/new-mysql-dir/** rwk,
Run Code Online (Sandbox Code Playgroud)
然后告诉mysql datadir已经移动了:
$ sudo vim /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)
更改行:
datadir=/var/lib/mysql
Run Code Online (Sandbox Code Playgroud)
到:
datadir=/my-new-db-dir/
Run Code Online (Sandbox Code Playgroud)
注意:根据您的数据库设置,您可能还需要更改 innodb-data-home-dir 等。
然后重新启动AppArmor以读取新设置:
$ sudo /etc/init.d/apparmor restart
Run Code Online (Sandbox Code Playgroud)
并使用新的 datadir 再次启动 MySQL:
$ sudo start mysql
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
归档时间: |
|
查看次数: |
44742 次 |
最近记录: |