Description:
Incremental apply-log fails with ibbackup if InnoDB data home directory (option variable "innodb_data_home_dir" is not the same as InnoDB log directory (option variable "innodb_log_group_home_dir". The failing ibbackup run ends as follows:
...
Contents of incr_backup/datadir/backup_my.cnf:
innodb_data_home_dir got value /home/pekka/script/incr_backup/datadir
innodb_data_file_path got value ibdata1:10M;ibdata2:20M;ibdata3:50M:autoextend
datadir got value /home/pekka/script/incr_backup/datadir
innodb_log_group_home_dir got value /home/pekka/script/incr_backup/logdir
innodb_log_files_in_group got value 3
innodb_log_file_size got value 10485760
Contents of full_backup/datadir/backup_my.cnf:
innodb_data_home_dir got value /home/pekka/script/full_backup/datadir
innodb_data_file_path got value ibdata1:10M;ibdata2:20M;ibdata3:50M:autoextend
datadir got value /home/pekka/script/full_backup/datadir
innodb_log_group_home_dir got value /home/pekka/script/full_backup/logdir
innodb_log_files_in_group got value 3
innodb_log_file_size got value 10485760
ibbackup: Error: cannot open /home/pekka/script/incr_backup/datadir/ibbackup_logfile.
ibbackup: Run 'ibbackup --help' for help.
How to repeat:
Do incremental apply-log with "innodb_data_home_dir" and "innodb_log_group_home_dir" pointing to different directories for the full backup or the incremental backup.
Suggested fix:
=== modified file 'meb-ibbackup/back/back0back.c'
The function back_prepare_full_backup_for_apply() builds incorrect paths to incremental and full "ibbackup_logfile" files. This could be fixed as follows:
--- meb-ibbackup/back/back0back.c 2010-10-01 06:25:50 +0000
+++ meb-ibbackup/back/back0back.c 2010-10-11 14:46:15 +0000
@@ -5850,9 +5850,9 @@
ulint i;
/* form full pathnames to the datafiles */
- incr_logfile_path = back_path_append(back_innodb_data_home_dir,
+ incr_logfile_path = back_path_append(back_log_dir,
"ibbackup_logfile");
- full_logfile_path = back_path_append(back_back_innodb_data_home_dir,
+ full_logfile_path = back_path_append(back_back_log_dir,
"ibbackup_logfile");
/* copy "ibbackup_logfile" in incremental backup directory