読者です 読者をやめる 読者になる 読者になる

Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

不具合修正版 fluent-plugin-rewrite-tag-filter v1.3.1 をリリースしました #fluentd

ログ収集ツールFluentdに、Apacheのmod_rewriteのようにtagを自在に書き換える機能を追加する、fluent-plugin-rewrite-tag-filterのv1.3.1をリリースしました。 https://github.com/y-ken/fluent-plugin-rewrite-tag-filter http://rubygems.org/gems/fluent…

mrubyからイベントログ収集ツールFluentdを扱う"mruby-fluent-logger"を公開しました

イベントログ収集ツールFluentdに、mrubyからも構造化ログデータを送りたい。 その情熱に勢いを任せて、"mruby-fluent-logger" を作りましたので公開します。 これを使えば、C/C++アプリに組み込んだmruby等からFluentdを容易に扱えますね。 そんな"mruby-fl…

安定性を強化した fluent-plugin-munin v0.3.2をリリースしました #fluentd

ログ収集ツールFluentdで、リソース監視データも収集可能となる fluent-plugin-munin v3.0.2をリリースしました。 多数のMunin向けプラグインで採取できるデータを、お好みの間隔でFluentdに流すことが出来ます。 https://github.com/y-ken/fluent-plugin-mu…

待望の正規表現の否定パターンに対応した fluent-plugin-rewrite-tag-filter v1.3.0 をリリースしました #fluentd

ログ収集ツールFluentdに、Apacheのmod_rewriteのようにtagを自在に書き換える機能を追加する、fluent-plugin-rewrite-tag-filterのv1.3.0をリリースしました。 https://github.com/y-ken/fluent-plugin-rewrite-tag-filter http://rubygems.org/gems/fluent…

fluent-plugin-rewrite-tag-filter v1.2.1 をリリースしました。設定サンプルと共にプレースホルダ機能強化内容を紹介します。 #fluentd

ログ収集ツールFluentdに、Apacheのmod_rewriteのようにtagを自在に書き換える機能を追加する、fluent-plugin-rewrite-tag-filterのv1.2.1を先日リリースしました。 https://github.com/y-ken/fluent-plugin-rewrite-tag-filter http://rubygems.org/gems/fl…

gihyo.jpにて、MySQLで使える全文検索プロダクトmroongaに関する連載を始めました

MySQL 5.0+Sennaという組み合わせの「Tritonn」が広まり始めたのは2008年頃でしたでしょうか。 あれから月日が経つこと5年。2013年となった今、ドキュメントが陳腐化するMySQL 5.0を捨て、MySQL 5.6で使える全文検索プロダクト「mroonga」へ移行しようとあ…

InnoDBはALTER TABLE ○○○ ORDER BY ○○○ DESC;で並び替え済みテーブルを作れない

MyISAM全盛時代には、こんな参照性能高速化手法がありました。 ALTER TABLE foo_table ORDER BYsortDESC;といったクエリで予めテーブルの内容を並び替えておくことで、SELECT時のORDER BY句が省略出来るというものです。 しかしこれ、InnoDBでは使えないので…

mroongaで「API version for STORAGE ENGINE plugin is too different」というエラーが起きたときの対処法

以下のエラーが起きてしまった時の対処法を紹介します。 2013-06-04 17:36:01 21440 [ERROR] Can't open shared library 'ha_mroonga.so' (errno: 0 API version for STORAGE ENGINE plugin is too different)

Git小技:実例で見る、別ブランチの差分をrebaseやmerge以外で取り込む方法

git

ブランチを切ってから時間が経過し、大本のmasterないしdevelopブランチのコミット内容を取り込みたい時のお役立ちメモ。 使えるシーン fast-forwardでの取り込みはこんな時に便利です。 緊急リリースなどで、git-flowのお約束であるdevelopブランチを経由せ…

mysqldumpで作ったSQLファイルを流し込んだときに'multiple triggers with the same action time and event for one table'というエラーが起きたときの処方箋

とある日のこと、MySQL-5.6環境にてmysqldumpを行いつつmysqlコマンドでデータを流し込んでいると、以下のエラーが発生して止まりました。 そんな時はmysqldumpコマンドの引数に--skip-triggersを追加しましょう。

133もの修正が行われた MySQL-5.6.12 が配布開始となりました

133もの不具合及び機能改善が施された MySQL-5.6.12 が配布開始となりました。 5.6.11に続き、今回の更新も盛り沢山ですね。後半では、yumでのアップデート方法も併せて紹介します。 リリースノート InnoDB関連の修正が39、レプリケーション関連の修正が21と…

mroongaのインストール/アンインストール時に発行するするクエリと、その用途をまとめて解説

mroongaのプラグインインストール・アンインストールを手動で行いたい方向けのメモ。 MySQLが起ち上がっていない状態で、プラグインをインストールした時にも必要ですね。 更新履歴 2014年1月8日:mroonga-3.07の新機能であるmroonga_escapeのトピックを追加…

ますます進化したMySQL-5.6のレプリケーション状況出力(SHOW SLAVE STATUS構文)をMySQL-5.0と比較する

MySQL-5.6ではSHOW SLAVE STATUS;の出力が大幅に変わりました。 嬉しいポイントとしては、Last_SQL_Error_Timestampというカラムが増えたことです。 これはレプリケーションエラーが起きた際、それが何時何分に起きたのかが分かるのです。 従来であればサー…

mroongaで「ERROR 1005 (HY000): already used name was assigned」エラーが起きた際の復旧手順

存在しないテーブルなのに、テーブルが作れなくなった。 そんな現象に遭遇した時のトラブルシューティングを紹介します。 DROP TABLE ...の後にCREATE TABLE ....とした所、消したはずのテーブルが作れない show tables;を見る限り存在しないので、MySQLとし…

Fluentdを用いたサービスの障害検知・電話等での通知を自動化する、夢のプロダクト構想。その名は「fluent-plugin-guardian」である。

Fluentdを用いたサーバ・サービスの死活監視・通知の自動化を行う、夢のプロダクト構想があります。 しばらくは設計の検討を進め、6月頃から開発、2013年の秋頃に安定版のリリースを目指したい。 これを実現すべく、「こうあるべきだ論」「こんな事が実現で…

Twilioのマークアップ言語TwiMLを無料ホスティングするサービス「twimlbin」をRubyから利用する「twilio-twimlbin」を公開しました

Twilioを利用して電話を掛ける際、外部からアクセスできるXMLのURLを指定する必要があります。 それはつまり外部公開サーバの用意が必要となるので、利用の敷居が高いと思われがちです。 そこで、Twilioが公式に提供する「twimletsというサービスがあります…

日本語読み上げ対応。FluentdからTwilioの電話APIを操作する「fluent-plugin-twilio」を使って電話を掛けてみた

Twilio(トゥイリオ)という話題の電話APIサービスをご存じでしょうか。 これをFluentdに組み込むプラグイン「fluent-plugin-twilio」を作成・公開しました。 Boundioという電話APIサービスが廃止となり、行き場を失っていた方にも朗報です。 fluent-plugin-…

yumでインストール出来るpigzコマンドでマルチコア性能を生かした高速並列圧縮をする

ファイル・ディレクトリのgzip圧縮を行いたいが、1コアしか使われないので時間が掛かる。 待ちきれない。8コア以上のCPUを活かしてパラレルでgzip圧縮をしたい。そんな方に朗報です。 yum(rpm)でさくっとインストール出来る「pigz」を紹介します。

MySQL-5.5/5.6でのレプリケーション利用者に伝えたい「RESET SLAVE」にまつわる怖い話

MySQL-5.5よりRESET SLAVE;の挙動が変わり、直後にCHANGE MASTER構文を 発行しないと場合によっては問題が発生するとMySQLのドキュメントに記載されていました。 さらに、RESET SLAVE ALL;というクエリもサポートされたようです。 どういう事なのでしょう? …

AWSのRDSでタイムゾーンを設定したいときのベストプラクティス

RDSはUTCで動いているので、何らかの方法でタイムゾーンを設定する必要があります。 さあどうするか。

groonga/mroongaのトークナイザー(tokenizer)の挙動を追ってみる

トークナイズ機能は、全文検索機能に無くてはならない機能です。 欧米圏であれば、最低限スペース区切りに対応していれば実用的に使えます。 しかし、中国語、日本語、韓国語への対応をする場合には、CJK対応言われる実装が必要です。 汎用的な分かち書き(…

MySQL 5.5からの新機能、インデックスへのコメント付与を行う方法

MySQL 5.5より、インデックスへのコメント付与が可能となりました。 全文検索エンジンmroongaは、その機能を用いてFULLTEXTインデックスの生成方法を変えております。 インデックスコメントについての情報が少なかったので、紹介したいと思います。

mroongaのテーブルを、ストレージモードからラッパーモードに変換する方法

storageモードだとデータ型の扱いがMySQLでのそれと違い困っている。 そうだ、wrapperモードにしよう、と思い立った方向けの記事です。

mroongaのカテゴリを追加しました。

MySQLの全文検索プラグイン「mroonga」の記事が増えてきました。 なのでmysql-mroongaというカテゴリを追加し、一覧性を良くしました。 サイドバーのカテゴリ一覧からも辿れますし、以下URLからも参照できます。 http://y-ken.hatenablog.com/archive/catego…

groonga/mroongaの文字列正規化機能 (normalizer) の挙動を追ってみる

groonga/mroongaが標準で備える文字列正規化機能(ノーマライザ・normalizer)として、 いわゆるgroonga独自のnormalizer(NormalizerAuto)と呼ばれるもがあります。 これは、大文字・小文字だけでなく、全角・半角を同一視できるという UnicodeのNFKCを用い…

MySQL-5.6の/var/log/mysqld.logへ出力される時刻の表記にまつわる不思議

MySQL-5.6から、/var/log/mysqld.logへ出力時の時刻表記が代わり、 YYMMDDから、YYYY-MM-DDという形式になりました。 ところが、mysqld_safe Starting mysqld daemon ... の出力だけ古い形式のままでした。 MySQL Bugをあたってみましたが、特に言及はされて…

MySQLのユーザ定義関数(UDF)のbase64encode / base64decodeを使ってみた

MySQLのユーザ定義関数(UDF)には淡い夢を感じます。 この可能性を探るべく、Base64のエンコード・デコードを題材に触れあってみたいと思います。 動機としては、MySQLのユーザ定義関数(UDF)を作りたいと思い、雰囲気を知りたかったから。 手短なものであ…

「Percona Live: MySQL Conference And Expo 2013」のPDF資料

「Percona Live: MySQL Conference And Expo 2013」のPDF資料が続々と上がっています。 これは要チェックですね。 http://www.percona.com/live/mysql-conference-2013/slides

MySQL-5.6.5の新機能「GTID」を使う際に抑えておきたい落とし穴

GTIDというと、MySQL-MHA無しでもフェイルオーバーできる素晴らしい機能だというのが一般的な認識ではないでしょうか。 私もそう思っていました。 しかしよくよく調べてみると、色々な制約があるようです。

mroongaでparserとnormalizerを同時に指定する方法

mroonga-3.03より、インデックスのコメントにて、 parserとnormalizerを指定できるようになりました。 それぞれのスキーマ(テーブル構造)設計のサンプルを交えて紹介します。 その後に、mroongaで使えるparserとnormalizerの一覧を紹介します。

mroongaで特殊記号を用いた全文検索を行うときのエスケープ方法

mroongaで()~+><-*などの記号を含んだ文字列を検索しようとすると、以下のエラーが起きます。 ERROR 1064 (42000): failed to parse fulltext search keyword 本日はその対処法を紹介します。

MySQL-5.6.11-1を使っている場合にはMySQL-5.6.11-2へアップデートしましょう

MySQL-5.6.11-1を使っている場合にはMySQL-5.6.11-2へアップデートしましょう。 既に北陸先端科学技術大学院大学(JAIST)のミラーからはMySQL-5.6.11-1のバイナリは無くなり、MySQL-5.6.11-2が公開となっております。 現象 以下エラーが発生して接続が出来な…

MySQL-5.5.6から仕様が変わった「MySQL-shared-compat」の中身を徹底解剖

MySQL-5.5.6から仕様が変わった「MySQL-shared-compat」の中身を紐解きます。

CentOS6.xに最新版のMySQL5.6とmroongaを最速でRPMインストールする方法

CentOS-6.xの環境に MySQL-5.6.12 と フルテキスト検索ストレージエンジンであるmroongaの最新版を入れる方法を紹介します。 以下それぞれ、ステップを追って紹介します。 オラクル公式の MySQL-5.6 バイナリを yum (rpm)で入れる MySQL-5.6.12 対応の mroon…

groonga/mroongaの.mrnファイルがlock failedとなった場合の復旧方法

何らかの原因によりlock failedとなり、mroongaのテーブルを含むデータベースの 操作が出来なくなったときの復旧方法を紹介します。

fluent-plugin-rewrite-tag-filter v1.2.0 をリリースしました。新機能であるremove_tag_prefix設定の使い方を解説します。 #fluentd

お陰様でFluentdプラグインfluent-plugin-rewrite-tag-filterはダウンロードランキングトップ10入りを果たし、定番プラグインとなりつつあります。ありがとうございます! https://github.com/y-ken/fluent-plugin-rewrite-tag-filter http://rubygems.org/g…

「mysql ftppc(full-text parser plugin collection)」に関するスライド・ブログ記事のまとめ

ひたすら「mysqlftppc」に関するスライド・ブログ記事をまとめました。 mysql ftppc とは、MySQLのMyISAMストレージエンジンのPARSERを拡張するプラグインで、標準ではCJK非対応なのですが、これによりMeCabなどでの分かち書きが可能となるものです。

MySQL-5.6.4からの新機能「InnoDB FullText Search」という全文検索機能でWITH PARSERが動かないので調べてみました

MyISAMで出来るparserの指定、InnoDBでも出来たら夢が広がりますよね。 そう、MySQL-5.6.4から対応となったInnoDB FullTextSearchを、 自作のparser pluginで拡張できるとしたらもう、最高じゃないですか! クエリとしてはFULLTEXT INDEX (...) WITH PARSER …

全文検索エンジン Tritonn (MySQL-5.0+Senna) からMySQL-5.6対応「mysqlftppc」への移行ガイド

Tritonn (MySQL-5.0+Senna) から「mysqlftppc」への移行を行う際のTipsをまとめました。 mysqlftppcは、MySQL ftppc (MySQL Full Text Parser Plugin Collention)の略です。

ニコニコニュースでも使われている全文検索パーサプラグイン「MySQL-ftppc」のMySQL-5.6対応版を作りました

MySQL-ftppc (MySQL full-text parser plugin collection) という、全文検索パーサプラグインはご存じでしょうか。 これはMySQL標準の Full Text Parser を置き換えるもので、hiroaki-kawai氏によってこの世に生まれました。 ストレージはMyISAMを利用します…

全文検索エンジンTritonnのスペルをToritonnとしていた記事を見つけたため、訂正を行います

スペルミスの訂正を行いました。一部URLの変更があるため、お知らせします。 URL中のスペルミス訂正のため、本記事は以下URLへ移動しております。 全文検索エンジン Tritonn (MySQL-5.0+Senna) からMySQL-5.6対応「mysqlftppc」への移行ガイド

iPhoneアプリ「Gmail」にて、既読メールの新着通知が止まらないときの対処法

この数日間「Gmail」iPhoneアプリからの、新着お知らせが止まりません。 それも新しいメールが来ているわけでは無く、既読メールに対する新着通知なのです。 しかし他のiOSやAndroid端末ではその現象は起きていません。 よって、端末側で何か問題が起きてい…

groonga(rroonga)を利用したソースコード全文検索エンジン"Milkode"をApache Passengerで軽快に動かす方法

Rubyで書かれたMilkodeというソースコード検索エンジンが巷で評判です。 コマンドラインだけでなく、WEBブラウザから利用出来るインターフェースも用意されています。 これを導入することで、ソースコードを横断検索した結果のURLを、社内チャットなどでやり…

ApacheログをLTSV形式にする際の2つの落とし穴と対処法+Apache&FluentdのLTSV設定サンプル

ApacheのアクセスログをLTSV形式にしたいと思った方に是非お伝えしたい、 私がハマった落とし穴とその対処方法、その後にApacheとFluentdの設定サンプルを紹介します。 以下に1つでも該当するものがあれば、LTSVの導入メリットは高いでしょう。 テクニカルな…

GrowthForecastをinit.dを用いて自動起動する方法

グラフツールであるGrowthForecastはFluentdと組み合わせた利用で一躍有名となり、自分にとっても欠かせない存在となりつつあります。 ところがOS起動時の自動起動としたくても、公式サイトには以下の記述のみでした。 起動コマンド $ growthforecast.pl --d…

MacOSX でgmakeコマンドが無いというエラーの処方箋

MacではじめるLua:brewコマンドで簡単インストール&動作テスト で環境構築途中、 luarocks install md5コマンド実行時にgmakeが無いというエラーが起きました。 gmake on OSX 10.6?の記事によると、「make is usually the same as gmake」とのこと。 歴史…

Mac OSXではじめるLua:brewコマンドで簡単インストール&動作テスト

軽くて速いと評判のスクリプト言語である、Luaを使ってみたレポートをしたいと思います。 Luaとは Luaはプログラムの機能を拡張する、いわゆる組み込み用途に特化したスクリプト言語。 軽快で高速、組み込みが容易、移植性が高い、といった特徴を持ち、多く…

digやhostコマンドが劇的に便利になるbash関数を作りました

ブラウジング中にふとDNSレコードを調べようとする時、ドメインやホスト名だけを切り出すのは手間ですよね。 そこで、digやhostコマンドの引数にhttp://などが含まれていても動くbash関数を作りました。 実行サンプル hostやdigコマンドが、ブラウザのURL欄…

Linuxで8文字を超えるユーザ名を使うと、topやpsコマンドでの表記がuidとなる

「Linuxのユーザ名は8文字までにしましょう」とよく言われますね。 もしLinuxで8文字を超えるユーザ名を使うと、topやpsコマンドでの表記にどう影響するのでしょうか。 そんな疑問を解決すべく、実際の挙動を追ってみましょう。

はてなブログにSpeakerdeckのスライドを載せる方法

はてなダイアリーではEmbedボタンから発行されるタグをそのまま使っても貼り付けることが出来ませんでした。 そのため、はてなブログも同様かと思い、貼り付け方を調べましたが見当たりません。 もしやと思い、発行されたタグをそのまま貼り付けると、驚くほ…