Mysql 建立心跳錶來監控Replication的Slave是否延遲
mysql replication的slave同步是否真實延遲,大部分人都是在slave上執行show slave status\G來捕獲Slave_IO_Running: Yes和Slave_SQL_Running: Yes和Seconds_Behind_Master: 0這三列資訊,今天我們自己另闢蹊蹺不同過show slave status\G來捕獲,而是直接監控master庫的資料是否真實寫入到slave庫
1、Master上的mysql庫上建立心跳錶Heartbeat_table
CREATE TABLE `heartbeat_table` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `master_datetime` datetime NOT NULL, `slave_datetime` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
2、Master上的mysql庫上建立一個儲存過程往心跳錶Heartbeat_table插資料
delimiter $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_heartbeat_table`() BEGIN DECLARE master_datetime datetime; declare slave_datetime datetime; INSERT INTO Heartbeat_table (master_datetime,slave_datetime) VALUES(NOW(),SYSDATE()); END$$
3、Master上的mysql庫上建立建立一個事件每分鐘執行一次步驟2的儲存過程
CREATE EVENT event_replication_insert ON SCHEDULE EVERY 60 SECOND DO call sp_insert_heartbeat_table();
4、Master上的mysql庫上建立建立一個事件每分鐘刪除心跳錶3天前的記錄
CREATE EVENT event_replication_delete ON SCHEDULE EVERY 60 SECOND DO delete from Heartbeat_table where id in (select id from (select id from Heartbeat_table c1 where UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(master_datetime)>259200) t1)
5、在slave伺服器上編寫一個監控slave同步的郵件的指令碼,延遲超過120秒就報警
#!/bin/bash
mysql_user="root"
mysql_pass="pwd"
hostname=echo `hostname`
delay=`/usr/bin/mysql -u${mysql_user} -p${mysql_pass} -e"SELECT NOW()-MAX(master_datetime) FROM mysql.heartbeat_table"`
delay_seconds=`echo $delay |awk '{print $2}'`
if [ "$delay_seconds" -gt 120 ];then
echo "$hostname Mysql Salve delay $delay_seconds seconds,please check!!!"| mailx -s "$hostname Mysql Salve delay $delay_seconds seconds,please check!!!" emailname@XX.com
fi
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2789731/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL中slave監控的延遲情況分析MySql
- 從Mysql slave system lock延遲說開去MySql
- Sql Server實時監控釋出訂閱複製Replication、subscription有多少延遲的方法SQLServer
- MySQL:slave 延遲一列 外來鍵檢查和自增加鎖MySql
- 【MySQL】六、常見slave 延遲原因以及解決方法MySql
- mysql同步問題之Slave延遲很大最佳化方法MySql
- Sql Server監控釋出訂閱複製Replication、subscription的延遲時間和未傳送命令列數量SQLServer命令列
- zabbix應用-監控mysql slave 主從狀態MySql
- 只想監控 api 心跳,返回是否 200,有這方面的工具嗎API
- Setup MariaDB Master/Slave Replication for Docker MariaDBASTDocker
- shell指令碼:監控MySQL服務是否正常指令碼MySql
- 如何避免MYSQL主從延遲帶來的讀寫問題?MySql
- 級聯slave的延遲計算和query event exe time獲取方法
- mysql主從延遲複製MySql
- MySQL 延遲從庫介紹MySql
- Mysql 主從延時監控(pt-heartbeat)詳解MySql
- 喜訊!延遲退休來了🙃
- RabbitMQ延遲訊息的延遲極限是多少?MQ
- 面試官:我們們來聊一聊mysql主從延遲面試MySql
- 如何建立 Laravel 延遲載入的服務提供者Laravel
- mysql同步(複製)延遲的原因及解決方案MySql
- MySQL監控工具MySql
- MySQL基於GTIDs的MySQL ReplicationMySql
- MySQL之 從複製延遲問題排查MySql
- MySQL 中讀寫分離資料延遲MySql
- MySQL主從複製延遲解決方案MySql
- Build mysql replicationUIMySql
- MySQL Group ReplicationMySql
- 使用Chronicle Queue建立低延遲的TB級別的佇列 - DZone佇列
- 「Eolink Apikit 教程」API 異常監控-建立 API 監控API
- 下面是一個基於PowerShell的示例指令碼,定期檢測網路延遲並根據延遲的變化手動更新路由表。此示例透過使用 Test-Connection 命令檢測網路延遲,並根據延遲值來決定是否更新路由表。指令碼路由
- 影片監控推流助手/極低延遲/支援N路批次多執行緒推流/264和265推流/監控轉網頁執行緒網頁
- Mysql 非同步複製延遲的原因及解決方案MySql非同步
- MySQL sys效能監控MySql
- MySQL監控-Datadog資料庫監控調研MySql資料庫
- 延遲繫結
- 延遲退休來了,如何應對“老齡化”的自己?
- mysql之 誤用SECONDS_BEHIND_MASTER衡量MYSQL主備的延遲時間MySqlAST