Mysql

InnoDB:二進制導入後“僅找到一個日誌文件”

  • July 25, 2014

我的第一個DBA…

在成功將主 MySQL 伺服器 5.5 升級到 5.6.17(CentOS 6 VPS serer)後,我完成並將二進製備份移動到從屬伺服器(相同版本 5.6.17 但 Jelastic 上的環境不同)。二進製備份是使用 Percona Xtrabackup 2.1.7 和準備完成的。兩個系統都是 x86_64 GNU/Linux

在將二進製備份恢復到/var/lib/mysqlMySQL 並啟動 MySQL 之後,我很高興看到 MySQL 日誌中出現以下錯誤:

140725 15:02:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2014-07-25 15:02:13 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2014-07-25 15:02:13 11854 [Note] Plugin 'FEDERATED' is disabled.
2014-07-25 15:02:13 11854 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-07-25 15:02:13 11854 [Note] InnoDB: The InnoDB memory heap is disabled
2014-07-25 15:02:13 11854 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-07-25 15:02:13 11854 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-07-25 15:02:13 11854 [Note] InnoDB: Using Linux native AIO
2014-07-25 15:02:13 11854 [Note] InnoDB: Using CPU crc32 instructions
2014-07-25 15:02:13 11854 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-07-25 15:02:13 11854 [Note] InnoDB: Completed initialization of buffer pool
2014-07-25 15:02:13 11854 [ERROR] InnoDB: Only one log file found.
2014-07-25 15:02:13 11854 [ERROR] Plugin 'InnoDB' init function returned error.
2014-07-25 15:02:13 11854 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2014-07-25 15:02:13 11854 [ERROR] Unknown/unsupported storage engine: InnoDB
2014-07-25 15:02:13 11854 [ERROR] Aborting

2014-07-25 15:02:13 11854 [Note] Binlog end
2014-07-25 15:02:13 11854 [Note] Shutting down plugin 'partition'

這是ls /var/lib/mysql

backup-my.cnf
ibdata1
ib_logfile0
xtrabackup_binary
xtrabackup_binlog_info
xtrabackup_binlog_pos_innodb
xtrabackup_checkpoints
mysql
.... OTHER DATABASE FOLDERS .....

這很奇怪,當我設置 5.5 > 5.5 複製時,它曾經工作得非常好,完全一樣。

為什麼現在 5.6 失敗了? 這是什麼意思:$$ ERROR $$InnoDB:僅找到一個日誌文件” 另外在主伺服器上我可以看到ib_logfile0ib_logfile1但 Xtrabackup 只提供ib_logfile0

  • 我嘗試重新啟動伺服器。
  • 我嘗試了兩次備份/恢復程序,以確保我沒有錯過任何東西。
  • 我嘗試按照 MySQL 官方論壇某處的建議刪除 ib_logfile0 文件。
  • 我嘗試在 my.cnf 中顯式啟用 InnoDBInnodb=ON

編輯:回答問題:

我用於備份的實際線路?

ulimit -n 10240 && sudo -u mysql \
   /bin/sh -c "cd /var/lib/mysql && /usr/bin/innobackupex          \
     --user=${MYSQL_BACKUP_USER} --password=${MYSQL_BACKUP_PASS}   \
     --lock-wait-query-type=update --lock-wait-timeout=300         \
     --kill-long-query-type=select --kill-long-queries-timeout=10  \
     --rsync --slave-info --safe-slave-backup ${XB_TARGET_DIR}"

/usr/bin/innobackupex –version

InnoDB Backup Utility v1.5.1-xtrabackup;

貓 xtrabackup_binary

xtrabackup_56

貓備份-my.cnf

# This MySQL options file was generated by innobackupex.

# The MySQL server
[mysqld]
innodb_checksum_algorithm=innodb
innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=50331648
innodb_fast_checksum=0
innodb_page_size=16384
innodb_log_block_size=512
innodb_undo_tablespaces=0

你有數據目錄之外的日誌文件嗎?

No, log files are within the datadir

假設您已innobackupex --apply-log成功執行,您可能有配置問題(可能innodb_log_files_in_group是原始伺服器中的 1 和恢復的伺服器中的 2 -或未設置),或者您在過程中的某處失去了 ib_logfile1。

InnoDB 沒問題,當它檢測到磁碟上的配置與文件上的配置不同時,它失敗是正常的。

請注意 xtrabackup/innobackupex 僅複製數據文件,而不是/etc/my.cnf.

最終答案:apply-log 沒有成功執行 - 日誌記錄時的錯誤隱藏了這一點。實際錯誤是由於舊版本的 Percona XtraBackup 中的特定錯誤造成的。更新到 >= 2.1.8 的更新版本應該可以解決這個問題。

引用自:https://dba.stackexchange.com/questions/72408