ここに /etc/my.cnf から読み込まれた innodb_buffer_pool_size = 128MB があるじゃろ? (AA略)
mysql80> SELECT variable_name, variable_source, variable_path, variable_value FROM performance_schema.variables_info JOIN performance_schema.global_variables USING(variable_name) WHERE variable_name = 'innodb_buffer_pool_size'; +-------------------------+-----------------+---------------+----------------+ | variable_name | variable_source | variable_path | variable_value | +-------------------------+-----------------+---------------+----------------+ | innodb_buffer_pool_size | GLOBAL | /etc/my.cnf | 134217728 | +-------------------------+-----------------+---------------+----------------+ 1 row in set (0.01 sec)
これを
mysql80> SET PERSIST innodb_buffer_pool_size = 256 * 1024 * 1024; Query OK, 0 rows affected (0.00 sec) mysql80> SELECT variable_name, variable_source, variable_path, variable_value FROM performance_schema.variables_info JOIN performance_schema.global_variables USING(variable_name) WHERE variable_name = 'innodb_buffer_pool_size'; +-------------------------+-----------------+---------------+----------------+ | variable_name | variable_source | variable_path | variable_value | +-------------------------+-----------------+---------------+----------------+ | innodb_buffer_pool_size | DYNAMIC | | 268435456 | +-------------------------+-----------------+---------------+----------------+ 1 row in set (0.00 sec)
こうじゃ。
( ゚д゚) ・・・
(つд⊂)ゴシゴシ
(;゚д゚) ・・・
(つд⊂)ゴシゴシゴシ
_, ._
(;゚ Д゚) …!?
_人人人人人人人_
> SET PERSIST <
 ̄Y^Y^Y^Y^Y^Y^Y^ ̄
ではmysqldを再起動して、
mysql80> SELECT variable_name, variable_source, variable_path, variable_value FROM performance_schema.variables_info JOIN performance_schema.global_variables USING(variable_name) WHERE variable_name = 'innodb_buffer_pool_size'; +-------------------------+-----------------+---------------------------------------+----------------+ | variable_name | variable_source | variable_path | variable_value | +-------------------------+-----------------+---------------------------------------+----------------+ | innodb_buffer_pool_size | PERSISTED | /usr/mysql/8.0.0/data/mysqld-auto.cnf | 134217728 | +-------------------------+-----------------+---------------------------------------+----------------+ 1 row in set (0.00 sec) $ cat /usr/mysql/8.0.0/data/mysqld-auto.cnf { "mysql_server": {"innodb_buffer_pool_size": "134217728" } }
え…書き換わってないじゃんダメじゃん。。
バグ(だと思う)で、innodb_buffer_pool_sizeだけはSET PERSISTで指定した値じゃなくて、SET PERSISTで指定する **前の** 値が保存されちゃってるぽい。
他のサーバー変数はイケた。
MySQL Bugs: #82905: SET PERSIST stores previous value of innodb_buffer_pool_size to mysqld-auto.cnf
innodb_io_capacity_maxとかならこの通り。
mysql80> SET PERSIST innodb_io_capacity_max = 8000; Query OK, 0 rows affected (0.00 sec) $ cat /usr/mysql/8.0.0/data/mysqld-auto.cnf { "mysql_server": {"innodb_io_capacity_max": "8000" } }
なお、SET PERSISTできるのは当然ながら SET GLOBAL 可能なオプションだけ。
mysql80> SET PERSIST last_insert_id = 2; ERROR 1228 (HY000): Variable 'last_insert_id' is a SESSION variable and can't be used with SET GLOBAL
ところで、セッションスコープしかない変数をを手でmysqld-auto.cnfに書いたら、mysqldが異常終了じゃなくてクラッシュなさるようになった。。
(存在しない変数ならワーニングで無視してくれるんだけど、存在してかつセッションスコープしかないやつだと落ちる。。)
0 件のコメント :
コメントを投稿