Y-Ken Studio

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

2013-01-01から1年間の記事一覧

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を、社内チャットなどでやり…