獲取MySQL歷史session

2021-10-23 14:08:30 字數 1318 閱讀 8752

mysql的show processlist命令可以顯示當時的會話情況,但很多時候都需要檢視出問題當時的狀態,可惜mysql沒有提供類似history session這樣的功能。於是為了方便問題排查,自己寫了乙個非常簡單的抓取mysql現場session的指令碼,生產資料庫已經用了很長時間,感覺對trouble shooting還是挺有用的。指令碼檔案get_processlist.sh內容如下:

#!/bin/bash

source /home/mysql/.bashrc

dt=`date '+%y%m%d_%h%m%s'`

mysql -uroot -p123456 -p3306 -h127.0.0.1 -e "

select t1.*

from information_schema.processlist t1,

(select count(1) c from information_schema.processlist where info is not null) t2

where t2.c>=50;" > /home/mysql/processlist.txt

if test -s /home/mysql/processlist.txt; then

mv /home/mysql/processlist.txt /home/mysql/processlist_18251/processlist_$.txt

mysql -uroot -p123456 -p18251 -h127.0.0.1 -e "

select * from information_schema.innodb_trx;

select * from information_schema.innodb_lock_waits;

select * from information_schema.innodb_locks;" > /home/mysql/processlist/innodb_locks_$.txt

else

rm /home/mysql/processlist.txt

fifind /home/mysql/processlist/* -type f -mtime +10 -exec rm {} \;

說明:只抓取當時正在執行的sql數量大於等於50的會話情況,輸出檔名帶有抓取時間。

同時取得事務和鎖的相關資訊。

為防止檔案數量過多,只保留最近10天的歷史會話檔案。

將指令碼放到crontab中,每分鐘執行一次:

* * * * * /home/mysql/dbbat/get_processlist.sh

嚴格說獲得的是1分鐘之內的準現場,這種設計一是實現簡單,二是對生產負載無影響。

okhttp獲取介面響應中的Session

有的時候服務端要完成乙個功能會提供我們多個介面,服務端在第乙個介面中儲存了乙個session,在後續介面中服務端會用這個sessionid獲取一些資料完成後續邏輯。但是有的時候從android端呼叫的介面,服務端獲取不到session,ios h5都可以就你不行,他就會讓你看看是咋回事呢?這種情況就...

Windows Mobile獲取聯絡歷史

在現有的.net compact framework中,無論是1.0 2.0還是3.5版本,都沒有直接獲取使用者聯絡歷史的介面,那麼,我們只能自己封裝底層api來實現了。改介面在phone.dll中,呼叫phonegetcalllogentry方法會返回乙個聯絡歷史結構,在該結構中,包含號碼 姓名 ...

Windows Mobile獲取聯絡歷史

在現有的.net compact framework中,無論是1.0 2.0還是3.5版本,都沒有直接獲取使用者聯絡歷史的介面,那麼,我們只能自己封裝底層api來實現了。該介面在phone.dll中,呼叫phonegetcalllogentry方法會返回乙個聯絡歷史結構,在該結構中,包含號碼 姓名 ...