Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Incomplete
-
10.6.5
-
None
-
Linux Centos 7.4
Description
Been using mariadb server for years. We always set the server via this so we put a bound to ibdata1 fiile :
innodb_data_file_path=ibdata1:20m:autoextend:max:5G
This always worked, never hit an error.
With 10.6.5, (but 10.5.x and after configuring to use innodb_undo_tablespaces,
we get below error when e.g. creating a simple table with 3 rows, this error hits.
Can't create table `XXX` (errno: 135: No more room in record file")
This hits when the ibdata1 file raaches the bounds given. So we have to keep growing the max bound, by 2GB ever few days as it keeps hitting the limit, so this looks like an idbata1 LEAK.
When this error hits , all 4 undo files are around half their max size, so not exhausted.
We were hoping that auto truncating undo tablespaces would avoid this very issue to ever happen, but it actually seems to trigger it !
Below are the relevant parts of our config.
innodb_undo_tablespaces=4
innodb_undo_log_truncate=1
innodb_max_undo_log_size=1024m
innodb_log_file_size=1024m
innodb_log_files_in_group=2
innodb_flush_log_at_timeout=20
transaction_isolation=READ-COMMITTED
innodb_file_per_table=1
innodb_data_file_path=ibdata1:20m:autoextend:max:5G
innodb_autoextend_increment=200 # m incrs
innodb_log_file_size=750m # TODO: try 2G+
innodb_log_files_in_group=2
innodb_checksum_algorithm=crc32
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=2
innodb_autoinc_lock_mode=2
innodb_use_native_aio=1
innodb_open_files=3000
innodb_stats_on_metadata=0
query_cache_type=1
query_cache_size=600m
query_cache_limit=100m
query_alloc_block_size=32k
table_cache=12000
table_open_cache=8192
table_definition_cache=8192
Attachments
Issue Links
- relates to
-
MDEV-19514 Defer change buffer merge until pages are requested
-
- Closed
-
-
MDEV-21952 ibdata1 file size growing in MariaDB
-
- Closed
-
Can you please provide a test case for reproducing this?
Another possible source of InnoDB system tablespace bloat would be the change buffer. Did you try innodb_change_buffering=none?
I would not recommend creating data files with the non-default setting innodb_checksum_algorithm=crc32. The default setting full_crc32 is safer and more efficient.
The option innodb_log_files_in_group has no effect already in MariaDB Server 10.5. A single file was found to be slightly more efficient in
MDEV-20907. A log file size of only 1 gigabyte or 750 megabytes feels small. It could be set close to the buffer pool size (which you did not disclose).