feat(binlog): refs #4409 New function for binlog queue monitoring #2299
|
@ -0,0 +1,45 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`binlogQueue_getDelay`(vCode VARCHAR(255))
|
||||||
|
RETURNS BIGINT
|
||||||
|
NOT DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Returns the difference between the current position of the binary log and
|
||||||
|
* the passed queue.
|
||||||
|
*
|
||||||
|
* @param vCode The queue code
|
||||||
|
* @return The difference in MB
|
||||||
|
*/
|
||||||
|
DECLARE vCurLogName VARCHAR(255);
|
||||||
|
DECLARE vCurPosition BIGINT;
|
||||||
|
DECLARE vQueueLogName VARCHAR(255);
|
||||||
|
DECLARE vQueuePosition BIGINT;
|
||||||
|
DECLARE vDelay BIGINT;
|
||||||
|
|
||||||
|
SELECT VARIABLE_VALUE INTO vCurLogName
|
||||||
|
FROM information_schema.GLOBAL_STATUS
|
||||||
|
WHERE VARIABLE_NAME = 'BINLOG_SNAPSHOT_FILE';
|
||||||
|
|
||||||
|
SELECT VARIABLE_VALUE INTO vCurPosition
|
||||||
|
FROM information_schema.GLOBAL_STATUS
|
||||||
|
WHERE VARIABLE_NAME = 'BINLOG_SNAPSHOT_POSITION';
|
||||||
|
|
||||||
|
SELECT logName, `position`
|
||||||
|
INTO vQueueLogName, vQueuePosition
|
||||||
|
FROM binlogQueue
|
||||||
|
WHERE code = vCode;
|
||||||
|
|
||||||
|
IF vQueuePosition IS NULL THEN
|
||||||
|
RETURN NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SET vDelay =
|
||||||
|
vCurPosition - CAST(vQueuePosition AS SIGNED) +
|
||||||
|
@@max_binlog_size * (
|
||||||
|
CAST(REGEXP_SUBSTR(vCurLogName, '[0-9]+') AS SIGNED) -
|
||||||
|
CAST(REGEXP_SUBSTR(vQueueLogName, '[0-9]+') AS SIGNED)
|
||||||
|
);
|
||||||
|
|
||||||
|
RETURN ROUND(vDelay / POW(1024, 2));
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
Loading…
Reference in New Issue