web-dev-qa-db-ja.com

単一の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エントリを更新する必要がありますが、一度に1つの問題があります!):

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

rsyncしたデータベースへのシンボリックリンクを作成する

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も試してみましたが成功しませんでした

5
SEarle1986

修正済み!

問題は防具のエントリでした:

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

実際には、元のディレクトリから1つ上のディレクトリである必要がありました。

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

Ubuntu 18.04を編集するには、シンボリックリンクの所有者をmysqlに変更する必要がありました。

(/ var/lib/mysql :)

chown -h mysql:mysql zm
3
SEarle1986

このバリエーションを試すことができます:

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.
0
Amit Vujic