windows 断电后导致mysql8启动失败问题

大佬们,windows 断电后导致mysql8老是启动失败。

这是mysql启动失败日志

information that should help you find out what is causing the crash.
2024-06-27T10:33:24.539500Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2024-06-27T10:33:24.539720Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
2024-06-27T10:33:24.539759Z 0 [System] [MY-010116] [Server] G:\mysql\mysql-8.0.30-winx64\bin\mysqld (mysqld 8.0.30) starting as process 18200
2024-06-27T10:33:24.682947Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-06-27T10:33:25.360891Z 0 [ERROR] [MY-011971] [InnoDB] Tablespace 'innodb_undo_002' Page [page id: space=4294967278, page number=169] log sequence number 37467709810 is in the future! Current system log sequence number 37467708578.
2024-06-27T10:33:25.362333Z 0 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2024-06-27T10:33:25.424687Z 0 [ERROR] [MY-012153] [InnoDB] Trying to access page number 4294967295 in space 4294967278, space name innodb_undo_002, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server.
2024-06-27T10:33:25.426857Z 0 [ERROR] [MY-012154] [InnoDB] Server exits.
2024-06-27T10:33:25.427324Z 0 [ERROR] [MY-013183] [InnoDB] Assertion failure: fil0fil.cc:7531 thread 2344
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
10:33:25 UTC - mysqld got exception 0x16 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
Thread pointer: 0x0
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...
7ff6524b0858    mysqld.exe!my_print_stacktrace()[stacktrace.cc:429]
7ff65164e92b    mysqld.exe!print_fatal_signal()[signal_handler.cc:130]
7ff65164e6f3    mysqld.exe!my_server_abort()[signal_handler.cc:241]
7ff6524947fa    mysqld.exe!my_abort()[my_init.cc:263]
7ff6526dca99    mysqld.exe!ut_dbg_assertion_failed()[ut0dbg.cc:99]
7ff6525ff996    mysqld.exe!fil_report_invalid_page_access_low()[fil0fil.cc:7531]
7ff6525f900b    mysqld.exe!Fil_shard::do_io()[fil0fil.cc:7747]
7ff6525fcb1e    mysqld.exe!fil_io()[fil0fil.cc:7994]
7ff652826954    mysqld.exe!buf_read_page_low()[buf0rea.cc:125]
7ff6528266b7    mysqld.exe!buf_read_page()[buf0rea.cc:290]
7ff65272154a    mysqld.exe!Buf_fetch<Buf_fetch_normal>::read_page()[buf0buf.cc:3889]
7ff65271f7f2    mysqld.exe!Buf_fetch_normal::get()[buf0buf.cc:3513]
7ff6527222dd    mysqld.exe!Buf_fetch<Buf_fetch_normal>::single_page()[buf0buf.cc:4084]
7ff652715f24    mysqld.exe!buf_page_get_gen()[buf0buf.cc:4279]
7ff652704763    mysqld.exe!trx_rseg_physical_initialize()[trx0rseg.cc:280]
7ff652703788    mysqld.exe!trx_rseg_init_thread()[trx0rseg.cc:360]
7ff652700487    mysqld.exe!Detached_thread::operator()<void (__cdecl*)(void *,unsigned __int64),void *,unsigned __int64>()[os0thread-create.h:196]
7ff652700cfd    mysqld.exe!std::thread::_Invoke<std::tuple<Detached_thread,void (__cdecl*)(void *,unsigned __int64),void *,unsigned __int64>,0,1,2,3>()[thread:56]
7ffc3cf8cde0    ucrtbase.dll!_o__realloc_base()
7ffc3de78364    KERNEL32.DLL!BaseThreadInitThunk()
7ffc40647091    ntdll.dll!RtlUserThreadStart()
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.

目前我处理方式是将innodb-force-recovery=5,一次1-6尝试,一直到5后才可以启动成功,但是数据只能读,然后导出数据,重新初始化数据库,然后导入数据。

请问还有其他方式避免数据库断电后启动异常吗?有没有啥参数之类的。这是第二次了 :sweat:

还有这回事?啊?

遇到好几次了,但是有的机子很少出现这种问题。