5 件中 1 - 5 件を表示
Displaying posts with tag: ytkit (reset)
ぼくがかんがえたさいきょうのMySQL監視スクリプトのはなし

PHPerKaigi 2021 でトークしてきた話です。

これは yt-healthcheck の話で、ウチの環境ではこれを5分に1回、crondからキックしています。

喋っていた他にもいくつかひねりがあって、でも再集録の時間が取れなくて断念したネタもあります。

  • yt-healthcheck (というか、 ytkit 全部そうのはず)が実行するクエリーは全て /* ytkit <関数名> */ SELECT .. のようにコメントが入っている
    • ジェネラルログとかで除外したいのでグレッパビリティのあるキーワードを埋め込んでおく
  • innodb_stats_on_metadata=ON で …
[さらに読む]
InnoDBのHistory list lengthの監視と原因スレッドの特定と

TL;DR

  • yt-healthckeckHistory list length ( trx_rseg_history_len ) の監視を追加した
    • --history-list-enable=1 すると有効になる(そのうちこっちをデフォルトにする…)
      • MySQL 5.6とそれ以降のみ対応、もう5.5は知らない…
    • デフォルトで10万がワーニング、50万をクリティカルにしてたんだけどあっさり食いちぎられた
      • その時の確認方法を主に

History list lengthとは(これは SHOW ENGINE INNODB STATUS の出力に載ってる用語、 information_schema.innodb_metrics 的には trx_rseg_history_len

[さらに読む]
information_schema.tables を定期的に貯めてASCIIグラフにしている

最近(でもないけど) information_schema.tables の中身を1日1回程度取得してMySQLに突っ込んでいる。

/*!80013 SET SESSION information_schema_stats_expiry = 0; */

SELECT
table_schema AS table_schema,
table_name AS table_name,
table_rows AS table_rows,
data_length AS data_length,
index_length AS index_length,
data_free AS data_free,
engine AS engine,
NOW() AS last_update
FROM
information_schema.tables
WHERE
table_schema NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys') AND
table_type = 'BASE TABLE'
ORDER BY
data_length + index_length DESC;

CREATE TABLE `table_status_info` (
`seq` bigint unsigned NOT NULL AUTO_INCREMENT,
`ipaddr` varchar(15) NOT NULL,
`port` smallint unsigned NOT NULL, …
[さらに読む]
yt-healthcheckが使っている、そのMySQLがマスターなのかスレーブなのかを判定する方法

Yoku-san no ToolKITyt-healthcheck はデフォルトでは「接続先のMySQLがマスターなのかスレーブなのか mikasafabricなのか 」によって監視項目を切り替える。

—role によって明示的に “master” なり “slave” なりを押し込むこともできるけれど、デフォルトは “auto” で、 yt-healthcheck 自身が勝手にマスターかスレーブかあるいは中間マスター(カスケード構成の2段目、子スレーブ(孫スレーブの親))かを判定する。

https://github.com/yoku0825/ytkit/blob/0.2.1/lib/Ytkit/HealthCheck.pm#L181-L207

判定ロジックはこんな感じ。 …

[さらに読む]
yt-rename-databaseでかつての RENAME DATABASE っぽいことをする

MySQLに RENAME DATABASE が存在していたのは 5.1.7から5.1.22の短い期間だけ(5.1のGAは5.1.30なのでその時にはもう消えていた)

にも拘わらず、かつての日本語版ドキュメントのカバー範囲が「5.1.15-betaまで」なため、俺と似たような時期に日本語ドキュメントを使って勉強していた人はよく知っているイメージ。

ちなみに無くなった理由は「色々考慮してないものが多すぎて色々壊れまくったから」だと思う(個人の見解です)

[さらに読む]
5 件中 1 - 5 件を表示