Free
永久免费
US$0
一台服务器,一切尽收眼底。
- 一个已保存的连接。演示连接以及从主库打开的备库不计入其中。
- 健康、活动、锁、Purge 与膨胀、复制、存储和慢查询
- 固定指纹的 TLS、SSH 隧道和 Face ID
- 数据浏览器:服务端筛选、外键、CSV 导出和 JSON 复制
- 带分类器的只读 SQL
RowDeck: MySQL® Monitor iPhone 版
半夜收到告警,笔记本却在家里?RowDeck 一打开就是“健康”页面,它会找出持有锁的事务,并数出卡在它后面的会话。在 iPhone 上终止该终止的线程,回到电脑前再彻底修复。
内置演示会重现一次常见的 MySQL 故障:一个被遗忘的事务持有 shop.orders 上的行锁,一次迁移在它后面等待,八个会话排起了队。选择一个步骤,查看对应的页面。
不连服务器也能试:在“连接”页面轻点查看演示数据。无需账号,Pro 操作在示例数据上运行。
InnoDB 锁等待按持有锁的线程分组,并显示每个等待者运行的 SQL 和已等待的时间。
ALTER TABLE 队列:谁在等待表的 metadata lock、哪个事务一直占着它,还有一个按钮可以改为取消等待中的 ALTER。
InnoDB 记录的最近一次 deadlock:谁在等待什么,以及哪个事务被回滚。
在 Amazon RDS 或 Aurora 上没有 KILL 权限?RowDeck 会调用 mysql.rds_kill,并在确认面板中写明走的是哪条途径。
AUTO_INCREMENT。“Purge 与膨胀”页面显示每个自增范围已经用掉多少、purge 落后了多少,以及哪些表和索引白白占着空间。
order_items.id 用到 INT 范围的 93% 时,RowDeck 会警告范围用尽后每条 INSERT 都会失败,并复制用于加宽该列的 ALTER。 ANALYZE TABLE;输入表名后可运行 OPTIMIZE TABLE。DROP INDEX 和 ALTER 语句会复制到剪贴板,何时执行自行决定。 PRO
最前面是“健康”页面,每张卡片背后都有一个原生页面,不必在手机键盘上敲 mysql 命令行。其余情况交给 SQL 控制台,每条语句运行前都会先经过检查。
一个总体判断加十张带阈值的卡片:连接数对比 max_connections、被阻塞的线程、最长的查询、每秒查询数、Buffer pool 命中率、purge 延迟、AUTO_INCREMENT 余量、Deadlocks、复制和磁盘。页面打开期间每 10 秒刷新一次,和 iOS 一样提供深色和浅色外观。
processlist 中的每个线程,等待中的排在最前。可按运行中、事务中、超过 10 秒或等待中筛选,也可以按客户端分组。
在备库上:IO 和 SQL 线程、延迟,以及导致某个通道停止的错误。在主库上:已连接的备库,以及 binlog 占用的空间。
来自 performance_schema 的语句摘要,可按总耗时、平均时间、调用次数或已检查行数排序。
最大的架构、表和索引,按数据、索引和空闲空间拆分。
浏览表、在服务端筛选、沿外键跳转,把一页数据导出为 CSV 或复制为 JSON。行编辑属于 Pro。
输入时,分类器就为每条语句标注:读取、写入、DDL 或破坏性。Free 运行读取语句,Pro 运行其余语句。
解释故障或阻塞链,并起草修复方案。它读取脱敏后的快照,发送前先展示要发送的内容,自身不执行任何操作。在演示中免费。
RowDeck 按顺序逐一检查。任何一步没通过,操作就会停止,不会有任何内容到达 MySQL。
Free 从不向服务器写入。
把连接标记为 Read-only,该连接上的写入就会停止,Pro 也不例外,直到为本次会话解锁写入。
对每条语句都会运行,Free 和 Pro 都一样。
预览中显示目标、架构、连接和 PROD 徽标。破坏性操作,以及 Production 连接上的终止操作,需要先输入目标才会执行。
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 密钥。堡垒机后面最多还可以加两台跳板主机。
首次连接时,RowDeck 显示服务器证书的 SHA-256 指纹;之后证书一旦变化,连接就会停止。
密码、密钥和指纹保存在此 iPhone 的 iOS Keychain 中。用 Face ID 打开 App。
没有该权限时,MySQL 只显示当前账号自己的线程。RowDeck 会如实说明,并给出解决方法:
GRANT PROCESS ON *.* TO 'oncall'@'%';
RowDeck 1.0,使用内置演示数据。
健康 打开笔记本之前就看清故障。
锁 行锁和 metadata lock 在同一棵树中。
终止连接 确认之前,先看会解除哪些阻塞。
活动 等待中的线程排在最前。
索引 未使用与重复索引,DROP INDEX 已代为复制。
复制 通道状态和待应用的事务。
慢查询 按总耗时排序。
存储 最大的表和索引。
数据 在本页筛选或在服务端筛选。
SQL 控制台 每条语句都经过分类。
DDL 运行之前先看分类器的判断。
助手 模型自己选,每个操作自己定。
SSH 隧道 使用自己的密钥和跳板主机。
把 RowDeck 连到生产服务器,所有监控页面都免费使用。到了需要出手的那个夜晚,再一次性支付 US$14.99。
永久免费
US$0
一台服务器,一切尽收眼底。
一次性购买
US$14.99
在任何服务器上出手。
ANALYZE TABLE 和 OPTIMIZE TABLE 无需订阅,也无需账号。购买之前,可以先在演示的示例数据上试用每一项 Pro 操作。“恢复购买”位于付费页面和“设置”中。在美国以外的地区,App Store 会以当地货币显示价格。
只要 iPhone 能访问到,RowDeck 就能连接 MySQL 8.0 及更高版本和 MariaDB 10.5 及更高版本,无论自建还是托管,包括 Amazon RDS 和 Aurora MySQL。Percona Server for MySQL 也可以使用。
在 Amazon RDS 和 Aurora 上,管理员无法 KILL 其他用户的线程,RowDeck 会改为调用服务商提供的存储过程 mysql.rds_kill。在代理后面时,RowDeck 不发送 KILL,因为线程 ID 可能属于另一台服务器,而是给出需要在服务器本身上运行的语句。
MySQL 5.7 和 10.5 之前的 MariaDB 不在支持范围内,TiDB 的监控表也不一样。连接时 App 会给出提示。
可以。在连接设置中打开 SSH 隧道,用密码、密钥或在此 iPhone 上生成的 Secure Enclave 密钥登录堡垒机。密钥可以是 OpenSSH、PEM、PKCS#8 或 PuTTY 格式的 Ed25519、ECDSA 或 RSA 密钥,有无密钥口令均可。服务器要求一次性验证码时,也可以使用。
如果堡垒机位于另一台主机后面,最多可以添加两台跳板主机。RowDeck 在首次连接时固定每台主机的主机密钥,其中任何一个发生变化,都会拒绝继续。
RowDeck 直接连接服务器,或经由堡垒机连接。中间没有 RowDeck 服务器,也无需账号。密码和密钥留在 iOS Keychain 中。
在首次启动的页面上轻点“完成”后,崩溃报告会发送到 Sentry,使用统计会发送到我们自己的分析服务器;该页面上的两个开关初始均为打开。可以当场关闭其中任一项,也可以之后在“设置 › 隐私”中关闭。两者都不包含 SQL、架构名、表名、列名、主机名、值或凭据。详情见隐私政策。
不需要。监控页面只需要只读权限,连接表单中分别列出了 MySQL 和 MariaDB 所需的授权。最重要的是 PROCESS:没有它,MySQL 只显示当前账号自己的线程,RowDeck 会在每个页面上说明这一点,而不是显示一个空列表。
Pro 操作要终止其他用户的线程,需要 CONNECTION_ADMIN;在 Amazon RDS 和 Aurora 上,RowDeck 会改用服务商的终止存储过程。服务器隐藏的指标会显示原因,绝不显示为零。
KILL QUERY 停止正在运行的语句,保留连接及其事务。KILL CONNECTION 关闭连接,并回滚其打开的事务。
在打开的事务中处于 Sleep 状态的线程没有正在运行的语句,所以 KILL QUERY 对它不起作用,锁也依然保留。RowDeck 会读取根阻塞者正在做什么,并提供能释放队列的那种终止方式。
Free 从不写入:控制台的读取在只读事务中运行。在 Pro 中,每次写入都要依次通过四道检查:Pro、连接的 Read-only 开关、分类器,以及手动确认。破坏性语句需要先输入目标才会执行,标记为 Production 的连接会显示 PROD 徽标,确认也更严格。
RowDeck 会代为复制 DROP INDEX 和 ALTER … BIGINT,执行与否自行决定。它不会 purge binlog,也不会在备库上跳过事务;它从不向服务器请求 LOAD DATA LOCAL,也从不在一次调用中请求执行多条语句。
当然可以。但凌晨 3 点在手机键盘上,RowDeck 省去了跨 performance_schema 和 information_schema 的 JOIN 查询:阻塞树、等待中的 ALTER 以及它背后的事务,从“健康”页面轻点一下就能看到。
所询问页面的脱敏快照。主机、端口、IP 地址、连接名称和密码绝不会发出,语句中的值也不会。使用云端模型时,架构名、表名和列名以 table_1 这样的占位符发出,RowDeck 再在 iPhone 上换回真实名称。
请求从 iPhone 发往所选的服务商,使用自己的密钥(Anthropic、OpenAI、OpenRouter、Z.ai 或任何兼容 OpenAI 的端点),或发往自己的 Ollama。发送之前可以看到模型将收到的内容。助手属于 Pro,在演示中免费,不会自行运行 SQL。
不需要。Pro 是一次性购买,价格 US$14.99,与 Apple 账户绑定。监控始终免费,没有账号,也没有试用期倒计时。
不会。RowDeck 不在后台工作,关闭后也不监视服务器。现有的告警系统照常保留:RowDeck 是收到告警后打开的那个页面。
RowDeck 专为竖屏 iPhone 设计,没有专门的 iPad 布局。
Amazon Web Services、AWS、Amazon RDS 和 Amazon Aurora 是 Amazon.com, Inc. 或其关联公司的商标。RowDeck 与 Amazon 无关联,也未获得其认可。
深夜把人叫醒的那些问题,每个一页:手动运行的 SQL,以及 RowDeck 中的显示。
指南和博客为英文。