MySQL Fabric&Routerつらくない Advent Calendar 2015 の1日目でもあります。
さて…昨年あんなにも MySQL Fabric関連のブログ を書いたのに、少なくとも2015/12/1現在、MySQL Fabricがちっとも流行ってないのは何故だろうとか考えてみました。
- Fabric対応コネクターが必要
- MySQL 5.6以上かつGTIDが必要
- バッキングストア(mysqlfabricデーモンが情報をストアするためのmysqld)を自前で冗長化しないといけない
ググったら 「MySQL Fabric つらい」 とかサジェストされる
肝心のConnector/C (DBD::mysqlはコイツ依存)はまだLabsにいるし、mysqlndのMySQL Fabricも2015/12/1現在でまだ"pre-alpha"ってことになってる(シャード機能には対応してるけどHA機能には対応してない…とか1年前には書いてあったけど、HA機能に対応した素振りもなければ対応してないとも書いてなくなった。。)
でも。2015年10月。
MySQL 5.7のGA と同時にMySQL Router のGAも発表されました(されたんですよ!)
このMySQL Router、ちょっと話を聞いてみた限りだと、
- MySQL ProxyみたいにmysqlrouterがポートをLISTENして、実際の処理はバックエンドのMySQL Serverに投げる
- MySQL Fabricのクライアントになれる(MySQL RouterがFabric対応Connectorの代わりにマスターやシャードの在り処の問い合わせをしてキャッシュしてくれる。アプリからはMySQL Routerにクエリーを投げればそれだけでMySQL Fabric無双)
- プラグインを書けば他にもゴニョれる
MySQL Fabricのクライアントになって、MySQL Fabric非対応コネクターのクエリーもルーティングしてくれるということで、これで 自分でゴニョったDBD::mysql を使わなくてもMySQL Fabricが試せると。つらくない!
という訳でまずは試しなのでソースからビルドしてみることにしましょう。ダウンロードページは ここ 。
$ wget http://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-2.0.2.tar.gz $ tar xf mysql-router-2.0.2.tar.gz $ cd mysql-router-2.0.2 $ cmake -i .. Variable Name: ROUTER_CONFIGDIR Description: Location of configuration file(s) (config_folder) Current Value: /usr/local/etc/mysqlrouter New Value (Enter to keep current value): Variable Name: ROUTER_LOGDIR Description: Location of log files; empty is console (logging_folder) Current Value: /var/local/mysqlrouter/log New Value (Enter to keep current value): Variable Name: ROUTER_PLUGINDIR Description: Location MySQL Router plugins (plugin_folder) Current Value: /usr/local/lib/mysqlrouter New Value (Enter to keep current value): Variable Name: ROUTER_RUNTIMEDIR Description: Location runtime files such as PID file (runtime_folder) Current Value: /var/local/mysqlrouter/run New Value (Enter to keep current value): ..
取り敢えずcmakeしてみて思うことは、ちょっとあっちこっち散らばり過ぎじゃないですかねディレクトリ。
あとはいつもビルドに使うようなモジュールの他にDoxygenが必要だよって言われてみたりする。
Doxygenを入れたらCMakeCache.txtを消してからもう一度cmakeして、さあいざ
$ make [ 2%] Building CXX object harness/harness/CMakeFiles/harness-archive.dir/src/loader.cc.o cc1plus: error: unrecognized command line option "-Wpedantic" make[2]: *** [harness/harness/CMakeFiles/harness-archive.dir/src/loader.cc.o] Error 1 make[1]: *** [harness/harness/CMakeFiles/harness-archive.dir/all] Error 2 make: *** [all] Error 2
あっ! これ確かLabsの時にも引っかかったやつだ! つらくない!
-- You need C++11 support, but /usr/bin/c++ does not have that.
— yoku0825 (@yoku0825) 2015, 9月 20
メッセージはちょっと違ったっぽいけど。
$ gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ sudo wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo $ sudo yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ $ scl enable devtoolset-2 bash
CentOS 6.5にGCC 4.8.2をレポジトリで入れてみた - 以下省略! こちら様を参考にしてgcc-4.8.2を放り込んで、cmakeのオプションに渡してやると
$ rm CMakeCache.txt $ cmake -DCMAKE_CXX_COMPILER:FILEPATH=/opt/rh/devtoolset-2/root/usr/bin/g++ CMAKE_C_COMPILER:FILEPATH=/opt/rh/devtoolset-2/root/usr/bin/gcc . $ make .. Linking CXX executable ../../../stage/bin/mysqlrouter [100%] Built target mysqlrouter
通ったー! やっと通ったー!
なお、ここまで(前に引っかかったにも関わらず)1時間かかっている。Labsの時にあった `cmake .`でインソースビルドできないやつ も直ってるけど、rpmで入れればよかった。でもrpmという選択肢がある時点でつらくない!
0 件のコメント :
コメントを投稿