MySQL 数据库的不同位置?

Col*_*lin 19 mysql database

我可以将 MySQL 配置为将特定数据库存储在磁盘上的单独位置吗?

我仍然希望任何新数据库都转到默认位置,但我希望将特定数据库存储在我的 Dropbox 文件夹中,以便它可以在几台计算机之间保持同步。

我怎样才能做到这一点?

ant*_*tel 27

当然可以!您必须授予 root 权限。阅读ln手册页。

MySQL 将数据库数据存储在/var/lib/mysql. 我认为,首先你必须创建一个目录,你想把所选数据库的文件放在那里。授予 root 权限,停止 MySQL 守护进程:

# /etc/init.d/mysql stop
Run Code Online (Sandbox Code Playgroud)

将数据复制到新文件夹:

# cp /var/lib/mysql/DATABASENAME /path/to/new/database/dir
Run Code Online (Sandbox Code Playgroud)

从 MySQL 数据文件中删除旧目录:(警告!始终首先进行 SQL 转储!!!

# rm -R /var/lib/mysql/DATABASENAME
Run Code Online (Sandbox Code Playgroud)

建立一个符号链接回 MySQL 数据目录:(注意!先阅读 ln 的手册页!!!

# ln -s /full/path/to/new/database/dir /var/lib/mysql/DATABASENAME
Run Code Online (Sandbox Code Playgroud)

之后,你准备好了,启动你的 MySQL:

# /etc/init.d/mysql start
Run Code Online (Sandbox Code Playgroud)

警告!如果您的新目录不是 MySQL 可写和可读的,那将不起作用!例如,常见问题:您将新的数据目录放在您的主文件夹中,您的主文件夹被其他人读保护(例如:drwxrwx---你你你的目录)。

问,如果您想了解有关该方法的其他信息!

  • 您还需要编辑 `/etc/apparmor.d/*mysqld` 以包含新目录。然后在重新启动 MySQL 之前`sudo service apparmor reload`。 (8认同)
  • @KeesCook 非常感谢 apparmor 的提示,这让我发疯了!!看起来最好把它放在`/etc/apparmor.d/local`中(在我的安装中已经有一个usr.sbin.mysqld),添加一个`/full/path/to/new/database/dir /** rwk,` 为我做的... (3认同)
  • 谢谢!我什至没有考虑符号链接,我太忙于思考如何在 mysql 中做到这一点。 (2认同)