WL#6416: InnoDB: Remove the use of *.isl files

Affects: Server-8.0   —   Status: Complete

In MySQL 5.6, InnoDB introduced *.isl (InnoDB Symbolic Link) files to locate data files for tables created with CREATE TABLE…DATA DIRECTORY. InnoDB refers to them as remote tablespaces, because they are not under the same data directory as ordinary file-per-table tablespaces.

We also added the InnoDB system tables SYS_TABLESPACES and SYS_DATAFILES to store the remote path. That path is not available during the REDO portion of recovery since the system tablespace and system tables are recovered at the same time as all the remote tablespaces.

The purpose of these *.isl files is:

  1. Allow file discovery before DD metadata is available.
  2. Allow a way to move a tablespace file while the server is offline, and update the DD metadata next time the table is accessed.

We plan to replace the InnoDB SYS_* tables with the Global Data Dictionary tables. It will no longer be possible to update the data dictionary tables from low-level InnoDB code, such as when opening a table. The SYS_DATAFILES table that was introduced in 5.6 was updated from low-level operations.

In the future, InnoDB will be able to find all tablespace files that were mentioned in the REDO log, so that recovery can complete without relying on *.isl files. However, fixing the portability issue requires that the *.isl be consulted during redo log processing if the original file location is not accessible.

A replacement of *.isl files for both use cases will be provided. The replacement mapping will only be consulted during server startup. So, there will not be any surprise updates of the data dictionary when tables are opened during normal server operation.

Note: There never was a way to move files around with SQL, except using a table-rebuilding ALTER TABLE (online operation since MySQL 5.6) or export/import.