[MDEV-18201] InnoDB: Operating system error number 2 in a file operation and InnoDB: Cannot open datafile for read-only upon startup on datadir restored from full backup Created: 2019-01-10  Updated: 2019-01-10  Resolved: 2019-01-10

Status: Closed
Project: MariaDB Server
Component/s: mariabackup, Storage Engine - InnoDB
Affects Version/s: 10.2, 10.3, 10.4
Fix Version/s: 10.4.2, 10.2.22, 10.3.13

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Vladislav Vaintroub
Resolution: Fixed Votes: 0
Labels: None

Attachments: File backup_before_prepare.tar.gz     File mbackup_backup.log     File mysql.err     File trial.log    
Issue Links:
Relates
relates to MDEV-18185 MariaBackup --prepare fails with Inno... Closed

 Description   

10.4 30da40bb8c303

2019-01-10 16:07:43 0 [Note] InnoDB: New log files created, LSN=9813228
2019-01-10 16:07:43 0 [ERROR] InnoDB: Operating system error number 2 in a file operation.
2019-01-10 16:07:43 0 [ERROR] InnoDB: The error means the system cannot find the path specified.
2019-01-10 16:07:43 0 [ERROR] InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them.
2019-01-10 16:07:43 0 [ERROR] InnoDB: Cannot open datafile for read-only: './test/seq9.ibd' OS error: 71
2019-01-10 16:07:43 0 [ERROR] InnoDB: Operating system error number 2 in a file operation.
2019-01-10 16:07:43 0 [ERROR] InnoDB: The error means the system cannot find the path specified.
2019-01-10 16:07:43 0 [ERROR] InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them.
2019-01-10 16:07:43 0 [ERROR] InnoDB: Could not find a valid tablespace file for ``test`.`seq9``. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html for how to resolve the issue.

Further attempts to open tables cause more errors

MariaDB [(none)]> show create table test.seq9;
ERROR 1932 (42S02): Table 'test.seq9' doesn't exist in engine
MariaDB [(none)]> show create table test.seq8;
ERROR 1932 (42S02): Table 'test.seq8' doesn't exist in engine

2019-01-10 16:16:17 9 [ERROR] InnoDB: Failed to find tablespace for table `test`.`seq9` in the cache. Attempting to load the tablespace with space id 649
2019-01-10 16:16:17 9 [ERROR] InnoDB: Operating system error number 2 in a file operation.
2019-01-10 16:16:17 9 [ERROR] InnoDB: The error means the system cannot find the path specified.
2019-01-10 16:16:17 9 [ERROR] InnoDB: Cannot open datafile for read-only: './test/seq9.ibd' OS error: 71
2019-01-10 16:16:17 9 [ERROR] InnoDB: Operating system error number 2 in a file operation.
2019-01-10 16:16:17 9 [ERROR] InnoDB: The error means the system cannot find the path specified.
2019-01-10 16:16:17 9 [ERROR] InnoDB: Could not find a valid tablespace file for ``test`.`seq9``. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html for how to resolve the issue.
2019-01-10 16:16:20 9 [ERROR] InnoDB: Expected tablespace id 631 but found 649 in the file ./test/seq8.ibd
2019-01-10 16:16:20 9 [ERROR] InnoDB: Expected tablespace id 631 but found 649 in the file ./test/seq8.ibd
2019-01-10 16:16:20 9 [ERROR] InnoDB: Table `test`.`seq8` is corrupted. Please drop the table and recreate.

The backup datadir before prepare is attached, as well as the backup log.
To reproduce, run

bin/mariabackup --prepare --target-dir=`pwd`/backup_before_prepare
bin/mariabackup --copy-back --target-dir=`pwd`/backup_before_prepare --datadir=`pwd`/data 

and start the server. All defaults will do, or for the accuracy you can use --innodb-compression-algorithm=none which the initial server was run with. It doesn't make any difference.

I have no information yet whether it affects earlier versions.


Notes on the origin of the report


Please note it's not necessarily reproducible this way.

https://travis-ci.org/elenst/travis-tests/jobs/477530220

Tests: elenst-dev 0ebbe452
Toolbox: ece65ed3b78

perl ./runall-new.pl --basedir=/home/travis/server --vardir=/home/travis/logs/vardir --duration=350 --threads=4 --seed=1547092682 --reporters=Backtrace,ErrorLog,Deadlock --skip-gendata --gendata-advanced --views --grammar=conf/mariadb/generic-dml.yy --redefine=conf/mariadb/bulk_insert.yy --mysqld=--log_output=FILE --mysqld=--max-statement-time=20 --mysqld=--lock-wait-timeout=10 --mysqld=--loose-innodb-lock-wait-timeout=5 --mysqld=--loose-debug_assert_on_not_freed_memory=0 --filter=/home/travis/mariadb-toolbox/travis/10.4-combo-filter.ff --mysqld=--innodb-compression-algorithm=none --innodb-page-size=8K --engine=InnoDB --scenario=MariaBackupFull --redefine=conf/mariadb/alter_table.yy --redefine=conf/mariadb/modules/admin.yy --redefine=conf/mariadb/versioning.yy --redefine=conf/mariadb/sequences.yy


The test log is attached as trial.log


Generated at Thu Feb 08 08:42:16 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.