2

私は EC2 で実行していて、別の EBS で MYSQL の datadir を使用したいと考えています。EBS (ext3) を /data にマウントし、my.cnf の datadir をそのディレクトリを指すように変更しました。しかし、mysql を起動しようとすると、次のエラーが発生します。

120518 03:53:17 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120518 03:53:28 mysqld_safe Starting mysqld daemon with databases from /data/mysql/
120518  3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test
120518  3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test
/usr/libexec/mysqld: Can't change dir to '/data/mysql/' (Errcode: 13)
120518  3:53:28 [ERROR] Aborting

120518  3:53:28 [Note] /usr/libexec/mysqld: Shutdown complete

120518 03:53:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

何か案は?

4

3 に答える 3

5

Ubuntu のようなディストリビューションで実行している場合、AppArmor はおそらく mysqld が別のディレクトリ内のファイルにアクセスできないようにブロックしています。システム ログ ファイルを確認すると、この趣旨の不可解なエラー メッセージが見つかります。

ソリューションは次のとおりです。

  1. AppArmor を無効にする (非推奨)

  2. AppArmor ルールを編集する (複雑)

  3. 「マウント バインド」を使用して、データ ファイルが実際には EBS ボリューム上にあるにもかかわらず、MySQL が元の場所にあると見なすようにします。変更を datadir に戻します。

私は何年も前に Amazon に記事を書き、マウント バインドの例のコマンドを含め、まさにあなたがやろうとしていることに対するコミュニティのベスト プラクティスについて説明しました。

EBS を使用して Amazon EC2 で MySQL を実行する
http://ec2ebs-mysql.notlong.com

記事の AMI id は古いことに注意してください。最新の Ubuntu AMI を使用する場合、mkfs.xfs および /etc/fstab で /dev/sdh を /dev/xvdh に置き換える必要があります (ただし、ec2 ツールのコマンド ラインでは置き換えません)。

于 2012-05-19T00:21:07.817 に答える
1

Ubuntu を実行している場合、apparmor サービスが原因でこのエラーが発生する可能性があります。これを回避するには。これを回避するには、次のことを行う必要があります。

1) 「/etc/apparmor.d/usr.sbin.mysqld」を編集し、次の行を追加します。

/opt/lib/mysql/ r,

/opt/lib/mysql/** rwk,

( assuming your new data directory is in /opt/lib/mysql )

2) apparmor サービスを再起動します。

sudo service apparmor restart
于 2013-11-27T00:17:16.717 に答える
0

/data ディレクトリの所有者を mysqld プロセス所有者 (chown 所有者 /data ) に変更します。または (chmod 777 -R /data) 非常に安全ではありません。

于 2012-05-18T09:07:03.240 に答える