Können wir nur Slave_IO_Running in SHOW SLAVE STATUS in MySQL erfassen?

9

Ich wollte nur den Status / das Ergebnis der Spaltenwerte Slave_IO_Running und Slave_SQL_Running erfassen, die ich zur Integration in unsere Anwendung verwenden werde.

Gibt es eine Möglichkeit, nur die Werte dieser Felder abzurufen, anstatt die Werte aller Felder von SHOW SLAVE STATUS abzurufen?

Mein Betriebssystem ist Windows.

Ich benutze MySQL 5.0.24

Phanindra
quelle
hey @Phanindra, läuft jetzt eine modernere Version von MySQL? Wenn ja, funktioniert Dereks Antwort immer noch? es ist nicht für mich in v.5.7.12
knocte

Antworten:

8

Ausführen

mysql> SHOW STATUS LIKE 'Slave_running';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slave_running | ON    |
+---------------+-------+
1 row in set (0.04 sec)

Aus dem Handbuch :

Dies ist aktiviert, wenn dieser Server ein Replikations-Slave ist, der mit einem Replikationsmaster verbunden ist, und sowohl der E / A- als auch der SQL-Thread ausgeführt werden. Andernfalls ist es AUS.

Vorsichtsmaßnahme: Wenn Sie MySQL vor Version 5.1.46 oder 5.5.4 ausführen, wurde der Slave-E / A-Thread möglicherweise nicht ausgeführt, und die Statusvariable gibt an, dass der Slave ausgeführt wird. ( MySQL Bug 51089 )


Ab MySQL 5.7 funktioniert die oben genannte Lösung standardmäßig nicht mehr. Dies liegt daran, dass viele der Statusvariablen von information_schemaverschoben werden in performance_schema:

Ab MySQL 5.7.6 enthält das Leistungsschema auch System- und Statusvariablentabellen (siehe Abschnitt 23.9.13, „Leistungsschema-Systemvariablentabellen“ und Abschnitt 23.9.14, „Leistungsschema-Statusvariablentabellen“). Die Leistungsschematabellen sollen die INFORMATION_SCHEMA-Tabellen ersetzen, die ab MySQL 5.7.6 veraltet sind und in einer zukünftigen MySQL-Version entfernt werden. [src]

und

Diese Slave_xxx-Statusvariablen sind über SHOW STATUS nicht mehr verfügbar:

  • Slave_heartbeat_period
  • Slave_last_heartbeat
  • Slave_received_heartbeats
  • Slave_retried_transactions
  • Slave_running

Anwendungen, die diese Statusvariablen verwenden, sollten überarbeitet werden, um diese Informationen mithilfe der replikationsbezogenen Leistungsschematabellen zu erhalten.

Es gibt zwei Möglichkeiten, um den slave_runningStatus außerhalb von zu erhaltenSHOW SLAVE STATUS

  1. Die bevorzugte Methode ist, wie im Dokument erwähnt, das Aktualisieren der Anwendung zum Abrufen von replication-connection-status.SERVICE_STATEund replication-applier-status.SERVICE_STATEin performance_schema:

// Dies ist der SLAVE IO THREAD-Status.
SELECT SERVICE_STATE FROM performance_schema.replication_connection_status;

// Dies ist der SLAVE SQL THREAD-Status.
SELECT SERVICE_STATE FROM performance_schema.replication_applier_status;

HINWEIS: Dies ist für die Einzelmasterreplikation vorgesehen. Die Multi-Master-Replikation sollte in seinreplication_applier_coordinator.SERVICE_STATE

  1. Die zweite Option ist das Einschalten show_compatibility_56. Dies ist eine vorübergehende Lösung, mit der Sie zurechtkommen, ohne die Anwendung zu ändern. Sie wird jedoch in einer zukünftigen Version behoben.
Derek Downey
quelle
0
SELECT t.PROCESSLIST_TIME, t.* 
FROM    performance_schema.threads t
WHERE NAME IN('thread/sql/slave_io', 'thread/sql/slave_sql')
Nodarius
quelle
-1

Ein nützlicher Befehl, um das Ergebnis auf eine nicht förderfähige Weise anzuzeigen, ist

mysql> show slave STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 127.0.0.1
                  Master_User: repuser
                  Master_Port: 3305
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 426595
               Relay_Log_File: ip-172-31-17-228-relay-bin.000004
                Relay_Log_Pos: 19023
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table: (...)
Pr Shadoko
quelle