Command-Line
MySQL Linux 客戶端超時/保活
有沒有辦法在 Linux 上的命令行 MySQL 客戶端中設置 keepalive?
我們的網路最近轉移到 VLAN 設置,我們的系統部門不再控制防火牆。權力決定在他們的防火牆中設置一條規則,如果沒有數據通過,則在 30 分鐘後終止所有連接(必須跟踪連接和有限的資源)。我無法控制這一點。
作為伺服器管理員和程序員,我的問題是這意味著我在程式時不能在後台執行 mysql 命令行客戶端。如果我不發送查詢(或以其他方式發送數據),當我在 35 分鐘後嘗試時,客戶端會檢測到它不再有連接。我必須每次重新連接。
在 SSH 中,我可以設置一個 keepalive,以便我可以全天保持連接打開。mysql 命令行客戶端是否有類似的可配置選項?我找不到任何東西,因為“Mysql Keepalive”和類似的搜尋都返回程式語言中後端連接的結果。
您可以設置通用 TCP keepalives,我認為有一個核心設置。但它們的頻率通常要低得多(小時)。有一個TCP Keepalive HOWTO似乎有詳細資訊。
或者,為什麼不只是通過 SSH 建立 MySQL 連接,然後您可以使用 SSH keepalives?
$ ssh -L1234:127.0.0.1:3306 -o ServerAliveInterval=300 user@mysql-server ... (in another terminal) $ mysql -u user -p -h 127.0.0.1 -P 1234
第三種選擇是建立一個到你的伺服器的隧道(例如,OpenVPN),然後它會處理keepalive(以及透明地重新連接等)。
PS:在 30 分鐘內使已建立的 TCP 連接到期的“我們寶貴的資源”論點是 BS。不幸的是——我以前也和他們一樣——有些設備也是廢話。例如,BCP 142/RFC 5382給出的最短時間為 2 小時 4 分鐘(僅當防火牆無法確定主機是否仍處於執行狀態時)。