お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2016-06-13 22:46:26

kumakichi
新しいメンバ
登録日: 2016-06-13

ubuntu 16.04でMySQLのデータディレクトリの変更のしかた

Raspberry Pi 3にインストールしたUbuntu Mate 16.04にMySQLをインストールしました。
そこで、データディレクトリを外付けHDDに移動しようと考えています。
(外付けHDDは/dataにマウント済みでchmod 777 /dataとしてあります。)

uname -a

Linux raspberry 4.4.13-v7+ #893 SMP Wed Jun 8 14:39:18 BST 2016 armv7l armv7l armv7l GNU/Linux

mysqld --version

mysqld Ver 5.7.12-0ubuntu1 for Linux on armv7l ((Ubuntu))
となっています。

行ったこと。
・sudo apt-get install mysql-server
・sudo systemctl stop mysql
・sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
で datadir = /var/lib/mysql から datadir = /data/mysql に変更
・sudo vi /etc/apparmor.d/local/usr.sbin.mysqld

/data/mysql r,
/data/mysql/** rwk,
を追加。
・sudo mv /var/lib/mysql /var/lib/mysql.orig
・sudo mysqld --initialize

ここまでで/data/mysqlが作成され、その下に/var/lib/mysql.origと同じファイルやディレクトリが作成されたことを確認しました。

そこで、
sudo systemctl start mysql
を実行すると
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
と出てMySQLの起動に失敗します。

sudo systemctl status mysql.service
の結果は
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since 月 2016-06-13 22:09:16 JST; 20min ago
  Process: 4324 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)

6月 13 22:09:15 raspberry systemd[1]: mysql.service: Unit entered failed state.
6月 13 22:09:15 raspberry systemd[1]: mysql.service: Failed with result 'exit-code'.
6月 13 22:09:16 raspberry systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
6月 13 22:09:16 raspberry systemd[1]: Stopped MySQL Community Server.
6月 13 22:09:16 raspberry systemd[1]: mysql.service: Start request repeated too quickly.
6月 13 22:09:16 raspberry systemd[1]: Failed to start MySQL Community Server.
となっています。

journalctl -xe
の結果は長くてどこがMySQLに関する記述か分かりません。
(必要ならば追記します。)

この設定が間違っている、あるいは足りないなどご教示いただけませんか?

okwaveのMySQLカテゴリにも同じ質問をしていますが、もしかしたらubuntu特有の問題かと思いこちらにも投稿させていただきました。
よろしくお願いいたします。

オフライン

 

#2 2016-06-18 00:26:02

kumakichi
新しいメンバ
登録日: 2016-06-13

Re: ubuntu 16.04でMySQLのデータディレクトリの変更のしかた

やむを得ず
>sudo cd /var/lib/
>sudo ln -s /data/mysql ./
をしたうえで、
>sudo systemctl start mysql
としてmysqlを動かしました。
(datadir = /var/lib/mysqlに戻しました。)

気持ちが悪い状態なのですが、とりあえず動いてはいるようです。

質問の内容をraspbianで行ったところ、特にエラーもなく動きました。

よって、Ubuntu Mate独自の問題かと思いますが、どこに問題があるかまでは突き止められませんでした。

とりあえずご報告まで。
ありがとうございました。

オフライン

 

#3 2017-04-15 22:28:42

mkenji
新しいメンバ
登録日: 2017-02-16

Re: ubuntu 16.04でMySQLのデータディレクトリの変更のしかた

ご質問から半年以上経っていますが ...

私も全く同じ問題にぶつかり、相当苦労して原因を調べました。
原因は次のことのようです。

ubuntu 16.04 では、mysqld が起動するときに、データディレクトリに

    debian-5.6.flag  (バージョン番号は異なる場合もあり)

というファイル (0 byte) が作られますが、mysql のデータディレクトリを変更
しても、このファイルは常に /var/lib/myssql に書きこまれようとします。

それが理由で、リンクが張られているときには mysqld は正常に起動しますが、
リンクがないと、エラーになります。

これは明らかに ubuntu 16.04 (その元となっている Debian) のバグだと思いますので、
次のバージョンで訂正されることを望みます。

オフライン

 

Board footer

Powered by FluxBB