TL;DR
INSTALL PLUGIN a SONAME 'b.so'
はplugin_load= a=b.so
と書く- 複数つなげる時は
;
で区切る、plugin_load=rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
みたいに
…言いたいことは全部書いてしまった気がするので、ドキュメントを読んでつらつらと。
plugin_load_add
が追加で plugin_load
は上書きな関係上、my.cnfの上では必ず plugin_load
が先で plugin_load_add
は後に書かないといけないらしい。
5.7のInnoDB暗号化の時から姿を現した
early_plugin_load
はプラグインをロードするタイミングが違うだけみたい。
early_plugin_load ( https://github.com/mysql/mysql-server/blob/mysql-5.7.29/sql/mysqld.cc#L4053 )
(gdb) bt
+bt
#0 ReplSemiSyncMaster::initObject (this=this@entry=0x7fffee604ca0 <repl_semisync>)
at /home/yoku0825/mysql-5.7.29/plugin/semisync/semisync_master.cc:449
#1 0x00007fffee3fecfa in semi_sync_master_plugin_init (p=0x1fdc998)
at /home/yoku0825/mysql-5.7.29/plugin/semisync/semisync_master_plugin.cc:596
#2 0x0000000000ca3fd4 in plugin_initialize (plugin=plugin@entry=0x1fdc998) at /home/yoku0825/mysql-5.7.29/sql/sql_plugin.cc:1252
#3 0x0000000000ca89ef in plugin_init_initialize_and_reap () at /home/yoku0825/mysql-5.7.29/sql/sql_plugin.cc:1388
#4 0x0000000000ca8d1f in plugin_register_early_plugins (argc=argc@entry=0x1dd5df0 <remaining_argc>, argv=0x1e9f930, flags=0)
at /home/yoku0825/mysql-5.7.29/sql/sql_plugin.cc:1500
#5 0x000000000078950a in init_server_components () at /home/yoku0825/mysql-5.7.29/sql/mysqld.cc:4053
#6 0x000000000078cfb1 in mysqld_main (argc=4, argv=0x1e9f930) at /home/yoku0825/mysql-5.7.29/sql/mysqld.cc:4755
#7 0x00007ffff5ecf505 in __libc_start_main (main=0x7652a0 <main(int, char**)>, argc=4, argv=0x7fffffffe3c8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe3b8) at ../csu/libc-start.c:266
#8 0x00000000007829ec in _start ()
フツーのplugin_load ( https://github.com/mysql/mysql-server/blob/mysql-5.7.29/sql/mysqld.cc#L4074 )
(gdb) bt
+bt
#0 ReplSemiSyncMaster::initObject (this=this@entry=0x7fffe3b22ca0 <repl_semisync>)
at /home/yoku0825/mysql-5.7.29/plugin/semisync/semisync_master.cc:449
#1 0x00007fffe391ccfa in semi_sync_master_plugin_init (p=0x26eab48)
at /home/yoku0825/mysql-5.7.29/plugin/semisync/semisync_master_plugin.cc:596
#2 0x0000000000ca3fd4 in plugin_initialize (plugin=plugin@entry=0x26eab48) at /home/yoku0825/mysql-5.7.29/sql/sql_plugin.cc:1252
#3 0x0000000000ca89ef in plugin_init_initialize_and_reap () at /home/yoku0825/mysql-5.7.29/sql/sql_plugin.cc:1388
#4 0x0000000000cab1ee in plugin_register_dynamic_and_init_all (argc=argc@entry=0x1dd5df0 <remaining_argc>, argv=0x1e9f930,
flags=flags@entry=0) at /home/yoku0825/mysql-5.7.29/sql/sql_plugin.cc:1673
#5 0x0000000000789561 in init_server_components () at /home/yoku0825/mysql-5.7.29/sql/mysqld.cc:4074
#6 0x000000000078cfb1 in mysqld_main (argc=4, argv=0x1e9f930) at /home/yoku0825/mysql-5.7.29/sql/mysqld.cc:4755
#7 0x00007ffff5ecf505 in __libc_start_main (main=0x7652a0 <main(int, char**)>, argc=4, argv=0x7fffffffe3c8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe3b8) at ../csu/libc-start.c:266
#8 0x00000000007829ec in _start ()
間に ビルトインプラグインと主要ストレージエンジンのロード が入っているので、InnoDB暗号化は確かにInnoDBの起動より先にやらないといけなくてearlyの方じゃないとダメそう。
逆にInnoDB MemcachedとかInnoDBに依存してそうだからearlyでやると転けた。
plugin_load
っていうとプラグインInnoDBとか思い出しますね :D
0 件のコメント :
コメントを投稿