TiDBv6.5.0 执行创建副本命令后,tiflash进程不断重启,是什么原因呢?

【 TiDB 使用环境】测试
【 TiDB 版本】
TiDB v6.5.0
【复现路径】
ALTER DATABASE test SET TIFLASH REPLICA 1;
【遇到的问题:问题现象及影响】
Tiflash_error.log
$ tail -f tiflash_error.log
[2023/01/04 17:15:29.929 +08:00] [WARN] [StorageConfigParser.cpp:241] [“The configuration "path" is deprecated. Check [storage] section for new style.”] [thread_id=1]
[2023/01/04 17:18:39.194 +08:00] [ERROR] [BaseDaemon.cpp:377] [########################################] [source=BaseDaemon] [thread_id=27]
[2023/01/04 17:18:39.194 +08:00] [ERROR] [BaseDaemon.cpp:378] [“(from thread 26) Received signal Illegal instruction(4).”] [source=BaseDaemon] [thread_id=27]
[2023/01/04 17:18:39.194 +08:00] [ERROR] [BaseDaemon.cpp:473] [“Illegal operand.”] [source=BaseDaemon] [thread_id=27]
[2023/01/04 17:18:45.690 +08:00] [ERROR] [BaseDaemon.cpp:570] [“\n 0x61214f1\tfaultSignalHandler(int, siginfo_t*, void*) [tiflash+101848305]\n \tlibs/libdaemon/src/BaseDaemon.cpp:221\n 0x7fbaed382070\t [libc.so.6+266352]\n 0x682303b\tDB::countBytesInFilter(DB::PODArray<unsigned char, 4096ul, Allocator, 15ul, 16ul> const&) [tiflash+109195323]\n \tdbms/src/Columns/ColumnsCommon.cpp:66\n 0x16d4d10\tDB::DM::DMVersionFilterBlockInputStream<1>::read(DB::PODArray<unsigned char, 4096ul, Allocator, 15ul, 16ul>*&, bool) [tiflash+23940368]\n \tdbms/src/Storages/DeltaMerge/DMVersionFilterBlockInputStream.cpp:373\n 0x6a93168\tDB::DM::BoundedSSTFilesToBlockInputStream::read() [tiflash+111751528]\n \tdbms/src/Storages/DeltaMerge/SSTFilesToBlockInputStream.cpp:307\n 0x16d8a44\tDB::DM::SSTFilesToDTFilesOutputStream<std::__1::shared_ptrDB::DM::BoundedSSTFilesToBlockInputStream >::write() [tiflash+23956036]\n \tdbms/src/Storages/DeltaMerge/SSTFilesToDTFilesOutputStream.cpp:200\n 0x6a89c8f\tDB::KVStore::preHandleSSTsToDTFiles(std::__1::shared_ptrDB::Region, DB::SSTViewVec, unsigned long, unsigned long, DB::DM::FileConvertJobType, DB::TMTContext&) [tiflash+111713423]\n \tdbms/src/Storages/Transaction/ApplySnapshot.cpp:360\n 0x6a89364\tDB::KVStore::preHandleSnapshotToFiles(std::__1::shared_ptrDB::Region, DB::SSTViewVec, unsigned long, unsigned long, DB::TMTContext&) [tiflash+111711076]\n \tdbms/src/Storages/Transaction/ApplySnapshot.cpp:275\n 0x6ae4666\tPreHandleSnapshot [tiflash+112084582]\n \tdbms/src/Storages/Transaction/ProxyFFI.cpp:388\n 0x7fbaee7abe28\tengine_store_ffi::$LT$impl$u20$engine_store_ffi…interfaces…root…DB…EngineStoreServerHelper$GT$::pre_handle_snapshot::h14b79dee0dc709dc [libtiflash_proxy.so+17415720]\n 0x7fbaee7a3899\tengine_store_ffi::observer::pre_handle_snapshot_impl::ha6024895a135c813 [libtiflash_proxy.so+17381529]\n 0x7fbaee797236\tyatp::task::future::RawTask$LT$F$GT$::poll::haa9f3b11a91f3b25 [libtiflash_proxy.so+17330742]\n 0x7fbaf05a59b3\t$LT$yatp…task…future…Runner$u20$as$u20$yatp…pool…runner…Runner$GT$::handle::h3ec77eaab16f0540 [libtiflash_proxy.so+48847283]\n 0x7fbaf059820c\tstd::sys_common::backtrace::__rust_begin_short_backtrace::h2dafe5d145aa6fe4 [libtiflash_proxy.so+48792076]\n 0x7fbaf0598ccc\tcore::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h8730f42d18399d62 [libtiflash_proxy.so+48794828]\n 0x7fbaefd13375\tstd::sys::unix::thread::thread::new::thread_start::hd2791a9cabec1fda [libtiflash_proxy.so+39859061]\n \t/rustc/96ddd32c4bfb1d78f0cd03eb068b1710a8cebeef/library/std/src/sys/unix/thread.rs:108\n 0x7fbaed3cc4ca\t [libc.so.6+570570]”] [source=BaseDaemon] [thread_id=27]
【资源配置】
【附件:截图/日志/监控】
数据复制过程停滞
mysql> SELECT * FROM information_schema.tiflash_replica;
±-------------±---------------------±---------±--------------±----------------±----------±---------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_ID | REPLICA_COUNT | LOCATION_LABELS | AVAILABLE | PROGRESS |
±-------------±---------------------±---------±--------------±----------------±----------±---------+
| test | GLOBAL_VARIABLES | 107 | 1 | | 0 | 0 |
| test | cluster_config | 109 | 1 | | 0 | 0 |
| test | warehouse | 288 | 1 | | 0 | 0 |
| test | history | 318 | 1 | | 0 | 0 |
| test | new_order | 328 | 1 | | 0 | 0 |
| test | orders | 338 | 1 | | 0 | 0 |
| test | item | 368 | 1 | | 0 | 0 |
| test | t_0008 | 523 | 1 | | 0 | 0 |
| test | t_0010 | 528 | 1 | | 0 | 0 |
| test | t_0001 | 530 | 1 | | 0 | 0 |
| test | t1 | 687 | 1 | | 0 | 0 |
| test | t2 | 692 | 1 | | 0 | 0 |
| test | t3 | 696 | 1 | | 0 | 0 |
| test | t4 | 698 | 1 | | 0 | 0 |
| test | t_test | 703 | 1 | | 0 | 0 |
| test | cluster_config_612 | 716 | 1 | | 0 | 0 |
| test | GLOBAL_VARIABLES_612 | 718 | 1 | | 0 | 0 |
| test | cluster_config_650 | 782 | 1 | | 0 | 0 |
| test | GlOBAL_VARIABLES_650 | 784 | 1 | | 0 | 0 |
| test | stock | 358 | 1 | | 0 | 0 |
| test | customer | 308 | 1 | | 0 | 0 |
| test | order_line | 348 | 1 | | 0 | 0 |
| test | district | 298 | 1 | | 0 | 0.12 |
±-------------±---------------------±---------±--------------±----------------±----------±---------+
23 rows in set (0.21 sec)
Tiflash进程不断重启:
[tidb@olap-high-01 log]$ ps -ef|grep tiflash
tidb 474164 1 99 17:26 ? 00:00:12 bin/tiflash/tiflash server --config-file conf/tiflash.toml
tidb 475271 452527 0 17:27 pts/0 00:00:00 grep --color=auto tiflash
[tidb@olap-high-01 log]$ ps -ef|grep tiflash
tidb 474164 1 99 17:26 ? 00:00:13 bin/tiflash/tiflash server --config-file conf/tiflash.toml
tidb 475273 452527 0 17:27 pts/0 00:00:00 grep --color=auto tiflash
[tidb@olap-high-01 log]$ ps -ef|grep tiflash
tidb 474164 1 99 17:26 ? 00:00:13 bin/tiflash/tiflash server --config-file conf/tiflash.toml
tidb 475275 452527 0 17:27 pts/0 00:00:00 grep --color=auto tiflash
[tidb@olap-high-01 log]$ ps -ef|grep tiflash
tidb 475285 452527 0 17:27 pts/0 00:00:00 grep --color=auto tiflash
[tidb@olap-high-01 log]$ ps -ef|grep tiflash
tidb 475287 452527 0 17:27 pts/0 00:00:00 grep --color=auto tiflash
[tidb@olap-high-01 log]$ ps -ef|grep tiflash
tidb 475289 452527 0 17:27 pts/0 00:00:00 grep --color=auto tiflash
[tidb@olap-high-01 log]$ ps -ef|grep tiflash
tidb 475290 1 99 17:27 ? 00:00:08 bin/tiflash/tiflash server --config-file conf/tiflash.toml
tidb 476381 452527 0 17:27 pts/0 00:00:00 grep --color=auto tiflash

  1. 有没有同时对test库下的表进行ddl操作?
  2. 试试单个表呢

1.没有ddl操作。
2.这个还没试。但是升级之前6.1.2版本的tiflash没有这个问题。
那个报错能看懂吗?我看不明白为啥报错…

接收到了非法指令,后边的我也看不太懂了。
我现在的环境正好也是6.1.2,等我升级完我来试试看能不能复现。

我的环境还没来的及升级,你先看看跟这个有关系吗?

升级之后我发现tiflash不好用,我把tiflash缩没了,重新添加的2个tiflash节点,新旧版本的tiflash配置基本都是默认的,只改了端口号。新添加的Tiflash就这个报错。前后没啥变化…新添加的节点是不是就不跟你说的这个有关系了?
$ cat scale-out.yaml
tiflash_servers:

  • host: 10...11
    tcp_port: 9900
    http_port: 8923
  • host: 10...12
    tcp_port: 9900
    http_port: 8923

如果你之前的Tiflash已经完全缩容掉了,并且添加了新的节点,应该就不是我上面说的问题了。

我先总结先你的过程:

  1. 6.1.2升级到6.5,升级后发现Tiflash有问题(具体什么问题未知)
  2. 缩容掉了原来的tiflash节点(是缩容了所有的tiflash节点吗?);
  3. 添加了2个新的tiflash节点( host: 10.. .11 和 host: 10.. .12);
  4. 执行 ALTER DATABASE test SET TIFLASH REPLICA 1; 发生了上述报错(是两个新加的节点都有相关的报错吗)

不知道我的描述是否完整,相关的疑问也麻烦您补充下

你描述的问题流程没问题。
1.的具体问题就是tiflash副本不可用,重新创建副本也不可能用。而且这里就发现了tiflash在不断重启。
2.是缩容了所有节点
4.是两个节点都有报错。

我也重新缩容tiflash,又扩容,没有给表设置tiflash副本的时候tiflash还好好的,测试了单表加1副本,有一个tiflash节点就开始不断重启了,不过另一个tiflash节点没有重启。
表的副本是不可用状态:
mysql> SELECT * FROM information_schema.tiflash_replica;
±-------------±-----------±---------±--------------±----------------±----------±---------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_ID | REPLICA_COUNT | LOCATION_LABELS | AVAILABLE | PROGRESS |
±-------------±-----------±---------±--------------±----------------±----------±---------+
| test | t1 | 687 | 1 | | 0 | 0 |
±-------------±-----------±---------±--------------±----------------±----------±---------+
1 row in set (0.04 sec)
重启的tiflash节点有报错:
[2023/01/06 09:51:19.898 +08:00] [ERROR] [BaseDaemon.cpp:377] [########################################] [source=BaseDaemon] [thread_id=22]
[2023/01/06 09:51:19.898 +08:00] [ERROR] [BaseDaemon.cpp:378] [“(from thread 21) Received signal Illegal instruction(4).”] [source=BaseDaemon] [thread_id=22]
[2023/01/06 09:51:19.899 +08:00] [ERROR] [BaseDaemon.cpp:473] [“Illegal operand.”] [source=BaseDaemon] [thread_id=22]
[2023/01/06 09:51:23.441 +08:00] [ERROR] [BaseDaemon.cpp:570] [“\n 0x61214f1\tfaultSignalHandler(int, siginfo_t*, void*) [tiflash+101848305]\n \tlibs/libdaemon/src/BaseDaemon.cpp:221\n 0x7fedf85d2070\t [libc.so.6+266352]\n 0x682303b\tDB::countBytesInFilter(DB::PODArray<unsigned char, 4096ul, Allocator, 15ul, 16ul> const&) [tiflash+109195323]\n \tdbms/src/Columns/ColumnsCommon.cpp:66\n 0x16d4d10\tDB::DM::DMVersionFilterBlockInputStream<1>::read(DB::PODArray<unsigned char, 4096ul, Allocator, 15ul, 16ul>*&, bool) [tiflash+23940368]\n \tdbms/src/Storages/DeltaMerge/DMVersionFilterBlockInputStream.cpp:373\n 0x6a93168\tDB::DM::BoundedSSTFilesToBlockInputStream::read() [tiflash+111751528]\n \tdbms/src/Storages/DeltaMerge/SSTFilesToBlockInputStream.cpp:307\n 0x16d8a44\tDB::DM::SSTFilesToDTFilesOutputStream<std::__1::shared_ptrDB::DM::BoundedSSTFilesToBlockInputStream >::write() [tiflash+23956036]\n \tdbms/src/Storages/DeltaMerge/SSTFilesToDTFilesOutputStream.cpp:200\n 0x6a89c8f\tDB::KVStore::preHandleSSTsToDTFiles(std::__1::shared_ptrDB::Region, DB::SSTViewVec, unsigned long, unsigned long, DB::DM::FileConvertJobType, DB::TMTContext&) [tiflash+111713423]\n \tdbms/src/Storages/Transaction/ApplySnapshot.cpp:360\n 0x6a89364\tDB::KVStore::preHandleSnapshotToFiles(std::__1::shared_ptrDB::Region, DB::SSTViewVec, unsigned long, unsigned long, DB::TMTContext&) [tiflash+111711076]\n \tdbms/src/Storages/Transaction/ApplySnapshot.cpp:275\n 0x6ae4666\tPreHandleSnapshot [tiflash+112084582]\n \tdbms/src/Storages/Transaction/ProxyFFI.cpp:388\n 0x7fedf99fbe28\tengine_store_ffi::$LT$impl$u20$engine_store_ffi…interfaces…root…DB…EngineStoreServerHelper$GT$::pre_handle_snapshot::h14b79dee0dc709dc [libtiflash_proxy.so+17415720]\n 0x7fedf99f3899\tengine_store_ffi::observer::pre_handle_snapshot_impl::ha6024895a135c813 [libtiflash_proxy.so+17381529]\n 0x7fedf99e7236\tyatp::task::future::RawTask$LT$F$GT$::poll::haa9f3b11a91f3b25 [libtiflash_proxy.so+17330742]\n 0x7fedfb7f59b3\t$LT$yatp…task…future…Runner$u20$as$u20$yatp…pool…runner…Runner$GT$::handle::h3ec77eaab16f0540 [libtiflash_proxy.so+48847283]\n 0x7fedfb7e820c\tstd::sys_common::backtrace::__rust_begin_short_backtrace::h2dafe5d145aa6fe4 [libtiflash_proxy.so+48792076]\n 0x7fedfb7e8ccc\tcore::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h8730f42d18399d62 [libtiflash_proxy.so+48794828]\n 0x7fedfaf63375\tstd::sys::unix::thread::thread::new::thread_start::hd2791a9cabec1fda [libtiflash_proxy.so+39859061]\n \t/rustc/96ddd32c4bfb1d78f0cd03eb068b1710a8cebeef/library/std/src/sys/unix/thread.rs:108\n 0x7fedf861c4ca\t [libc.so.6+570570]”] [source=BaseDaemon] [thread_id=22]

我查看了tiflash节点的数据目录,发现没有重启的节点上没有这个表的文件夹
$ ll /db/tidb-data/tiflash-9900/data/
total 0
drwxr-xr-x 2 tidb tidb 6 Jan 6 09:33 system
不断重启的节点有:
$ ll /db/tidb-data/tiflash-9900/data/
total 0
drwxr-xr-x 2 tidb tidb 6 Jan 6 09:33 system
drwxr-xr-x 3 tidb tidb 20 Jan 6 09:39 t_687

集群当前状态:

麻烦在 tiflash 的部署机器上跑这个命令,看看你的 cpu 是否支持 avx2 指令

cat /proc/cpuinfo | grep avx2

把输出的文本结果贴一下

1 个赞

你把一个表设置两个副本试试,看是不是两个节点都有报错,我这正在升级,看能不能复现

我上周也升级了到6.5.0,是正常的,在升级过程会,其实tiflash会自动做这个版本升级,我这里测试500G的tiflash只需要十多分钟就全部转换完毕了,不需要人工干预的。

我这升级完,并没有复现您的问题,您先按这个回复看看是不是cpu不支持avx2指令

把这些节点删除 另外ip加flash 只需要加一个

image
是不支持吧?

应该是不支持

昨天想到这个指令了,但是到了下班点着急回家就忘了回了,今天就有点跑偏了 :crazy_face: :crazy_face: :crazy_face:

删除哪些节点呢?加2个Tiflash也没事吧?我6.1.2版本,相同的配置用着就好好的…

是不支持avx2,tiflash就不能用吗?

TiDB 6.3.0 Release Notes | PingCAP Docs

你的报错中的提示是:非法指令 [“(from thread 26) Received signal Illegal instruction(4).”]

1 个赞

看一下你的 cpu 支持什么指令
cat /proc/cpuinfo | grep flags

cat /proc/cpuinfo |grep flags

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 cx16 pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm cpuid_fault pti tpr_shadow vnmi flexpriority ept vpid tsc_adjust xsaveopt arat umip arch_capabilities