问题说明:

在使用xtrabackup工具备份mariadb数据库时提示如下错误:

InnoDB: Error: log file ./ib_logfile0 is of different size 5242880 bytes
InnoDB: than specified in the .cnf file 50331648 bytes!
innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2672.

数据库是使用通用二进制格式安装的,配置文件是复制的support-files目录下的my-large.cnf文件。

在该配置文件中默认的innodb_log_file_size大小是64M,其他类型的配置文件会各有不同,而当时数据库数据目录下的ib_logfile有两个,ib_logfile0和ib_logfile1,这两个文件的大小是5M:

[root@node1 data]# ls -lh ib_logfile0 ib_logfile1
-rw-rw---- 1 nobody nobody 5.0M Sep  9 00:29 ib_logfile0
-rw-rw---- 1 nobody nobody 5.0M Sep  9 00:29 ib_logfile1

解决方法:

备份日志并移除数据目录中日志的的方式可以重新生成日志文件,不过为了避免以后恢复数据的麻烦,没有删除数据目录中的文件,而是在配置文件中将innodb_log_file_size参数设置为5M,默认这个参数是未启用的,虽然未启用,不过有默认值,但默认值与实际的ib_logfile数值大小不一致,导致innobackupex命令在执行过程中检查这些参数的设置时不一致而报错终止备份的过程。在修改配置文件后中的参数为5M后,再执行备份操作就可以顺利进行了。