mysql MASTER_POS_WAIT函式

水逸冰發表於2019-09-10

語法

select master_pos_wait(file, pos[,   timeout]).

 

File pos 是對應的主庫的值,可以通過show master status 得到。

Timeout 是等待的秒數。不加代表為0 ,立即返回結果。如果指定了時間,但是已經達到了position ,那麼還是會立即返回。也就是等待事件在從庫未到達指定的position 才生效。

 

這個函式主要用於從庫執行,檢視從庫是否已經執行到了指定的主庫上binlog position

 

主庫檢視

mysql> show binary logs;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000001 |  51635123 |

+------------------+-----------+

1 row in set (0.00 sec)

 

從庫執行:

mysql> SELECT MASTER_POS_WAIT('   mysql-bin.000001', 51635123,60);

+--------------------------------------------------+

| MASTER_POS_WAIT('mysql-bin.000001',   51635123,60) |

+--------------------------------------------------+

|                                                  0 |

+--------------------------------------------------+

1 row in set (0.00 sec)

返回值為0 ,代表從庫已經應用了mysql-bin.000001 51635123 位置的資料。

 

下面將pos 值加1

mysql> SELECT MASTER_POS_WAIT('mysql-bin.000001',   51635124);

一直在等待,不返回結果。

主庫執行一個事務後,pos 肯定超越了51635124 ,從庫應用後返回結果1 ,如下:

+-----------------------------------------------+

| MASTER_POS_WAIT('mysql-bin.000001',   51635124) |

+-----------------------------------------------+

|                                             1 |

+-----------------------------------------------+

1 row in set (50.66 sec)

 

從庫pos+1 ,這次指定時間為5 ,五秒後未達到,返回-1

mysql> SELECT   MASTER_POS_WAIT('mysql-bin.000001', 51635390,5);

+-------------------------------------------------+

| MASTER_POS_WAIT('mysql-bin.000001',   51635390,5) |

+-------------------------------------------------+

|                                                -1 |

+-------------------------------------------------+

1 row in set (5.00 sec)

 

從庫執行stop slave sql_thread; 返回null

mysql> SELECT   MASTER_POS_WAIT('mysql-bin.000001', 51635390,60);

+--------------------------------------------------+

| MASTER_POS_WAIT('mysql-bin.000001',   51635390,60) |

+--------------------------------------------------+

|                                             NULL |

+--------------------------------------------------+

1 row in set (2.32 sec)

 

Action

Return

無論是否指定時間,達到

0

指定時間內達到

1

指定時間內未達到

-1

stop slave sql_thread;

NULL


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31480688/viewspace-2656594/,如需轉載,請註明出處,否則將追究法律責任。

相關文章