LinuxのPercona Server 5.6で変数を永続化することについて少し疑問があります。
疑わしいのはmy.cnfにあります。
log-bin-trust-function-creators = 1
または
log_bin_trust_function_creators = 1
現在、log_bin_trust_function_creators = 1を設定していますが、再起動後に有効になりません。
InnoDBバッファープールキャッシュはバイトのみにする必要があります。または、Gにすることもできます(現在、12Gを設定していますが、機能していません)。バイトに変更する必要がありますか?
My.cnfで、変数が与えられる順序は重要ですか?またはそれはランダムにかかりますか?たとえば、[mysqld]の最後のバッファプールと最初のInnoDBバッファサイズを指定できます-それは重要ですか?
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)G
、M
、k
を使用できます。 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)