タグ

ブックマーク / yoku0825.blogspot.com (8)

  • MySQLのスローログ関連のパラメーターが評価される順番

    別のエントリー書いてたら、前に誰かに聞かれたなと思ったのでメモ。 スローログが出力されるかどうかの判定は、 1. スローログが有効化されていること 2. log_slow_admin_statements = 0 で除外されるステートメントではないこと 3. (long_query_time以上の時間がかかっている) OR (log_queries_not_using_indexes にマッチする) クエリーであること 4. クエリーのExaminedが min_examined_row_limit 以上であること 5. log_queries_not_using_indexesにマッチしていることが決まっている場合、log_throttle_queries_not_using_indexes で設定された以上の時間が経っているかどうか 意外と4. が知られてなくて、どんなに時間がかかって

    y_uuki
    y_uuki 2018/07/12
  • mysqlbinlogでバイナリログをバックアップするとか

    mysqlbinlogは今まで(バックアップ用途で)リモートからバイナリログを読ませようとしても、 ・SQLテキスト形式にエンコードした後のものを出力させるだけ。 ・その時点の最後のエントリまでしか読み込めない。 ・出力先ファイル名は1つしか指定できないので、 読み込み元のバイナリログが複数でも出力は1つ。 だったのが、5.6のmysqlbinlogでは ・エンコードする前の状態のまま書き出せる。 ・tail -fぽく待機して、更新があれば続けて書き出せる。 ・ファイル名はマスターのものと同じものにできる。 スイッチしたらmysqlbinlog側のファイル名も変わる。 と、スレーブに--log-slave-updatesを付けた様な動作が出来る様になった。 バックグラウンドにして常駐させておけば、暇そうなサーバにバイナリログをリアルタイムにバックアップ出来る。 マスターから見るとレプリケー

    y_uuki
    y_uuki 2017/11/09
  • MySQLのSELECT .. FOR UPDATEはREPEATABLE-READでも直近にコミットされたレコードを返す

    MySQLのSELECT .. FOR UPDATEはREPEATABLE-READでも直近にコミットされたレコードを返す TL;DR トランザクション分離レベルがREPEATABLE-READの場合、SELECT .. FOR UPDATEやSELECT .. LOCK IN SHARE MODEとロックなしのSELECTの結果が違うことがある。 仕様らしい => 漢(オトコ)のコンピュータ道: InnoDBのREPEATABLE READにおけるLocking Readについての注意点

    y_uuki
    y_uuki 2017/05/27
  • innotopが最近息してないなーと思ったんだ

    使っている人口がどれくらいいるかわからないですが、 innotop というtopライクにMySQLの状況を表示してくれる便利スクリプトが世の中には存在しています。 日々の覚書: innotopがすごく便利 もともとGoogle Codeにホスティングされてたんだけど、Google Codeはサービス終了しちゃったから(いつからか知らないけど)GitHubに移行してて、ひょっとしたらこのまま(移行だけしてメンテナンスされなくなって)息を引き取るんじゃないか疑惑が当時から俺の中にあったりなかったり。 原因がそれかどうかは全く知らないけれど、 innotopは5.6までは問題なく使える(5.6で使えなくなった時にちゃんと対応された)んだけど、5.7だと `SHOW ENGINE INNODB STATUS` をパースできなくなっていて(それ以外は何とか使える)、随分前からこれはIssueに上がっ

    y_uuki
    y_uuki 2016/05/10
    まじか
  • はじめてのMySQLへのPull-Request体験談

    1. Oracleプロファイルを持っていないといけない。ダウンロードする時に "No thanks" に気付かないと作らされるアレ。 2. Oracle Contributor Agreement にサインしないといけない(OCAにサインしたかどうかがOracleプロファイルに紐付けられる…ので、Oracleプロファイルが必要みたい) が前提になる。 【2016/05/06 23:35】 ちなみにMariaDBの場合も似たようなもので If you want the code to be part of the main MariaDB tree, you also have to give the MariaDB Foundation a shared copyright to your code. This is needed so that the foundation can of

    y_uuki
    y_uuki 2016/05/02
  • MySQL 5.5.30のmysqldumpに当てるパッチ書いた

    前々からパッチは書いてあって(番環境で使ってる)公開するする詐欺だったんだけれども、 著作権周りのごたごたが社内でやっと落ち着いたので今度こそ公開。 修正している内容の主なものは、 "--master-data=2と--dump-slave=2を同時に指定できるようにする" です。 何に使うかというと、こんな構成で ・バイナリログのバックアップはlog-slave-updatesでスレーブにとってあるので、 ・マスターのDISKが消し飛んでもバイナリログからロールフォワードを保証するためには --master-dataと--dump-slaveの両方のポジション情報が必要で、 ・でも2回もmysqldumpは取りたくなくて ・あと—dump-slaveにはFLUSH TABLES WITH READ LOCKをかけてくれないバグがあったり ・要らないSTOP SLAVEをかける(--si

    MySQL 5.5.30のmysqldumpに当てるパッチ書いた
    y_uuki
    y_uuki 2015/12/14
  • 現代のMySQLはもう不要にINをEXISTSに書き換えない

    漢(オトコ)のコンピュータ道: なぜMySQLのサブクエリは遅いのか。 この記事は 2009/3/25 に書かれたもののようである。 2009年3月といえばMySQL 5.1がGAになってわずか半年、MySQL 6.0.10-alphaがリリースされた頃で、MariaDBもまだ姿を見せていない頃だ。 時は流れて2015年、MySQL 5.6がGAになって早2年半、5.7のGAマダァ-? (・∀・ )っ/凵⌒☆チンチン な頃なので、もういい加減誰か言ってくれてもいいんじゃないかと思う。 もうMySQL(5.6)は不要にINをEXISTSに書き換えたりしないんだよって mysql51> EXPLAIN SELECT * FROM Country WHERE Continent = 'Asia' AND Code IN -> (SELECT CountryCode FROM City WHER

    y_uuki
    y_uuki 2015/06/19
  • linux-fincoreを使ってページキャッシュを覗く

    ページキャッシュにどれだけページが載っているかを調べたいなーと思うと、 ファイルがページキャッシュに乗っているかどうかを調べる というのがよく引っかかって、 そもそもfincoreってどっから出てきた名前なんだと思ったらlinux-ftoolsというところに行き着いた。 linux-ftoolsはApacheライセンスで、PerlとINLINE Cで書かれたfincoreはGPLv2なんだけど、 どっちが家なんだかもともとオリジナルがあるのかよく判らない。 取り敢えずlinux-ftoolsを落としてきてコンパイル。 ダウンロード可能なtarballが存在しないので、hgとやらでcloneするしかなさそう。 hgコマンドが入ってなかったので、mercurialパッケージを突っ込んでから(恥ずかしながらこれ知らなかった。。) $ sudo yum install -y mercurial

  • 1