我只想捕获 Slave_IO_Running 和 Slave_SQL_Running 列值的状态/结果,我将使用它们集成到我们的应用程序中。
有没有办法只获取这些字段的值,而不是获取 SHOW SLAVE STATUS 的所有字段的值。
我的操作系统是windows。
我正在使用 MySQL 5.0.24
执行
mysql> SHOW STATUS LIKE 'Slave_running';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slave_running | ON |
+---------------+-------+
1 row in set (0.04 sec)
Run Code Online (Sandbox Code Playgroud)
从手册:
如果此服务器是连接到复制主服务器的复制从属服务器,并且 I/O 和 SQL 线程都在运行,则此项为 ON;否则,它是关闭的。
警告:如果您在 5.1.46 或 5.5.4 版本之前运行 MySQL,则从属 IO 线程可能无法运行,并且状态变量指示从属正在运行。( MySQL 错误 51089 )
从 MySQL 5.7 开始,上述解决方案默认不起作用。这是因为许多状态变量 frominformation_schema
正在被移入performance_schema
:
从 MySQL 5.7.6 开始,Performance Schema 还包含系统和状态变量表(参见第 23.9.13 节,“性能模式系统变量表”和第 23.9.14 节,“性能模式状态变量表”)。Performance Schema 表旨在替换 INFORMATION_SCHEMA 表,该表从 MySQL 5.7.6 开始已弃用,并将在未来的 MySQL 版本中删除。 [源代码]
和
这些 Slave_xxx 状态变量通过 SHOW STATUS 变得不可用:
- Slave_heartbeat_period
- Slave_last_heartbeat
- Slave_received_heartbeats
- Slave_retry_transactions
- Slave_running
应修改使用这些状态变量的应用程序,以使用与复制相关的性能模式表获取此信息。
有两个选项可以获取slave_running
外部状态SHOW SLAVE STATUS
replication-connection-status.SERVICE_STATE
和replication-applier-status.SERVICE_STATE
中提取performance_schema
:// 这是 SLAVE IO THREAD 状态
SELECT SERVICE_STATE FROM performance_schema.replication_connection_status;// 这是 SLAVE SQL THREAD 状态
SELECT SERVICE_STATE FROM performance_schema.replication_applier_status;
注意:这是用于单主复制。多主复制应该在replication_applier_coordinator.SERVICE_STATE
show_compatibility_56
。这是一个临时修复,可以让您无需修改应用程序,但将在未来版本中消失。 归档时间: |
|
查看次数: |
13743 次 |
最近记录: |