2016年11月22日火曜日

MySQL 5.7.16, 8.0.0現在、slave_skip_errorsはエラーコードの3000番台をスキップできない

日々の覚書: MySQL 5.7.6でエラーコードが変わった件 の時からMySQLのエラーコードに3000番台が加わった。

それまで1000番台はサーバーサイド、2000番台はクライアントサイドだけだったものが、3000番台もサーバーサイドのエラーコードとして設定されている(エラー番号はMySQL 5.7.16現在)



エラー番号 マクロ 備考
1000~1884 ER_*, WARN_* サーバーサイドエラー
2000~2062 CR_* クライアントサイドエラー(libmysqlclientの場合)
3000~3193 ER_* サーバーサイドエラー(5.7.6から)
例えばレプリケーションのI/OスレッドはMySQLサーバーの中にいるけれど実際はクライアントなので2000番台のエラーもハンドルする必要があったりして、ちょこちょこと"2000より小さければサーバーサイドエラー", "2000以上ならクライアントサイドエラー" みたいな判定があったりする。


もうお気付きだろう。3000番台のエラー番号は2000より大きい。

MAX_SLAVE_ERROR マクロは2000で、

https://github.com/mysql/mysql-server/blob/mysql-5.7.16/sql/rpl_slave.h#L66

ここ とか ここ とか ここ とかで err_code < MAX_SLAVE_ERROR で判定されている。


というわけでバグレポートしたのでしたん。

MySQL Bugs: #83184: Can't set slave_skip_errors > 3000

2016年11月18日金曜日

WindowsでもRabbitとRabbiterを使いたい

初めて成功したので忘れないうちにメモ。

0. CygwinのRubyにパスが通ってると、rabbitを起動した時にCygwinのRubyを掴もうとすることがあってダメぽになることがある。

1. RubyInstallerでRubyをインストール。取り敢えず2.3.1で上手く動いた。 Downloads

2. 対応したDevKitをダウンロードして適当な場所に展開(取り敢えず C:\Ruby23-x64\DevKit に展開して上手くいってる) Development Kit · oneclick/rubyinstaller Wiki によると "Download it, run it to extract it somewhere (permanent)." らしい。消しちゃダメなのか。

> ruby dk.rb init
> ruby dk.rb install


2-1. `ruby dk.rb install` で "Invalid configuration or no Rubies listed. Please fix 'config.yml'" と言われる。ruby.exeの場所が見付けられていないので、config.ymlを修正してもう一度。

3. これでやっと `gem install rabbit rabbiter` できるかと思いきや、SSLのエラーを食らう。

ERROR:  Could not find a valid gem 'rabbit' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
ERROR:  Could not find a valid gem 'rabbiter' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

bundle install がこけるようになった の "rubygems-updateをインストールする" で解決した。 bundle install がこけるようになった(改訂版) には "rubygems 2.4にはバグがあってこの方法はとってはいけない" みたいなことも書いてあるけれど、2016年10月現在の rubygems-update の最新版は2.6.7だったのでもういいかなと思ってやってみた。
取りあえず問題は出ていない。

> gem install --local rubygems-update-2.6.8.gem
> update_rubygems

4. ようやくRabbitとRabbiterが入った。後は楽しむだけ!

> gem install rabbit
> gem install rabbiter


( ´-`).oO(ところで、rabbitのsample.rdとかsample.mdとかを動かそうとするとrabbitがハングするの俺だけ…?