程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 使用低版本的Xtrabackup還原較高版本的Xtrabackup創建的全備份文件存在的問題

使用低版本的Xtrabackup還原較高版本的Xtrabackup創建的全備份文件存在的問題

編輯:DB2教程

使用低版本的Xtrabackup還原較高版本的Xtrabackup創建的全備份文件存在的問題


最近要將使用xtrabackup備份的多台MySQL Server的數據還原到另外一台MySQL服務器上並使用不同的端口啟動多個實例來作為review環境。實用程序執行自動還原的過程中有幾個數據庫實例啟動失敗。檢查數據目錄中的錯誤日志,發現如下啟動錯誤:

2015-02-02 12:31:36 27876 [Note] Plugin 'FEDERATED' is disabled.
2015-02-02 12:31:36 27876 [Note] InnoDB: The InnoDB memory heap is disabled
2015-02-02 12:31:36 27876 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-02-02 12:31:36 27876 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-02-02 12:31:36 27876 [Note] InnoDB: Using CPU crc32 instructions
2015-02-02 12:31:36 27876 [Note] InnoDB: Initializing buffer pool, size = 500.0M
2015-02-02 12:31:36 27876 [Note] InnoDB: Completed initialization of buffer pool
2015-02-02 12:31:36 27876 [Note] InnoDB: Highest supported file format is Barracuda.
2015-02-02 12:31:36 27876 [Note] InnoDB: The log sequence numbers 13637542590703 and 13637542590703 in ibdata files do not match the log sequence number 13637542595176 in the ib_logfiles!
2015-02-02 12:31:36 27876 [Note] InnoDB: Database was not shutdown normally!
2015-02-02 12:31:36 27876 [Note] InnoDB: Starting crash recovery.
2015-02-02 12:31:36 27876 [Note] InnoDB: Reading tablespace information from the .ibd files...
2015-02-02 12:31:37 27876 [Note] InnoDB: Restoring possible half-written data pages
2015-02-02 12:31:37 27876 [Note] InnoDB: from the doublewrite buffer...
2015-02-02 12:31:37 2aeb2d96a590 InnoDB: Error: page 7 log sequence number 36755345241838
InnoDB: is in the future! Current system log sequence number 13637542595176.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: for more information.
2015-02-02 12:31:37 2aeb2d96a590 InnoDB: Error: page 1 log sequence number 35468208055287
InnoDB: is in the future! Current system log sequence number 13637542595176.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: for more information.
……

是說ibdata文件中的日志序列號與ib_logfiles文件中的日志序列號不一致,啟動崩潰恢復過程,從.ibd文件讀表空間信息,從雙寫緩沖恢復數據頁。但發現頁中的日志序列號超前於當前系統日志序列號。提示數據庫可能損毀。或者備份時只備了表空間沒備日志文件。因此,推測錯誤可能發生在兩個環節:一備份文件本身損壞了;二備份文件本身沒有問題,在應用日志的時候出現了問題。

先從簡單的情況驗證
手動拉取前一天的xtrabackup全備文件一步步執行還原過程,在應用日志階段。發現如下報錯:
……
150202 12:36:35  innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=xtrabackup' as 'usvr_serveradmin'  (using password: YES).
150202 12:36:35  innobackupex: Connected to MySQL server
Connected successfully
Can't call method "disconnect" on an undefined value at /usr/bin/innobackupex line 1482.
……
正常情況下當輸出complete ok!所以斷定是這裡出問題了。所有機器都是使用同樣的還原程序進行還原的,為什麼只有某幾台發生這樣的問題?經查看,這些機器是安裝的MySQL版本為5.6.21,xtrabackup版本為2.2.24。而最終要還原到的MySQL Server實例本身是5.6.12的,xtrabackup版本為2.1.3。

使用xtrabackup2.2.24替換2.1.3後重新對全備文件應用日志,發現可以成功執行。所以最終問題定位到了這裡。也即,使用高版本的xtrabackup備份的全備文件,在使用低版本的xtrabackup應用日志時會出問題。(與MySQL Server本身的版本木有必然聯系)

但接下來問題又來了,其余的一些機器中也存在少數幾台MySQL5.6.21的,xtrabackup版本為2.2.24的。為什麼還原成功??觀察這幾台機器的數據庫,發現數據庫均為空,這樣也就不存在對全備應用日志的情況。因而全備還原會成功。

綜上:使用高版本的xtrabackup備的全備在使用低版本的xtrabackup應用日志時存在問題,這一點需注意。





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved