Mysqld.logのエラー:
2020-02-02T01:17:32.133974Z 3069 [ERROR] /usr/sbin/mysqld: The table 'IS_DUT_IFID' is full
このエラーについて私が見つけた多くのスレッドのどれも、この問題の解決に役立ちませんでした。
これまでに確認または試した内容は次のとおりです。
IS_DUT_IFID.ibdが最近4GBのマークを通過したことに気づきました。ファイルは、Red Hat 6.8が管理するext4ボリュームにあります。それは32ビットですが、4GBを超えるファイルはOSに問題を引き起こしていないようであり、次のようにOSの制限に達してはなりません: https://access.redhat.com/記事/ rhel-limits
サーバーには8 GBのRAMがありますが、32ビットであるため、どのプロセスでも4 GBしか使用できないと思います。 MySQLは一度にチャンクをインテリジェントに処理し、必要なものだけをロードするので、これは問題にならないという印象を受けました。たぶん私は間違っています?
私の唯一の考えは、OSを64ビットにアップグレードしてMySQL 64ビットを実行できるようにすることですが、このサーバーは可能な限りそのままにしておくことをお勧めします。アドバイスは大歓迎です!
。
mysql> show table status like 'IS_DUT_IFID';
+-------------+--------+---------+------------+----------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+-------------+--------+---------+------------+----------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
| IS_DUT_IFID | InnoDB | 10 | Dynamic | 35362861 | 32 | 1160773632 | 0 | 2279604224 | 6291456 | NULL | 2020-01-30 15:11:10 | 2020-02-02 11:00:38 | NULL | latin1_swedish_ci | NULL | | |
+-------------+--------+---------+------------+----------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
1 row in set (0.00 sec)
mysql> show variables like '%innodb%';
+------------------------------------------+------------------------+
| Variable_name | Value |
+------------------------------------------+------------------------+
| ignore_builtin_innodb | OFF |
| innodb_adaptive_flushing | ON |
| innodb_adaptive_flushing_lwm | 10 |
| innodb_adaptive_hash_index | ON |
| innodb_adaptive_hash_index_parts | 8 |
| innodb_adaptive_max_sleep_delay | 150000 |
| innodb_api_bk_commit_interval | 5 |
| innodb_api_disable_rowlock | OFF |
| innodb_api_enable_binlog | OFF |
| innodb_api_enable_mdl | OFF |
| innodb_api_trx_level | 0 |
| innodb_autoextend_increment | 64 |
| innodb_autoinc_lock_mode | 1 |
| innodb_buffer_pool_chunk_size | 268435456 |
| innodb_buffer_pool_dump_at_shutdown | ON |
| innodb_buffer_pool_dump_now | OFF |
| innodb_buffer_pool_dump_pct | 25 |
| innodb_buffer_pool_filename | ib_buffer_pool |
| innodb_buffer_pool_instances | 4 |
| innodb_buffer_pool_load_abort | OFF |
| innodb_buffer_pool_load_at_startup | ON |
| innodb_buffer_pool_load_now | OFF |
| innodb_buffer_pool_size | 1073741824 |
| innodb_change_buffer_max_size | 25 |
| innodb_change_buffering | all |
| innodb_checksum_algorithm | crc32 |
| innodb_checksums | ON |
| innodb_cmp_per_index_enabled | OFF |
| innodb_commit_concurrency | 0 |
| innodb_compression_failure_threshold_pct | 5 |
| innodb_compression_level | 6 |
| innodb_compression_pad_pct_max | 50 |
| innodb_concurrency_tickets | 5000 |
| innodb_data_file_path | ibdata1:12M:autoextend |
| innodb_data_home_dir | |
| innodb_deadlock_detect | ON |
| innodb_default_row_format | dynamic |
| innodb_disable_sort_file_cache | OFF |
| innodb_doublewrite | ON |
| innodb_fast_shutdown | 1 |
| innodb_file_format | Barracuda |
| innodb_file_format_check | ON |
| innodb_file_format_max | Barracuda |
| innodb_file_per_table | ON |
| innodb_fill_factor | 100 |
| innodb_flush_log_at_timeout | 1 |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_flush_method | |
| innodb_flush_neighbors | 1 |
| innodb_flush_sync | ON |
| innodb_flushing_avg_loops | 30 |
| innodb_force_load_corrupted | OFF |
| innodb_force_recovery | 0 |
| innodb_ft_aux_table | |
| innodb_ft_cache_size | 8000000 |
| innodb_ft_enable_diag_print | OFF |
| innodb_ft_enable_stopword | ON |
| innodb_ft_max_token_size | 84 |
| innodb_ft_min_token_size | 3 |
| innodb_ft_num_Word_optimize | 2000 |
| innodb_ft_result_cache_limit | 2000000000 |
| innodb_ft_server_stopword_table | |
| innodb_ft_sort_pll_degree | 2 |
| innodb_ft_total_cache_size | 640000000 |
| innodb_ft_user_stopword_table | |
| innodb_io_capacity | 200 |
| innodb_io_capacity_max | 2000 |
| innodb_large_prefix | ON |
| innodb_lock_wait_timeout | 50 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_buffer_size | 33554432 |
| innodb_log_checksums | ON |
| innodb_log_compressed_pages | ON |
| innodb_log_file_size | 134217728 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_log_write_ahead_size | 8192 |
| innodb_lru_scan_depth | 1024 |
| innodb_max_dirty_pages_pct | 75.000000 |
| innodb_max_dirty_pages_pct_lwm | 0.000000 |
| innodb_max_purge_lag | 0 |
| innodb_max_purge_lag_delay | 0 |
| innodb_max_undo_log_size | 1073741824 |
| innodb_monitor_disable | |
| innodb_monitor_enable | |
| innodb_monitor_reset | |
| innodb_monitor_reset_all | |
| innodb_numa_interleave | OFF |
| innodb_old_blocks_pct | 37 |
| innodb_old_blocks_time | 1000 |
| innodb_online_alter_log_max_size | 134217728 |
| innodb_open_files | 2000 |
| innodb_optimize_fulltext_only | OFF |
| innodb_page_cleaners | 4 |
| innodb_page_size | 16384 |
| innodb_print_all_deadlocks | OFF |
| innodb_purge_batch_size | 300 |
| innodb_purge_rseg_truncate_frequency | 128 |
| innodb_purge_threads | 4 |
| innodb_random_read_ahead | OFF |
| innodb_read_ahead_threshold | 56 |
| innodb_read_io_threads | 4 |
| innodb_read_only | OFF |
| innodb_replication_delay | 0 |
| innodb_rollback_on_timeout | OFF |
| innodb_rollback_segments | 128 |
| innodb_sort_buffer_size | 1048576 |
| innodb_spin_wait_delay | 6 |
| innodb_stats_auto_recalc | ON |
| innodb_stats_include_delete_marked | OFF |
| innodb_stats_method | nulls_equal |
| innodb_stats_on_metadata | OFF |
| innodb_stats_persistent | ON |
| innodb_stats_persistent_sample_pages | 20 |
| innodb_stats_sample_pages | 8 |
| innodb_stats_transient_sample_pages | 8 |
| innodb_status_output | OFF |
| innodb_status_output_locks | OFF |
| innodb_strict_mode | ON |
| innodb_support_xa | ON |
| innodb_sync_array_size | 1 |
| innodb_sync_spin_loops | 30 |
| innodb_table_locks | ON |
| innodb_temp_data_file_path | ibtmp1:12M:autoextend |
| innodb_thread_concurrency | 0 |
| innodb_thread_sleep_delay | 10000 |
| innodb_tmpdir | |
| innodb_undo_directory | ./ |
| innodb_undo_log_truncate | OFF |
| innodb_undo_logs | 128 |
| innodb_undo_tablespaces | 0 |
| innodb_use_native_aio | ON |
| innodb_version | 5.7.29 |
| innodb_write_io_threads | 4 |
+------------------------------------------+------------------------+
134 rows in set (0.01 sec)
mysql> show variables like '%tmp%';
+----------------------------------+----------+
| Variable_name | Value |
+----------------------------------+----------+
| default_tmp_storage_engine | InnoDB |
| innodb_tmpdir | |
| internal_tmp_disk_storage_engine | InnoDB |
| max_tmp_tables | 32 |
| slave_load_tmpdir | /tmp |
| tmp_table_size | 16777216 |
| tmpdir | /tmp |
+----------------------------------+----------+
7 rows in set (0.00 sec)
mysql> show variables like '%datadir%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.29 |
+-----------+
1 row in set (0.00 sec)
Perlスクリプトから発生したINSERTエラー:
The table 'IS_DUT_IFID' is full [for Statement "INSERT INTO IS_DUT_IFID ( ddv_id, dut_ifid_id, is_id) VALUES ( '84600', 3172, 1594897 )"]
MySQLの64ビットバージョンを実行するには、OSを64ビットにアップグレードします。
興味深いことに、Windows 32ではInnoDBテーブルのサイズに制限があります。
注:Bulletpoint 10 of MySQL Documentation on "InnoDB Limits"
Windows 32ビットシステムでは、テーブルスペースファイルは4GBを超えることはできません( Bug#80149 )。
そのバグレポートの抜粋に注意してください(2020-01-26 08:10 AMに提出)
一時テーブルのサイズが4GBに達すると、テストケースは次のように失敗します。
mysql> t select * from tに挿入します。クエリは正常、98304行が影響を受けた(6分54.49秒)レコード:98304重複:0警告:0
mysql> t select * from tに挿入します。エラー1114(HY000):テーブル 'c:\ tmp#sql2cc04_17_10'がいっぱいです
o)Linux 64ビットおよびWindows 64ビットで動作します。 o)tmpdirとdatadirには十分な空き容量があります。
それもあなたの状況のようです。
おそらく、32ビットバージョンのMySQLにも同じ制限が存在します。
「テーブルがいっぱいです」は、ほとんどの場合、ディスク容量の問題を示しています。メインディスクパーティションまたは「tmp」パーティションにある可能性があります。
Buffer_poolはキャッシュを行います。あなたが持っている innodb_buffer_pool_size = 1G
。したがって、32ビットか64ビットかに関係なく、またテーブルのサイズに関係なく、そのサイズは機能します-大きなテーブルではおそらく遅くなりますが、機能します。 (利用可能なRAMが2GB未満の場合、1Gは大きすぎます。しかし、再び、「テーブルがいっぱいです」とは表示されません。)
/ var/lib/mysqlおよび/ tmpディスク容量-47GB利用可能
両者に?またはそれぞれに? InnoDBは、テーブルが2つのディスクパーティションにまたがるほどスマートです。それで、それぞれでどれくらい利用できますか?
SHOW VARIABLES LIKE '%dir%';