RowDeck: MySQL® Monitor iPhone版

MySQLで何が燃えているかを把握する。 火を消す。

夜中に呼び出されたのに、ノートPCは家にある?RowDeckは「ヘルス」画面で開き、ロックを保持しているトランザクションを見つけ、その後ろで止まっているセッションの数を数えます。iPhoneから正しいスレッドを終了し、本当の修正はデスクに戻ってから。

Free Pro $14.99(買い切り) MySQL 8.0以降とMariaDB 10.5以降 iOS 17以降 iPhone

インシデントを4つの画面で見る
対応環境 MySQL 8.0以降MariaDB 10.5以降Percona Server for MySQLAmazon RDSAurora MySQLセルフホストのサーバー
午前3時の対応

呼び出しからブロック解除まで、4つの画面で。

内蔵のデモは、MySQLでよくあるインシデントを再現します。忘れられたトランザクションがshop.ordersの行ロックを保持し、その後ろでマイグレーションが待ち、8つのセッションが列をなします。ステップを選ぶと、その画面が表示されます。

サーバーがなくても試せます。「接続」画面でデモデータを見るをタップしてください。アカウントは不要で、Proの操作もサンプルデータで動きます。

「重大」状態のprod-shopの「ヘルス」画面:「ブロックされている」は8件が待機中、接続数は151のうち112、最長のクエリは09:12
ヘルス · 重大 · 8件が待機中
  • 行ロック

    InnoDBのロック待ちを、ロックを保持しているスレッドごとにまとめ、それぞれが実行しているSQLと待ち時間を表示します。

  • Metadata locks

    ALTER TABLEの待ち行列:誰がテーブルのmetadata lockを待っていて、どのトランザクションがそれを保持しているか。代わりに待機中のALTERをキャンセルするボタンもあります。

  • Deadlocks

    InnoDBの最新のdeadlock:誰が何を待っていたか、どのトランザクションがロールバックされたか。

  • Amazon RDSでの終了

    Amazon RDSやAuroraでKILLの権限がない?RowDeckはmysql.rds_killを呼び出し、確認画面でその経路を明示します。

Purge と膨張

INSERTが失敗し始める前に、AUTO_INCREMENTの枯渇に気づく。

「Purge と膨張」画面は、各auto-incrementの範囲をどれだけ使ったか、purgeがどれだけ遅れているか、どのテーブルとインデックスが無駄に容量を占めているかを示します。

  • 列ごとの余裕。order_items.idがINTの範囲の93%に達すると、RowDeckは範囲の終わりではすべてのINSERTが失敗すると警告し、列を拡張するALTERをコピーします。
  • History list lengthと、InnoDBが古い行バージョンをpurgeできない原因になっている最も古いトランザクション。
  • 断片化したテーブル、未使用または重複したインデックスと、それぞれが占める容量。
  • 一覧からANALYZE TABLEを実行でき、テーブル名を入力すればOPTIMIZE TABLEも実行できます。DROP INDEXとALTERのステートメントはクリップボードにコピーされ、いつ実行するかは自分で決めます。 PRO
「Purge と膨張」画面:INTの範囲の93%に達したorder_items.idと、範囲の終わりではすべてのINSERTが失敗するという警告、1.2Mのpurge遅延、最も古いトランザクション
アプリの中身

MySQLのインシデント中に開く、すべての画面。

最初に「ヘルス」があり、各タイルの奥にネイティブの画面があるので、スマートフォンのキーボードでmysqlプロンプトを使わずに済みます。それ以外はSQLコンソールでカバーし、すべてのステートメントを実行前にチェックします。

  • ヘルス

    1つの判定と、しきい値付きの10枚のタイル:max_connectionsに対する接続数、ブロックされているスレッド、最長のクエリ、1秒あたりのクエリ数、buffer poolのヒット率、purgeの遅延、auto-incrementの余裕、deadlock、レプリケーション、ディスク。表示している間は10秒ごとに更新され、iOSと同じくダークとライトに対応します。

    ライト表示のアプリの「ヘルス」画面:「重大」、8件が待機中、接続数は151のうち112
  • アクティビティ

    processlistのすべてのスレッドを、待機中のものから順に表示します。実行中、トランザクション中、10秒超、待機中で絞り込んだり、クライアント別にまとめたりできます。

  • レプリケーション

    レプリカ側では、IOスレッドとSQLスレッド、遅延、チャネルを止めたエラー。ソース側では、接続中のレプリカとbinlogが占める容量。

  • スロークエリ

    performance_schemaのステートメントダイジェストを、合計時間、平均時間、呼び出し回数、検査行数で並べ替えて表示します。

  • ストレージ

    最も大きいスキーマ、テーブル、インデックスを、データ、インデックス、空き領域に分けて表示します。

  • データ

    テーブルの閲覧、サーバー側での絞り込み、外部キーの追跡、ページのCSVエクスポートやJSONとしてのコピーができます。行の編集はProで使えます。

  • SQLコンソール

    分類器は入力中のステートメントを「読み取り」「書き込み」「DDL」「破壊的」に分類します。Freeは読み取りを実行し、それ以外はProで実行します。

  • PRO

    自分のモデルで動くAIアシスタント

    インシデントやロックの連鎖を説明し、修正案を作成します。読むのはマスキング済みのスナップショットで、送信する内容を事前に表示し、自分では何も実行しません。デモでは無料です。

    • Anthropic
    • OpenAI
    • OpenRouter
    • Z.ai
    • OpenAI互換サーバー
    • 自分のネットワーク上のOllama
書き込みの前に

親指とサーバーの間には、4つのチェックがあります。

RowDeckはこれらを順番に確認します。どこかで「いいえ」となれば操作は止まり、MySQLには何も届きません。

  1. Pro

    Freeがサーバーに書き込むことはありません。

  2. Read-only接続

    接続をRead-onlyに設定すると、Proであっても、そのセッションで書き込みを許可するまで、その接続への書き込みは止まります。

  3. 分類器

    FreeでもProでも、すべてのステートメントに対して動作します。

  4. 自分での確認

    対象、スキーマ、接続、PRODバッジを示すプレビュー。破壊的な操作と、Production接続での終了は、対象を入力するまで実行されません。

分類器が判定した内容 prod-shop PROD
SELECT * FROM orders WHERE id = 4820118; 読み取り
UPDATE orders SET status = 'shipped' WHERE id = 4820118; 書き込み
CREATE INDEX idx_orders_total ON orders (total); DDL
TRUNCATE TABLE shop.sessions; 破壊的
  • 踏み台サーバー経由

    パスワード、ワンタイムコード、またはキーによるSSH:OpenSSH、PEM、PKCS#8、PuTTY形式のEd25519、ECDSA、RSAキー、またはSecure Enclave鍵。踏み台サーバーの奥に中継ホストを2台まで置けます。

  • ピン留めしたTLS

    RowDeckは初回接続時にサーバー証明書のSHA-256フィンガープリントを表示し、後で変わった場合は接続を止めます。

  • KeychainとFace ID

    パスワード、キー、フィンガープリントは、このiPhoneのiOS Keychainに保管されます。アプリはFace IDで開きます。

  • PROCESSがなくても正直に

    この権限がないと、MySQLは自分のスレッドしか表示しません。RowDeckはそのことを伝え、解決方法を示します:

    GRANT PROCESS ON *.* TO 'oncall'@'%';
画面

内蔵のデモデータで動くRowDeck 1.0。

「ヘルス」画面:「重大」、8件が待機中、10枚のタイル

ヘルス ノートPCを開く前にインシデントを把握。

2つのルートブロッカーと、metadata lockを待つALTER TABLEを示す「ロック」のツリー

ロック 行ロックとmetadata lockを1つのツリーに。

確認のためにスレッドIDを入力した「ブロックしている接続を終了」シート

接続を終了 確定する前に、何のブロックが解除されるかを確認。

「実行中」「トランザクション中」「> 10秒」「待機中」「すべて」のフィルターがある「アクティビティ」画面

アクティビティ 待機中のスレッドが先頭に。

「Purge と膨張」:34 GBを占める6つの未使用インデックスと「DROP INDEXステートメントをコピー」

インデックス 未使用と重複のインデックス、DROP INDEXはコピー済み。

レプリカの「レプリケーション」:IOスレッドとSQLスレッドが実行中、ソースから4.2 s遅延

レプリケーション チャネルの状態と適用待ちのトランザクション。

合計時間順に並んだスロークエリと、呼び出し回数、平均時間、検査行数

スロークエリ 合計時間順。

「ストレージ」画面:412 GBのデータとインデックス、スキーマ、最も大きいテーブル

ストレージ 最も大きいテーブルとインデックス。

保留中の注文で絞り込んだshop.ordersの「データ」タブ

データ ページ内またはサーバー側で絞り込み。

performance_schemaに対する読み取りクエリとその結果を表示したSQLコンソール

SQLコンソール ステートメントごとに分類。

CREATE INDEXが、開いているトランザクションをコミットするDDLとして分類されたSQLコンソール

DDL 実行前に分類器が判定した内容。

行ロックを保持している忘れられたトランザクションについてのアシスタントの回答と、提案された終了操作

アシスタント モデルは自分のもの、操作の判断も自分で。

踏み台サーバー経由のSSHトンネルとキーのインポートを設定した新規接続フォーム

SSHトンネル 自分のキーと中継ホストを使って接続。

ヘルス ノートPCを開く前にインシデントを把握。

料金

監視は無料。Proは一度買うだけ。

RowDeckを本番サーバーに向けて、すべての監視画面を無料で使ってください。対処が必要になった夜に、$14.99を一度だけ支払います。

Free

ずっと無料

$0

1台のサーバーのすべてを確認できます。

  • 保存できる接続は1件。デモと、ソースから開いたレプリカは数えません。
  • ヘルス、アクティビティ、ロック、Purge と膨張、レプリケーション、ストレージ、スロークエリ
  • フィンガープリントをピン留めしたTLS、SSHトンネル、Face ID
  • サーバー側フィルター、外部キー、CSVエクスポート、JSONコピーに対応したデータブラウザー
  • 分類器付きの読み取り専用SQL

Pro

買い切り

$14.99

どのサーバーでも対処できます。

  • 保存できる接続数は無制限
  • クエリと接続の終了、ロックされたチェーンのブロック解除
  • ANALYZE TABLEとOPTIMIZE TABLEの実行
  • 書き込み、DDL、行の編集(確認付き)
  • 自分のキーまたは自分のOllamaで使うAIアシスタント

サブスクリプションもアカウントもありません。デモでは、購入前にすべてのProの操作をサンプルデータで試せます。「購入を復元」は購入画面と「設定」にあります。米国以外では、App Storeが現地の通貨で価格を表示します。

Free Pro $14.99(買い切り) MySQL 8.0以降とMariaDB 10.5以降 iOS 17以降 iPhone

よくある質問

RowDeckとMySQLについてよくある質問

載っていない質問は、support@rowdeck.appまでお寄せください。

Amazon RDS、Aurora、自前のサーバーでも使えますか?

RowDeckは、iPhoneから到達できるMySQL 8.0以降とMariaDB 10.5以降で動作します。セルフホストでもマネージドでもよく、Amazon RDSとAurora MySQLも含まれます。Percona Server for MySQLも使えます。

Amazon RDSとAuroraでは管理者が他のユーザーのスレッドをKILLできないため、RowDeckはプロバイダーのプロシージャであるmysql.rds_killを呼び出します。プロキシの背後では、スレッドIDが別のサーバーのものである可能性があるためKILLを送らず、サーバー上で直接実行するステートメントを示します。

MySQL 5.7と10.5より前のMariaDBはサポート範囲外で、TiDBは監視用のテーブルが異なります。接続したときにアプリがそのことを伝えます。

踏み台サーバーの奥にあるデータベースにも接続できますか?

はい。接続設定でSSHトンネルをオンにし、パスワード、キー、またはこのiPhoneで作ったSecure Enclave鍵で踏み台サーバーにサインインします。キーはOpenSSH、PEM、PKCS#8、PuTTY形式のEd25519、ECDSA、RSAに対応し、パスフレーズの有無は問いません。サーバーが求めれば、ワンタイムコードも使えます。

踏み台サーバーがさらに別のホストの奥にある場合は、中継ホストを2台まで追加できます。RowDeckは初回接続時に各ホストキーをピン留めし、どれかが変わると先に進みません。

認証情報やデータがiPhoneの外に出ることはありますか?

RowDeckはサーバーへ直接、または踏み台サーバー経由で接続します。間にRowDeckのサーバーは入らず、アカウントも不要です。パスワードとキーはiOS Keychainにとどまります。

最初の画面で「完了」をタップすると、クラッシュレポートはSentryへ、利用回数の集計は当方の分析サーバーへ送られるようになります。この画面では両方のスイッチが最初からオンです。どちらも、その画面で、または後から「設定 › プライバシー」でオフにできます。どちらにも、SQL、スキーマ・テーブル・列の名前、ホスト名、値、認証情報は含まれません。詳しくはプライバシーポリシーをご覧ください。

SUPERや管理者アカウントは必要ですか?

いいえ。監視画面には読み取り専用の権限で足り、接続フォームにMySQL用とMariaDB用の一覧があります。最も重要なのはPROCESSです。これがないとMySQLは自分のスレッドしか表示せず、RowDeckは空の一覧を出す代わりに、各画面でそのことを伝えます。

Proの操作で他のユーザーのスレッドを終了するにはCONNECTION_ADMINが必要です。Amazon RDSとAuroraでは、RowDeckが代わりにプロバイダーの終了用プロシージャを使います。サーバーが隠している指標には、ゼロではなく理由が表示されます。

KILL QUERYとKILL CONNECTION、どちらを使えばいいですか?

KILL QUERYは実行中のステートメントを止め、接続とそのトランザクションは残します。KILL CONNECTIONは接続を閉じ、開いているトランザクションをロールバックします。

開いたトランザクションのままSleep状態のスレッドはステートメントを実行していないため、KILL QUERYでは何も変わらず、ロックも残ります。RowDeckはルートが何をしているかを読み取り、待ち行列を解放する終了方法を提示します。

RowDeckがデータベースを壊すことはありますか?

Freeは一切書き込みません。コンソールでの読み取りは読み取り専用トランザクションの中で実行されます。Proでは、すべての書き込みが4つのチェックを順に通ります:Pro、接続の「Read-only」スイッチ、分類器、そして自分での確認です。破壊的なステートメントは対象を入力するまで実行されず、Productionに設定した接続にはPRODバッジが付き、確認がより厳しくなります。

RowDeckはDROP INDEXとALTER … BIGINTをコピーするだけで、実行は利用者に任せます。binlogのpurgeやレプリカでのトランザクションのスキップは行わず、サーバーにLOAD DATA LOCALや、1回の呼び出しでの複数のステートメントを求めることもありません。

SSHでログインしてmysqlを使えばいいのでは?

もちろんできます。午前3時にスマートフォンのキーボードで打つなら、RowDeckを使えばperformance_schemaとinformation_schemaをまたぐJOINを書かずに済みます:ロックのツリー、待機中のALTER、その後ろにあるトランザクションは、「ヘルス」からタップ1回です。

AIアシスタントには何が見えますか?

質問した画面の、マスキング済みのスナップショットです。ホスト、ポート、IPアドレス、接続名、パスワードは送信されず、ステートメント内の値も送信されません。クラウドのモデルには、スキーマ名、テーブル名、列名がtable_1のようなプレースホルダーとして送られ、RowDeckがiPhone上で実際の名前に戻します。

リクエストはiPhoneから、自分のキーで選んだプロバイダー(Anthropic、OpenAI、OpenRouter、Z.ai、または任意のOpenAI互換エンドポイント)へ、または自分のOllamaへ送られます。送信する前に、モデルが受け取る内容を確認できます。アシスタントはProの機能で、デモでは無料です。SQLの実行は利用者に任せます。

サブスクリプションはありますか?

いいえ。Proは、Appleアカウントに紐づく$14.99の買い切りです。監視は無料のままで、アカウントも試用期限もありません。

障害が起きたら通知してくれますか?

いいえ。RowDeckはバックグラウンドで動作せず、閉じている間にサーバーを監視することもありません。アラートの仕組みは今のまま使ってください。RowDeckは、呼び出しを受けた後に開く画面です。

iPadでも使えますか?

RowDeckはiPhoneの縦向き表示用に作られています。iPad専用のレイアウトはありません。

Amazon Web Services、AWS、Amazon RDS、Amazon Auroraは、Amazon.com, Inc.またはその関連会社の商標です。RowDeckはAmazonと提携しておらず、承認も受けていません。

ガイド

MySQLインシデントのガイド。

夜中に呼び出される問題を1ページずつ。手動で実行するSQLと、RowDeckでの見え方を紹介します。

ガイドとブログは英語です。

ブログから

すべての記事

次のインシデントの前に、iPhoneに入れておきましょう。

サーバーを追加して証明書をピン留めすれば、すべての監視画面を無料で使えます。Proは、対処が必要になる夜のために操作機能をアンロックします。

Free Pro $14.99(買い切り) MySQL 8.0以降とMariaDB 10.5以降 iOS 17以降 iPhone