この記事は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」です。お楽しみに!