2013年7月10日水曜日

好きなスクリプト叩いて情報を持ってくるinformation_schemaプラグイン作った

別にスクリプトじゃなくて何でも動くけど。。

https://github.com/yoku0825/scripting_i_s

scripting_i_s.ccの中のI_S_SCRIPTのマクロを任意の実行ファイルに変えてやれば、そいつを実行した出力を空白セパレートでinformation_schema.scripting_i_sテーブルから参照できるようになっていたり。MySQL 5.5.32では動作確認済み。

取り敢えずこんな感じでいく。

$ cat /tmp/test.pl
#!/bin/bash
/bin/awk '{print $1, $2}' /proc/`pidof mysqld`/io >&2

mysql55> INSTALL PLUGIN scripting_i_s SONAME 'scripting_i_s.so';
Query OK, 0 rows affected (0.01 sec)

mysql55> SELECT * FROM information_schema.scripting_i_s;
+------------------------+---------+
| name                   | value   |
+------------------------+---------+
| rchar:                 | 9806796 |
| wchar:                 | 136035  |
| syscr:                 | 5898    |
| syscw:                 | 429     |
| read_bytes:            | 24576   |
| write_bytes:           | 311296  |
| cancelled_write_bytes: | 233472  |
+------------------------+---------+
7 rows in set (0.02 sec)

test.plの中身がPerlじゃないのは気にしない。

取り敢えずSuper_privが必要なようにはしてあるけど、mysqldの実行ユーザーで叩けるスクリプトは何でも叩くダメ仕様。md5をマクロでハードコードしておいて、実行都度md5判定させようとしたけれど、C力の低さで失敗し続けたので諦めた。

もうちょこちょこいじりたいなー。


【2013/07/10 15:36】
スクリプトから戻ってくる結果が1行64KiBを超えると多分セグフォる(キリ

0 件のコメント :

コメントを投稿