主机配置:
8C 16G
虚拟机环境 vmware
现象:
多次尝试,单个sql文件50G,导入到一段时间后,mariadb进程崩溃,
mariadb版本
10.4.12 centos7
error日志记录如下:
2020-02-15 18:31:12 0 [Note] Server socket created on IP: '::'.
2020-02-15 18:31:12 0 [Warning] 'user' entry '@ansiblevm' ignored in --skip-name-resolve mode.
2020-02-15 18:31:12 0 [Warning] 'proxies_priv' entry '@% root@ansiblevm' ignored in --skip-name-resolve mode.
2020-02-15 18:31:12 0 [Note] Reading of all Master_info entries succeeded
2020-02-15 18:31:12 0 [Note] Added new Master_info '' to hash table
2020-02-15 18:31:12 0 [Note] /usr/local/mariadb/bin/mysqld: ready for connections.
Version: '10.4.12-MariaDB-log' socket: '/data/mysql3360/data/mysql3360.sock' port: 3360 MariaDB Server
2020-02-15 18:31:15 0 [Note] InnoDB: Rolled back recovered transaction 66625
2020-02-15 18:31:15 0 [Note] InnoDB: Rollback of non-prepared transactions completed
2020-02-15 19:13:34 41 [Warning] Aborted connection 41 to db: 'unconnected' user: 'root' host: '127.0.0.1' (Got timeout reading communication packets)
200215 19:23:56 [ERROR] mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
To report this bug, see https://mariadb.com/kb/en/reporting-bugs
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
Server version: 10.4.12-MariaDB-log
key_buffer_size=33554432
read_buffer_size=8388608
max_used_connections=3
max_threads=514
thread_count=9
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 6361464 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x7f51980009a8
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0x7f543453fec0 thread_stack 0x80000
/usr/local/mariadb/bin/mysqld(my_print_stacktrace+0x2b)[0x55f0275694cb]
/usr/local/mariadb/bin/mysqld(handle_fatal_signal+0x4b7)[0x55f026fbaff7]
/lib64/libpthread.so.0(+0xf5d0)[0x7f54396985d0]
/usr/local/mariadb/bin/mysqld(+0xb26470)[0x55f0271ec470]
/usr/local/mariadb/bin/mysqld(+0xc1e434)[0x55f0272e4434]
/usr/local/mariadb/bin/mysqld(+0xb65cb2)[0x55f02722bcb2]
include/mach0data.ic:84(mach_read_from_2)[0x55f02722d1f7]
btr/btr0cur.cc:2005(btr_cur_search_to_nth_level_func(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_cur_t*, rw_lock_t*, char const*, unsigned int, mtr_t*, unsigned long))[0x55f02722d643]
row/row0ins.cc:2994(row_ins_sec_index_entry_low(unsigned long, unsigned long, dict_index_t*, mem_block_info_t*, mem_block_info_t*, dtuple_t*, unsigned long, que_thr_t*))[0x55f02723daa2]
row/row0ins.cc:3317(row_ins_sec_index_entry(dict_index_t*, dtuple_t*, que_thr_t*, bool))[0x55f02717b679]
row/row0mysql.cc:1467(row_insert_for_mysql(unsigned char const*, row_prebuilt_t*, ins_mode_t))[0x55f026fc5ee8]
handler/ha_innodb.cc:8040(ha_innobase::write_row(unsigned char const*))[0x55f026d9e154]
sql/handler.cc:6675(handler::ha_write_row(unsigned char const*))[0x55f026da0b6f]
sql/sql_insert.cc:2056(write_record(THD*, TABLE*, st_copy_info*))[0x55f026dd1418]
sql/sql_insert.cc:1078(mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool))[0x55f026dd3961]
sql/sql_parse.cc:4539(mysql_execute_command(THD*))[0x55f026dd52c3]
sql/sql_parse.cc:10317(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x55f026dd68d1]
sql/sql_parse.cc:1360(do_command(THD*))[0x55f026ea6822]
sql/sql_connect.cc:1412(do_handle_one_connection(CONNECT*))[0x55f026ea6904]
/lib64/libpthread.so.0(+0x7dd5)[0x7f5439690dd5]
/lib64/libc.so.6(clone+0x6d)[0x7f5438bacead]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7f519813ad60): is an invalid pointer
Connection ID (thread ID): 8
Status: NOT_KILLED
Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
We think the query pointer is invalid, but we will try to print it anyway.
Query: INSERT INTO `t` VALUES .....
Writing a core file...
Working directory at /data/mysql3360/data
Resource Limits:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 63978 63978 processes
Max open files 65535 65535 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 63978 63978 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Core pattern: |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h