将单个 MySql 数据库移动到单独的物理磁盘

将单个 MySql 数据库移动到单独的物理磁盘

我正在尝试将单个 MySql 数据库移动到 Ubuntu 机器中的另一个物理磁盘。我正在使用 Ubuntu 17.04。

外部驱动器在 /etc/fstab 中的安装如下(最后一行):

#zoneminder external drive
/path/to/new/location/zoneminder/images /var/cache/zoneminder/images none defaults,bind  0 2
/path/to/new/location/zoneminder/events /var/cache/zoneminder/events none defaults,bind 0
/dev/disk/by-uuid/a98ab607-15eb-4089-9197-7d26c3576cf9 /path/to/new/location ext4 x-gvfs-show 0 0

我已尝试以下步骤:

停止 mysql 服务:

sudo service mysql stop

更改已安装驱动器的所有者(我需要更新 fstab 条目以合并此项,但一次只能解决一个问题!):

chown mysql:mysql /path/to/new/location

移至 mysql 文件夹

cd /var/lib/mysql

将数据库(称为 zm)复制到新位置

sudo rsync -av zm /path/to/new/location/zm

重命名旧数据库

sudo mv zm zm.old

创建指向我们 rsynced 数据库的符号链接

sudo ln -s /path/to/new/location/zm

移至新的数据库位置

cd /path/to/new/location

此时执行 ll 显示 mysql 是 /path/to/new/location/zm 的所有者

设置文件权限

sudo chmod 700 zm
cd zm
sudo chmod 660 *

将新位置添加到 apparmor

sudo nano /etc/apparmor.d/usr.sbin.mysqld

添加

/path/to/new/location/ r,
/path/to/new/location/** rwk,

(重新)启动服务

sudo service apparmor restart
sudo service mysql start

登录mysql:

mysql -u root -p

打开新数据库

use zm;

显示表格

show tables;

这里我收到一个错误:

ERROR 1018 (HY000): Can't read dir of './zm/' (errno: 13 - Permission denied)

我也尝试过chmod 777chmod 777 */path/to/new/location没有成功

答案1

修复!

问题出在 apparmor 条目上:

/path/to/new/location/ r,
/path/to/new/location/** rwk,

实际上需要比原来的目录高一个目录:

/path/to/new/ r,
/path/to/new/** rwk,

编辑 Ubuntu 18.04 要求我将符号链接的所有者更改为 mysql:

(位于 /var/lib/mysql:)

chown -h mysql:mysql zm

答案2

你可以尝试这个变体:

1) first check in my.cnf [/etc/mysql/my.cnf] for database files destination.

2) let say that destination is in folder /var/lib/mysql/ and yours database name is "abccompany"

3) stop mysql database

4) move folder [var/lib/mysql/abccompany] to new destination (let say "/diskY")

5) make symbolic link:
     ln  -s  /diskY/abccompany   abccompany

6) start mysql database and everything should work just fine.

相关内容