为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:主库A异常宕机,然后备库B自动切换成主库,后面主库B又宕机一次。分析core文件,是两条insert,插入的是同一张表。
日志报错:之前都没出现任何报错,突然性的宕机
sigterm_handler receive signal 11
[for dem]SYSTEM SHUTDOWN ABORT
第二次宕机
Thread 1 (Thread 0xfffadd7ed100 (LWP 1147600)):
#0 0x000000000199c75c in assert_fun ()
#1 0x000000000199c944 in sigterm_handler ()
#2 <signal handler called>
#3 0x0000000000b1cfd0 in tbl_blob_info_get_anyway ()
#4 0x0000000000bcb500 in sess4_stmt_bind_blob_info_init_in_table ()
#5 0x0000000000bcb72c in sess4_stmt_create_bind_blob_info ()
#6 0x00000000019dc768 in ntsk_process_put_data2_low ()
#7 0x00000000019dcc78 in ntsk_process_put_data2 ()
#8 0x00000000019f4244 in ntsk_process_cop ()
#9 0x00000000018c4c20 in uthr_db_main_for_sess ()
#10 0x0000ffffabb54320 in ?? () from /usr/lib64/libc.so.6
#11 0x0000ffffabbba45c in ?? () from /usr/lib64/libc.so.6
第二次宕机
Thread 1 (Thread 0xfffa59ffe100 (LWP 3693299)):
#0 0x000000000199c75c in assert_fun ()
#1 0x000000000199c944 in sigterm_handler ()
#2 <signal handler called>
#3 0x0000000000b1cfd0 in tbl_blob_info_get_anyway ()
#4 0x0000000000bcb500 in sess4_stmt_bind_blob_info_init_in_table ()
#5 0x0000000000bcb72c in sess4_stmt_create_bind_blob_info ()
#6 0x00000000019dc768 in ntsk_process_put_data2_low ()
#7 0x00000000019dcc78 in ntsk_process_put_data2 ()
#8 0x00000000019f4244 in ntsk_process_cop ()
#9 0x00000000018c4c20 in uthr_db_main_for_sess ()
#10 0x0000ffffa3039320 in ?? () from /usr/lib64/libc.so.6
#11 0x0000ffffa309f45c in ?? () from /usr/lib64/libc.so.6
首先,第一步:可以使用达梦dmrdc工具将core文件转化成sql语句:dmrdc sfile=core.xxx dfile=result.txt
第二步:在result.txt中搜索 以上 3693299,可以对应到具体造成宕机的sql。这条sql可能是个insert语句,看看这里面哪个列的值超长了。
最后,确定了超长字段之后,确认一下数据类型是否合适进行调整。
另外,可以看一下数据库的版本。考虑升级。