mikasafabric for MySQLをオープンソースライセンスで公開しました

ぬいぐるみが好きな方のDBAです。
YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawaに弊社のエンジニアが延べ4名登壇しました の時点で yoku0825 がぼっこぼこにされたMySQL Fabricですが、
あまりにもつらかったので、おとなしくフォークして自前でパッチを当てることにしました。フォークするついでに名前を変えたのが mikasafabric for MySQL (みかさファブリック フォー マイエスキューエル)になります。
期待通りに使えるMySQL Fabric を目指した結果なので、まあまあ期待通りに動きます(ただし、MySQL Routerとの組み合わせしかサポートしていません。他のコネクターは動くかも知れないし動かないかも知れない。一部、APIの戻りにも手を入れているので)
名前を変えた理由
- MySQLは商標なのでフォークとはいえMySQL Fabricは微妙(MySQL xxxはダメで、xxx for MySQLならOK)
- mikasafabric for MySQL は MySQL Fabric 1.5.6 をベースにしているので、リポジトリー分けるまでは1.5.6-11とかそんなバージョンの振り方をしていたがそれが嫌になった
そもそもフォークした理由
- バグフィックスリリースが全然進まない
- これ とか これ とか これ とか
- MySQL 5.7の offline_mode を使えば、コネクションプール環境でも上手く行きそうなので使いたかった
- 5.6のサポートを切り捨てないといけないので、本家はたぶんやらないだろうと踏んだ
パッチしている場所
- fabric.logテーブルへのログ出力を止めてる
- いつかfabric.cfgで設定できるようにしたい
- offline_mode のサポート
- offline_mode = ONの時はサーバーが停止しているとして扱う
- マスター降格時に offline_mode = ON , offline_mode = OFFを挟むことで、コネクションプールでも強制的に再接続を促す
- 起動時、バッキングストアに権限が足りているかどうかのテスト
- ついでにバッキングストアの event_scheduler = OFF の場合にWARN出力
- Multi-Source Replicationの一部サポート
- 名前なしチャンネル(FOR CHANNEL ‘’)をmikasafabric for MySQL用に使用
- それ以外のチャンネルはmikasafabric for MySQLと独立して使用可能に
- その他小さな改善とバグフィックス
mikasafabric for MySQLの(完全な?)チェンジログは こちら です。
mikasafabric for MySQL はGPLv2で公開されています。
MySQL Routerと mysqlfabricコマンドから利用する分にはMySQL Fabric 1.5.6と互換性がありますので、今後もうちょっとずつ MHA for MySQL に追いつけるように機能を追加していきたいと思っています。
mikasafabric for MySQL と MySQL Router を利用したMySQLのHA構成については、 どこか で発表したりブログに書いていく予定です。
mikasafabric for MySQL をよろしくお願いします!
( ´-`).oO(なお弊社のCTO的な人が「これからもOSSの活用と改善による貢献に向けて尽力してまいります的なことを入れといて」って言ってたのでこのへんにちょこっと)