web-dev-qa-db-ja.com

mysqlのtmpフォルダーの変更

Mysqlクエリは、プロセス内で一時ファイルを作成する一時テーブルを使用します。現在、ファイルは/ tmpに書き込まれています。 mysqlが書き込む一時フォルダーのパスをどのくらい正確に変更できますか?

25
Maxim Dsouza

My.cnfを編集する必要があります

tmpdir = /whatewer/you/want

そしてその後、mysqlを再起動します

追伸mysqlユーザーに/whatewer/you/wantに書き込み権限を付与することを忘れないでください

47
CyberDem0n

次に、mysqld tmpdirを/ tmpから/ run/mysqldに移動する例を示します。これは、Ubuntu 13.04に既に存在し、tmpfs(memory/ram)です。

Sudo vim /etc/mysql/conf.d/local.cnf

追加:

[mysqld]
tmpdir = /run/mysqld

次に:

Sudo service mysql restart

最終:

SHOW VARIABLES LIKE 'tmpdir';

================================================== ================

MySQLの再起動時にエラーが発生した場合、AppArmorを有効にしている可能性があります。

Sudo vim /etc/apparmor.d/local/usr.sbin.mysqld

追加:

# Site-specific additions and overrides for usr.sbin.mysqld.
# For more details, please see /etc/apparmor.d/local/README.
/run/mysqld/ r,
/run/mysqld/** rwk,

次に:

Sudo service apparmor reload 

ソース: http://2bits.com/articles/reduce-your-servers-resource-usage-moving-mysql-temporary-directory-ram-disk.htmlhttps:/ /blogs.Oracle.com/jsmyth/entry/apparmor_and_mysql

35
Elijah Lynn

これはドキュメントで回答されています:

MySQLが一時ファイルを保存する場所

Unixでは、MySQLは一時ファイルを保存するディレクトリのパス名としてTMPDIR環境変数の値を使用します。 TMPDIRが設定されていない場合、MySQLはシステムのデフォルトを使用します。通常は/ tmp、/ var/tmp、または/ usr/tmpです。

Windows、Netware、およびOS2では、MySQLはTMPDIR、TEMP、およびTMP環境変数の値を順番にチェックします。最初に設定されたものについては、MySQLはそれを使用し、残りをチェックしません。 TMPDIR、TEMP、またはTMPのいずれも設定されていない場合、MySQLはWindowsシステムのデフォルト(通常はC:\ windows\temp)を使用します。

5
RedFilter

apparmorまたはselinuxの問題はないが、それでもエラーコード13が表示される場合:

mysqlはフルパスにアクセスできる必要があります。つまり目的のフォルダーだけでなく、すべてのフォルダーがmysqlでアクセス可能でなければなりません。

たとえば、mysql設定でこれを使用してみます:tmp = /some/folder/on/disk

# will work, as user root:
mkdir -p /some/folder/on/disk
chown -R mysql:mysql /some

# will not work, also as user root:
mkdir -p /some/folder/on/disk
chown -R mysql:mysql /some/folder/on/disk
3
sjas