この記事はMySQL Advent Calendar 2023 8日目の記事です。
今回もMySQL Shellの小ネタです。
cluster.status()でレプリカの遅延情報だけ取得して検知させたい
MySQL Shellのcluster.status()、JSON形式だから特定の情報「だけ」を抜き出せないかなー?という人向け
例)
MySQL 127.0.0.1:27536 ssl JS > cluster.status() { "clusterName": "testCluster", "defaultReplicaSet": { "name": "default", "primary": "127.0.0.1:27536", "ssl": "REQUIRED", "status": "OK", "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.", "topology": { "127.0.0.1:27536": { "address": "127.0.0.1:27536", "memberRole": "PRIMARY", "mode": "R/W", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.35" }, "127.0.0.1:27537": { "address": "127.0.0.1:27537", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.35" }, "127.0.0.1:27538": { "address": "127.0.0.1:27538", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.35" } }, "topologyMode": "Single-Primary" }, "groupInformationSourceMember": "127.0.0.1:27536" }
レプリカのreplicationLagを抜きたい場合こうする
MySQL 127.0.0.1:27536 ssl JS > cluster.status()["defaultReplicaSet"]["topology"]["127.0.0.1:27537"]["replicationLag"] applier_queue_applied
MySQL 127.0.0.1:27536 ssl JS > cluster.status()["defaultReplicaSet"]["topology"]["127.0.0.1:27538"]["replicationLag"] applier_queue_applied
はい、とれました。
とはいえ…
バッチでゴリゴリぶん回したいとかになってくるとjqとか使うのが良いでしょうね。
今回のはちょっと見てみたいけど、不要な情報見たくない時どーぞ、って感じの話でした。
明日のイルカのお友達は
いつも僕が色々とお世話になってる@meijik さんの「最新のSQL標準(SQL:2023)とFirebird/MySQL/PostgreSQL」です。お楽しみに!