web-dev-qa-db-ja.com

MySQL-my.cnfの永続的な値

LinuxのPercona Server 5.6で変数を永続化することについて少し疑問があります。

  1. インスタンスの再起動時に毎回trueにする必要がないように、log-bin-trust-function-creatorsを永続化する必要があります。

疑わしいのはmy.cnfにあります。

log-bin-trust-function-creators = 1

または

log_bin_trust_function_creators = 1

現在、log_bin_trust_function_creators = 1を設定していますが、再起動後に有効になりません。

  1. InnoDBバッファープールキャッシュはバイトのみにする必要があります。または、Gにすることもできます(現在、12Gを設定していますが、機能していません)。バイトに変更する必要がありますか?

  2. My.cnfで、変数が与えられる順序は重要ですか?またはそれはランダムにかかりますか?たとえば、[mysqld]の最後のバッファプールと最初のInnoDBバッファサイズを指定できます-それは重要ですか?

2
tesla747

1)ダッシュ付きのフォーマットは、コマンドライン用で、my.cnfにアンダースコアがあり、グローバル変数として使用されます。以下のいずれかが機能する必要があります(Percona Server 5.6.16でテスト済み):

log-bin-trust-function-creators=1
log-bin-trust-function-creators
log_bin_trust_function_creators=1
log_bin_trust_function_creators

(これはブール値なので、=1を指定する必要はありません)

2)GMkを使用できます。 MySQLはそれを拾います。あなたが間違った設定をしている場合、それは単に黙ってそれを無視しないと文句を言うでしょう。

3)同じセクションで何かを2回指定する場合、明らかな例外はありますが、変数の順序は重要ではありません。その場合、後で来るものが前の値を上書きします:

[mysqld]
innodb_buffer_pool_size = 1G
innodb_buffer_pool_size = 2G

これにより、バッファープールのサイズは2Gになります。


ご指摘のとおり、サーバーがmy.cnfをまったく取得していないようです。 ファイルが正しい場所にあるかどうかを確認してください

[root@server ~]# $(which mysqld) --verbose --help | grep -A 1 "Default options"

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

または別の選択肢:

[root@server ~]# timeout 3 Sudo -u mysql strace $(which mysqld) 2>&1 | grep stat|grep cnf
stat("/etc/my.cnf", 0x7fff9e681280)     = -1 ENOENT (No such file or directory)
stat("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=5454, ...}) = 0
stat("/usr/etc/my.cnf", 0x7fff9e681280) = -1 ENOENT (No such file or directory)
stat("/var/lib/mysql/.my.cnf", 0x7fff9e681280) = -1 ENOENT (No such file or directory)
stat("/var/lib/mysql/.mylogin.cnf", 0x7fff9e681280) = -1 ENOENT (No such file or directory)
1
Károly Nagy