停止MySQL服務hang的問題簡單分析(一)
寫第一篇,意味著還有第二篇的內容,這個也是自己今天偶然發現的問題。同事之前碰到了一個MySQL服務不斷重啟的問題,究其原因,其實倒還合理,今天的這個問題比較糾結,看起來好像沒有直接的聯絡,問題算是比較詭異。
我簡單復現下這個問題,我在5.7.19的版本中做了測試,可以復現。
首先搭建一主兩從的測試環境,使用sandbox或者是我自己寫的shell版本也可以,具體可以參考:
我配置的環境如下,埠分別為10010和10020
10010 n1 Y
10020 n2 N
執行指令碼init.sh大概也就一分鐘就會搭建好了,引數檔案的設定如下,GTID是開啟的。
datadir=/U01/mysql_5.7_repl/n1
basedir=/usr/local/mysql_5.7
port=10010
socket=/U01/mysql_5.7_repl/n1/n1.sock
server_id=10010
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
主從的配置是差不多的,複製關係沒有問題。
然後我們停止從庫,把從庫的GTID設定從配置檔案刪除,即刪除引數。
gtid_mode=ON
enforce_gtid_consistency=ON
然後啟動之後,MySQL服務竟然能夠正常啟動,在5.7.16的版本中測試時會出現不斷重啟的問題。當然啟動之後,slave的執行緒是無法啟動的。
mysql> start slave;
ERROR 3112 (HY000): The replication receiver thread for channel '' cannot start in AUTO_POSITION mode: this server uses @@GLOBAL.GTID_MODE = OFF.
提示很明顯,是GTID的問題。
這個時候主庫端已經沒有了從庫的連線,因為IO_Thread還沒有建立關聯。
我們這個時候保留主庫GTID的配置,保留從庫的服務,停止主庫,使用mysqladmin shutdown 的方式。主庫的操作命令就會hang住了。
mysqld的服務沒了蹤影,但是mysqladmin的命令卡在了那裡。
魔性的一點是mysqld的服務已經停止了,我重啟還是能夠正常啟動,但是mysqladmin的程式一直掛在那裡。這個就有些不太合理了。
而問題的解決方法有兩個,一個是刪除主庫的GTID配置,另外一個是停止從庫(或者保留從庫GTID配置,暫且啟動)
這個問題的方向已經明確,和不規範的配置,不規範的操作有關,但是這個問題的結果還是有些出人意料。後續再來解讀。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2146959/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在cmd中停止mysql服務MySql
- 簡單分析MySQL 一則慢日誌監控誤報問題MySql
- Oracle TNSListener服務啟動後自動停止問題Oracle
- 簡單介紹Windows中將Nginx新增為服務的問題WindowsNginx
- Ubuntu 下啟動/停止/重啟mysql服務UbuntuMySql
- 不停止 MySQL 服務增加從庫的兩種方式MySql
- 關於兩個簡單問題的分析
- Docker中部署mysql服務的方法及遇到的問題DockerMySql
- 一個簡單的MySQL引數導致的連線問題解惑MySql
- Express簡單起一個本地服務介面Express
- MySQL斷電恢復的一點簡單分析MySql
- MySQL:一個奇怪的hang案例MySql
- ORA-01113問題的簡單分析
- 一個applet的簡單問題APP
- 用 Go 編寫一個簡單的 WebSocket 推送服務GoWeb
- 簡單優化容器服務優化
- MySQL訪問受限的問題分析MySql
- MySQL修復表的簡單分析MySql
- 【FAQ】整合分析服務的常見問題及解決方案
- 容災切換中的資料庫當機問題簡單分析(一)資料庫
- 服務中有“推”有“拉”,該如何分析線上問題?
- WAS startnode hang問題解決
- 【轉載】【錯誤解決】本地計算機上的mysql服務啟動停止後,某些服務在未由其他服務或程式使用時將自動停止計算機MySql
- 問一個關於oracle8的簡單的問題!Oracle
- 寶塔皮膚下,如果mysql服務意外停止,如何定時檢測並恢復服務MySql
- Linux下如何使用命令或簡單的方式停止Oracle9,10g的http服務 ?LinuxOracleHTTP
- redhat ntsysv中一些服務的簡單解釋(轉)Redhat
- redhat ntsysv中一些服務的簡單解釋(zt)Redhat
- Golang快速實現一個簡單RPC服務GolangRPC
- 簡單談談服務間的連線
- 搭建簡單的偽熱更新Mock服務Mock
- socket實現簡單ssh服務
- Java服務.問題排查.問題復現Java
- 簡單分析MySQL中的primary key功能MySql
- 開機後mysql服務未啟動問題解決MySql
- 華為分析服務| 簡單三步,玩轉精準運營
- 排查 “Detected Tx Unit Hang”問題
- 併發執行hang問題