成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL備份失敗,一波三折的問題分析和處理

數據庫 MySQL
今天和同事一起處理了一個奇怪的MySQL空間異常問題,從這個問題的處理中可以找到一些問題處理的方式。

 今天和同事一起處理了一個奇怪的MySQL空間異常問題,從這個問題的處理中可以找到一些問題處理的方式。

問題的背景是有一個實例的備份總是失敗,在排查了多次之后,在保證Slave可用的情況先擱置了,剛好借著這幾天的時間做了下收尾和梳理。

備份失敗的報錯提示信息是: 

  1. innobackupex: Error writing file '/tmp/xbtempevLQbf' (Errcode: 28 - No space left on device)  
  2. xtrabackup: Error: write to logfile failed  
  3. xtrabackup: Error: xtrabackup_copy_logfile() failed. 

看起來多直白的問題,空間不足嘛,是不是空間配置的問題。 

但是在本地進行模擬測試的時候,使用了如下的腳本開啟本機測試。  

  1. /usr/local/mysql_tools/percona-xtrabackup-2.4.8-Linux-x86_64/bin/innobackupex --defaults-file=/data/mysql_4308/my.cnf --user=xxxx --password=xxxx --socket=/data/mysql_4308/tmp/mysql.sock  --stream=tar /data/xxxx/mysql/xxxx_4308/2020-02-11   > /data/xxxx/mysql/xxxx_4308/2020-02-11.tar.gz 

 發現所在的/tmp目錄卻沒有空間異常的情況,而相反是根目錄的空間使用出現了異常,這是測試中截取到的一個空間異常的截圖。

而在拋出異常之后,備份失敗,空間使用率馬上恢復。

綜合目前得到的信息,我的直觀感覺是問題貌似和/tmp沒有太直接的聯系,那一定是在根目錄的使用過程中的其他目錄產生了異常。

于是我開始了第二次測試,這一次我著重關注根目錄的整體使用,看看到底是哪個目錄的使用異常了,但是尷尬的是,盡管做了腳本的快速采集,竟然沒有發現在我們常見的目錄下有空間異常。 

  1. 332K    ./home  
  2. 411M    ./lib  
  3. 26M     ./lib64  
  4. 16K     ./lost+found  
  5. 4.0K    ./media  
  6. 4.0K    ./misc  
  7. 4.0K    ./mnt  
  8. 0       ./net  
  9. 184M    ./opt  
  10. du: cannot access `./proc/40102/task/40102/fd/4': No such file or directory  
  11. du: cannot access `./proc/40102/task/40102/fdinfo/4': No such file or directory  
  12. du: cannot access `./proc/40102/fd/4': No such file or directory  
  13. du: cannot access `./proc/40102/fdinfo/4': No such file or directory  
  14. 0       ./proc  
  15. 2.3G    ./root  
  16. 56K     ./tmp  
  17. 。。。 

所以從目前的情況來看,應該是/proc相關的目錄下的空間異常了。

事情到了這個時候,似乎可用的方式已經不多了。

我排查了腳本,排查了參數文件,整體來看沒有和其他環境相比明顯的問題,但是有一個細節引起了我的注意,那就是使用top的時候,看到這個實例的內存使用了6G(服務器內存是8G),但是buffer pool的配置才是3G左右,這是一個從庫環境,也沒有應用連接,所以也不大可能存在太多的連接資源消耗,所以綜合來看,應該是和服務器的內存異常有關。

這個時候嘗試了在線resize,發現已經沒有收縮的空間了。因為是從庫服務,于是我開始重啟從庫的服務。

但是意外的是重啟數據庫的時候卡住了,大概過了有2分鐘,只是看到一些輸出的小數點,大概輸出了兩行,還是沒有反應,查看后臺日志沒有任何輸出,于是我開始嘗試plan B,準備Kill 進程重啟服務。

這一次kill操作生效了,過一會服務啟動起來了。但是報出了從庫復制異常。 

  1.                 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.' 
  2.  。。。  
  3.              Master_Server_Id: 190  
  4.                   Master_UUID: 570dcd0e-f6d0-11e8-adc3-005056b7e95f  
  5. 。。。  
  6.       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates  
  7.            Master_Retry_Count: 86400  
  8.                   Master_Bind:   
  9.       Last_IO_Error_Timestamp: 200211 14:20:57  
  10.            Retrieved_Gtid_Set: 570dcd0e-f6d0-11e8-adc3-005056b7e95f:821211986-2157277214  
  11.             Executed_Gtid_Set: 570dcd0e-f6d0-11e8-adc3-005056b7e95f:1-820070317:821211986-2157277214 

這個錯誤的信息是比較明顯了,是主庫的binlog被purge掉了,導致在從庫去復制應用的時候失敗了。

為什么會有這么奇怪的一個問題呢,因為主庫的binlog默認還是保留了一些天數,不至于把1個小時前的binlog刪除。

關于GTID的一些變量值如下:

Retrieved_Gtid_Set: 570dcd0e-f6d0-11e8-adc3-005056b7e95f:821211986-2157277214

Executed_Gtid_Set: 570dcd0e-f6d0-11e8-adc3-005056b7e95f:1-820070317:821211986-2157277214

gtid_purged     : 570dcd0e-f6d0-11e8-adc3-005056b7e95f:1-820070317:821211986-2131381624

Master端的GTID_Purged為:

gtid_purged      :570dcd0e-f6d0-11e8-adc3-005056b7e95f:1-2089314252

綜合這些信息來看,Slave端的GTID和主庫沒有完整的銜接起來,也就意味著在之前對這個Slave做過一些操作,導致GTID在Master和Slave端產生了一些偏差。

而這個遺漏的變更部分570dcd0e-f6d0-11e8-adc3-005056b7e95f:821211986保守來估計也是1個月以前了,binlog是肯定沒有保留的。

我們在此先暫時修復這個復制問題。

停止Slave沒想到又出問題了,一個看似簡單的stop Slave操作竟然持續了1分多鐘。

>>stop slave;

Query OK, 0 rows affected (1 min 1.99 sec)

嘗試減小Buffer pool配置,重啟,stop slave,這個操作依然很慢,所以可以在這個方向上排除延遲的問題和Buffer Pool關系不大,而相對和GTID的關系更大一些。

Slave端修復步驟如下: 

  1. reset master;  
  2. stop slave;  
  3. reset slave all;  
  4. SET @@GLOBAL.GTID_PURGED='570dcd0e-f6d0-11e8-adc3-005056b7e95f:1-2157277214' 
  5. CHANGE MASTER TO MASTER_USER='dba_repl'MASTER_PASSWORD='xxxx' , MASTER_HOST='xxxxx',MASTER_PORT=4308,MASTER_AUTO_POSITION = 1

其中GTID_PURGED的配置是關鍵。 

修復后,Slave端的延遲問題就解決了,而再次嘗試重新備份,在根目錄竟然沒有了空間消耗。 

小結:

這個過程中主要是要快速解決問題,有些步驟的日志抓取的不夠豐富和細致,從問題的分析來說,還是缺少了一些更有說服力的東西,對于問題的原因,本質上還是不合理的問題(比如bug或者配置異常等)導致了不合理的現象。

在這一塊還是可以借鑒的是分析的整體思路,而不是這個問題本身。  

 

責任編輯:龐桂玉 來源: 楊建榮的學習筆記
相關推薦

2009-07-29 09:07:51

Linux驅動開源操作系統微軟

2018-01-03 14:34:40

APM監控系統OSGI架構實踐

2020-08-06 17:16:47

抖音Tiktok美國

2010-07-05 09:41:30

美國云計算

2018-05-26 23:03:07

中興芯片特朗普

2021-10-29 05:39:46

歐盟英偉達收購

2020-07-14 13:17:23

GitHub宕機服務中斷

2021-01-01 09:03:44

故障HAProxy服務器

2011-11-16 10:58:55

虛擬化虛擬機云計算

2014-09-02 10:19:22

IT程序員

2014-09-29 14:35:57

WIFI物聯網RFID

2021-09-01 13:46:07

GitHub Copi漏洞代碼訓練

2010-10-21 14:38:07

網絡融合

2021-12-26 00:13:24

Log4jLogback漏洞

2010-01-21 17:05:21

互聯網

2014-08-19 09:34:01

2010-01-05 23:07:44

回眸2009H3C

2015-11-17 12:56:33

浪潮SC15

2010-06-03 15:30:01

Windows2008

2018-05-26 15:50:15

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美女黄视频网站 | 国产丝袜一区二区三区免费视频 | 中文字幕亚洲一区 | 久久久久久高清 | 天堂av免费观看 | 黄色网址免费在线观看 | 久久久久国产 | 污污的网站在线观看 | 日韩在线资源 | 国产欧美一区二区三区在线看 | 成人在线观看中文字幕 | 女女百合av大片一区二区三区九县 | 国产一区二区三区在线视频 | 午夜影院在线播放 | 久久精品一级 | 99在线播放 | 国内自拍第一页 | 国产欧美日韩一区 | 欧美精品一区二区免费 | 欧美精品导航 | 日日夜夜操天天干 | 亚洲伦理自拍 | 国产高清精品在线 | 一区二区三区成人 | 中文字幕日韩欧美 | 一区二区三区四区免费视频 | 久草视频网站 | 在线播放中文 | 国产蜜臀97一区二区三区 | 久久国产精品亚洲 | 国产精品美女一区二区 | 国产91亚洲精品一区二区三区 | 91精品久久久久久久久久入口 | 国产一区二区三区在线 | 亚洲国产精品日本 | 亚洲一区二区三区免费 | 福利社午夜影院 | 日本黄色大片免费 | 亚洲综合中文字幕在线观看 | av中文字幕在线播放 | 免费毛片网 |