This neat one line command can be of interest when you are rebuilding a MySQL slave and replication is currently catching up.
$ watch --interval=1 --differences 'mysql -uuser -ppassword -e "SHOW SLAVE STATUS\G"'
You will see the standard SHOW SLAVE STATUS output, but the watch command presents an updated view every second, and highlights differences. This can be useful in a background window to keep an eye on those ‘Seconds Behind Master’.
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.10.10.10 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000626 Read_Master_Log_Pos: 88159239 Relay_Log_File: slave-relay.000005 Relay_Log_Pos: 426677632 Relay_Master_Log_File: mysql-bin.000621 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 426677495 Relay_Log_Space: 2714497549 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 24131
Darren Cassar says
Another solution keeping it to basic commands:
while [ 1 ]; do mysql -uuser -ppassword -e “show slave statusG” | grep Seconds_Behind_Master; sleep 1; done
Matthew Montgomery says
http://day32.com/MySQL/time_behind_master.sh produces the same but in a human readable “2 days 7 hours 15 minutes 37 seconds” time format.