searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

xtrabackup8.0.13版本的copy-back恢复后数据库重启失败问题分析

2023-04-03 09:46:49
7
0

现象:

数据库的binlog和data放在同一个目录下,使用xtrabackup的copy-back拷贝回原data目录时发现mysqlbin.index内容发生了变化,导致恢复后重启失败

触发条件:

配置文件存在log-bin配置,以及配置存储路径为data目录。

初步分析:

D:\project\percona-xtrabackup-8.0.13\storage\innobase\xtrabackup\src\backup_copy.cc

xtrabackup执行copy-back时会先通过binlog_file_location::find_binlog找到binlog文件和binlog索引文件信息,并存储到binlog_file_location类型的结构体变量(binlog、target)中,主要信息如下:

binlog结构体变量主要通过遍历备份目录更新以上信息,更新后如下所示

更新target结构体变量时,此处仅取了opt_log_bin(/data2/sf/zgj/data8022/mysqlbin)的目录长度,即r.name=/data2/sf/zgj/data8022/ + .000005,也因此返回了一个奇怪的target.name信息。

在拷贝binlog.index时是将binlog.index_name.c_str()的内容拷贝到target.index_path.c_str()中,该过程完成后的binlog.index正常,但后面一步的fixup binlog index,由于binlog和data处于同一目录下,会执行f_index << target.name.c_str() << std::endl;操作,错误的target.name信息将被写入到target.index_path中。

 

相关提交:

0条评论
0 / 1000
zzzzgj
9文章数
1粉丝数
zzzzgj
9 文章 | 1 粉丝
原创

xtrabackup8.0.13版本的copy-back恢复后数据库重启失败问题分析

2023-04-03 09:46:49
7
0

现象:

数据库的binlog和data放在同一个目录下,使用xtrabackup的copy-back拷贝回原data目录时发现mysqlbin.index内容发生了变化,导致恢复后重启失败

触发条件:

配置文件存在log-bin配置,以及配置存储路径为data目录。

初步分析:

D:\project\percona-xtrabackup-8.0.13\storage\innobase\xtrabackup\src\backup_copy.cc

xtrabackup执行copy-back时会先通过binlog_file_location::find_binlog找到binlog文件和binlog索引文件信息,并存储到binlog_file_location类型的结构体变量(binlog、target)中,主要信息如下:

binlog结构体变量主要通过遍历备份目录更新以上信息,更新后如下所示

更新target结构体变量时,此处仅取了opt_log_bin(/data2/sf/zgj/data8022/mysqlbin)的目录长度,即r.name=/data2/sf/zgj/data8022/ + .000005,也因此返回了一个奇怪的target.name信息。

在拷贝binlog.index时是将binlog.index_name.c_str()的内容拷贝到target.index_path.c_str()中,该过程完成后的binlog.index正常,但后面一步的fixup binlog index,由于binlog和data处于同一目录下,会执行f_index << target.name.c_str() << std::endl;操作,错误的target.name信息将被写入到target.index_path中。

 

相关提交:

文章来自个人专栏
zzz
9 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0