InnoDB Plugin化すると、show enginesでinnodbが消えちゃう現象について
mysqlのpluginをplugin化するにあたってmy.cnf上に以下を記入するのですが、 ignore-builtin-innodbplugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.sosql_mode = 'IGNORE_SPACE'
上記設定を入れるとplugin化したと同時に、どうもmy.cnfの設定とバッティングして起動しなくなることがわかりました。この場合、
innodb_log_file_size innodb_log_files_in_group innodb_thread_concurrency
をmy.cnf に設定しますと、
mysql > show engines; mysql > show plugins;
にinnodbが表示されなくなるか、mysqlが起動しなくなります。
innnodb plugin が有効になっているタイミングで、以下のコマンドを実行すると利用されているパラメータがわかります。
mysql> show global variables like '%innodb%'; +---------------------------------+------------------------+ | Variable_name | Value | +---------------------------------+------------------------+ | have_innodb | YES | | ignore_builtin_innodb | ON | | innodb_adaptive_flushing | ON | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | 16777216 | | innodb_autoextend_increment | 8 | | innodb_autoinc_lock_mode | 1 | | innodb_buffer_pool_size | 17179869184 | | innodb_change_buffering | inserts | | innodb_checksums | ON | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_data_file_path | ibdata1:10M:autoextend | | innodb_data_home_dir | | | innodb_doublewrite | ON | | innodb_fast_shutdown | 1 | | innodb_file_format | Antelope | | innodb_file_format_check | Barracuda | | innodb_file_per_table | OFF | | innodb_flush_log_at_trx_commit | 1 | | innodb_flush_method | O_DIRECT | | innodb_force_recovery | 0 | | innodb_io_capacity | 200 | | innodb_lock_wait_timeout | 50 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_buffer_size | 8388608 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | | innodb_max_dirty_pages_pct | 75 | | innodb_max_purge_lag | 0 | | innodb_mirrored_log_groups | 1 | | innodb_old_blocks_pct | 37 | | innodb_old_blocks_time | 0 | | innodb_open_files | 300 | | innodb_read_ahead_threshold | 56 | | innodb_read_io_threads | 4 | | innodb_replication_delay | 0 | | innodb_rollback_on_timeout | OFF | | innodb_spin_wait_delay | 6 | | innodb_stats_on_metadata | ON | | innodb_stats_sample_pages | 8 | | innodb_strict_mode | OFF | | innodb_support_xa | ON | | innodb_sync_spin_loops | 30 | | innodb_table_locks | ON | | innodb_thread_concurrency | 0 | | innodb_thread_sleep_delay | 10000 | | innodb_use_sys_malloc | ON | | innodb_version | 1.0.14 | | innodb_write_io_threads | 4 | +---------------------------------+------------------------+ 51 rows in set (0.00 sec)
単純には、この中に指定されていない、パラメータは指定してはいけないのかな?というのが自分の解釈ですが、あってますかね?
INNODB_CMP: 圧縮テーブルに関する情報を提供。 INNODB_CMP_RESET : INNODB_CMPと同じだが、読み込んだあとにデータがリセットされる。 INNODB_CMPMEM: バッファプールにある圧縮テーブルに関する情報を提供。 INNODB_CMPMEM_RESET: INNODB_CMPMEMと同じだが、読み込んだあとにデータがリセットされる。 INNODB_TRX: 実行されているすべてのトランザクションに関する情報を提供。 INNODB_LOCKS: トランザクションが要求しているロックに関する情報を提供。 INNODB_LOCKS_WAITS: ロックを待っているトランザクションに関する情報を提供。