データファイル拡張できないときの挙動

(8.0.22)
https://dev.mysql.com/doc/refman/8.0/ja/innodb-create-table-external.html


file-per-table テーブルスペースまたは一般テーブルスペースが DATA DIRECTORY = 句を使用して作成された場合、
.ibd ファイルは通常のデータディレクトリ外の指定されたパスにあります。

MySQL 8.0.21 では、DATA DIRECTORY 句を使用してデータディレクトリの外部で作成されるテーブルおよびテーブルパーティションは、
InnoDB で認識されるディレクトリに制限されます。

SELECT @@datadir,@@innodb_data_home_dir,@@innodb_directories;

 

100MBのディスクを追加しマウント
このディスクにテーブルを作成する

fdisk /dev/sdb
mkfs.xfs /dev/sdb1
mkdir /mnt/mysqltest
mount -t xfs /dev/sdb1 /mnt/mysqltest
chown mysql:mysql /mnt/mysqltest

vim /etc/my.cnf
[mysqld]
innodb_directories="/mnt/mysqltest"


drop table tab1;
create table tab1(col1 int) data directory = '/mnt/mysqltest';
insert into tab1 values(1);

insert into tab1 select * from tab1;


※ログに出力されたメッセージ
2021-07-21T23:38:33.710293Z 8 [ERROR] [MY-012144] [InnoDB] posix_fallocate(): Failed to preallocate data for file /mnt/mysqltest/test/tab1.ibd, desired size 4194304 bytes. Operating system error number 28. Check that the disk is not full or a disk quota exceeded. Make sure the file system supports this function. Refer to your operating system documentation for operating system error code information.
2021-07-21T23:38:33.736401Z 8 [Warning] [MY-012638] [InnoDB] Retry attempts for writing partial data failed.
2021-07-21T23:38:33.736447Z 8 [ERROR] [MY-012639] [InnoDB] Write to file /mnt/mysqltest/test/tab1.ibd failed at offset 94371840, 1048576 bytes should have been written, only 0 were written. Operating system error number 28. Check that your OS and file system support files of this size. Check also that the disk is not full or a disk quota exceeded.
2021-07-21T23:38:33.736466Z 8 [ERROR] [MY-012640] [InnoDB] Error number 28 means 'No space left on device'
2021-07-21T23:38:33.736479Z 8 [Warning] [MY-012145] [InnoDB] Error while writing 4194304 zeroes to /mnt/mysqltest/test/tab1.ibd starting at offset 92274688
2021-07-21T23:38:33.736645Z 8 [ERROR] [MY-013132] [Server] The table 'tab1' is full!

※クライアント側で出力されたメッセージ
ERROR 1114 (HY000): The table 'tab1' is full

 

(19c)

drop tablespace test including contents and datafiles;
create tablespace test datafile '/u01/app/oracle/oradata/ORCL/pdb1/test.dbf' size 10M autoextend off;

drop table tab1 purge;
create table tab1(col1 int) tablespace test;
insert into tab1 values(1);
commit;

insert into tab1 select * from tab1;


※ログに出力されたメッセージ
PDB1(3):ORA-1653: unable to extend table TEST.TAB1 by 128 in tablespace TEST [PDB1]

※クライアント側で出力されたメッセージ
*
行1でエラーが発生しました。:
ORA-01653: 表TEST.TAB1を128(表領域TEST)で拡張できません

 

(13)
100MBのディスクを追加し、/mnt/postgresqltestにマウント

fdisk /dev/sdb
mkfs.xfs /dev/sdb1
mkdir /mnt/postgresqltest
mount -t xfs /dev/sdb1 /mnt/postgresqltest
chown postgres:postgres /mnt/postgresqltest

drop tablespace test;
create tablespace test owner postgres location '/mnt/postgresqltest';


drop table tab1;
create table tab1(col1 int) tablespace test;
insert into tab1 values(1);

insert into tab1 select * from tab1;


※ログに出力されたメッセージ
2021-07-22 09:08:07.440 JST [2064] ERROR: could not extend file "pg_tblspc/403445/PG_13_202007201/73869/403446": No space left on device
2021-07-22 09:08:07.440 JST [2064] HINT: Check free disk space.

※クライアント側で出力されたメッセージ
ERROR: could not extend file "pg_tblspc/403445/PG_13_202007201/73869/403446": No space left on device
HINT: Check free disk space.

(2019)

use master

alter database test remove file test;
alter database test remove filegroup test;

alter database test add filegroup test;
alter database test add file
(name = test ,filename = 'C:\test\test.ndf', SIZE = 8192KB , FILEGROWTH = 0
) to filegroup test
;

use test

drop table tab1;
create table tab1(col1 int) on test;
insert into tab1 values(1);

insert into tab1 select * from tab1;

 

※ログに出力されたメッセージ
2021-07-22 09:19:13.72 spid131 エラー: 1105、重大度: 17、状態: 2。
2021-07-22 09:19:13.72 spid131 Could not allocate space for object 'dbo.tab1' in database 'test' because the 'test' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

※クライアント側で出力されたメッセージ
メッセージ 1105、レベル 17、状態 2、行 7
データベース 'test' にオブジェクト 'dbo.tab1' の領域を割り当てられませんでした。'test' ファイル グループがいっぱいです。不要なファイルの削除、ファイル グループ内のオブジェクトの削除、ファイル グループへの新しいファイルの追加、またはファイル グループの既存のファイルの自動拡張の設定のいずれかを行ってディスク領域を作成してください。