近日,用innobackupex重新搭建从库时报Unable to open undo tablespace 'undologundo001'错误
下面是解决的过程:
启动从库时报错如下
2025-01-16T14:43:16.367875+08:00 0 [ERROR] InnoDB: Unable to open undo tablespace 'undolog/undo001'.
2025-01-16T14:43:16.367904+08:00 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2025-01-16T14:43:16.969579+08:00 0 [ERROR] Plugin 'InnoDB' init function returned error.
2025-01-16T14:43:16.969592+08:00 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2025-01-16T14:43:16.969602+08:00 0 [ERROR] Failed to initialize builtin plugins.
2025-01-16T14:43:16.969605+08:00 0 [ERROR] Aborting
--查看备库确实不存在undo表空间,且主库存在的。
--查看--apply-log恢复日志存在恢复表空间
-rw-r----- 1 mysql mysql 7295277 Jan 10 06:06 recover2_3309.log
[mysql@logdb04 datadump]$ cat recover3309.log|grep undo
InnoDB: Opened 95 undo tablespaces
InnoDB: 95 undo tablespaces made active
InnoDB: Opened 95 undo tablespaces
InnoDB: 95 undo tablespaces made active
--查看--copy-back把undo文件恢复到备份文件目录下了
[mysql@logdb04 datadump]$ cat recover2_3309.log|grep undo
250108 15:36:10 [01] Copying undo001 to undolog/undo001
250108 15:36:21 [01] Copying undo002 to undolog/undo002
250108 15:36:27 [01] Copying undo003 to undolog/undo003
250108 15:36:45 [01] Copying undo004 to undolog/undo004
250108 15:36:47 [01] Copying undo005 to undolog/undo005
250108 15:36:47 [01] Copying undo006 to undolog/undo006
250108 15:36:47 [01] Copying undo007 to undolog/undo007
250108 15:36:47 [01] Copying undo008 to undolog/undo008
250108 15:36:48 [01] Copying undo009 to undolog/undo009
250108 15:36:48 [01] Copying undo010 to undolog/undo010
250108 15:36:48 [01] Copying undo011 to undolog/undo011
250108 15:36:48 [01] Copying undo012 to undolog/undo012
250108 15:36:48 [01] Copying undo013 to undolog/undo013
250108 15:36:48 [01] Copying undo014 to undolog/undo014
250108 15:36:48 [01] Copying undo015 to undolog/undo015
250108 15:36:48 [01] Copying undo016 to undolog/undo016
250108 15:36:49 [01] Copying undo017 to undolog/undo017
250108 15:36:49 [01] Copying undo018 to undolog/undo018
250108 15:36:49 [01] Copying undo019 to undolog/undo019
250108 15:36:49 [01] Copying undo020 to undolog/undo020
250108 15:36:49 [01] Copying undo021 to undolog/undo021
250108 15:36:49 [01] Copying undo022 to undolog/undo022
250108 15:36:49 [01] Copying undo023 to undolog/undo023
250108 15:36:50 [01] Copying undo024 to undolog/undo024
250108 15:36:50 [01] Copying undo025 to undolog/undo025
250108 15:36:50 [01] Copying undo026 to undolog/undo026
250108 15:36:50 [01] Copying undo027 to undolog/undo027
250108 15:36:50 [01] Copying undo028 to undolog/undo028
250108 15:36:51 [01] Copying undo029 to undolog/undo029
250108 15:39:24 [01] Copying undo093 to undolog/undo093
250108 15:39:24 [01] Copying undo094 to undolog/undo094
250108 15:39:24 [01] Copying undo095 to undolog/undo095
--查看配置文件没有指定undo表空间路径
[mysql@logdb04 data]$ cat /data/mysql3309/config/my_3309.cnf|grep undo
innodb_max_undo_log_size = 4G
innodb_undo_directory = undolog
innodb_undo_tablespaces = 95
innodb_undo_logs = 128
--通过查询备份文件目录发现多了个undo目录,但为空。说明undo空间没有真正恢复。
后面修改从库innodb_undo_directory参数指定具体路径后再次拉起恢复从库,需删除掉data目录。先apply-log,后--copy-back
[mysql@logdb04 data]$ cat /data/mysql3309/config/my_3309.cnf|grep undo
innodb_max_undo_log_size = 4G
innodb_undo_directory = /data/mysql3309/data/undolog
innodb_undo_tablespaces = 95
innodb_undo_logs = 128
从库能正常起来,继续进行搭建主从同步。