我的第一个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/mysql
MySQL 并启动 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 失败了?
这是什么意思:[错误] InnoDB:仅找到一个日志文件”
另外在主服务器上我可以看到ib_logfile0
,ib_logfile1
但 Xtrabackup 只提供ib_logfile0
- 我尝试重新启动服务器。
- 我尝试了两次备份/恢复程序,以确保我没有错过任何东西。
- 我尝试按照 MySQL 官方论坛某处的建议删除 ib_logfile0 文件。
- 我尝试在 my.cnf 中显式启用 InnoDB
Innodb=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 的更新版本应该可以解决这个问题。