MYSQL 表空间恢复

由于ibdata1文件小心被删除,数据库数据看到

具体思路,重建数据,移动出问题的数据上的idb文件进行恢复。前提表没有问题,必须要有原始的建表语句,由于mysql的自带数据没有问题,就不需要进行恢复

原始建库建表语句(只要表结构)可以从其他节点复制过来(如mysql slave节点)

1.复制损坏的数据到新的节点(如果在源节点,请确保数据目录和磁盘磁盘空间足够 )

2.移动第1步复制过来的除mysql、performance_schema、sys、information_schema目录以外的其他目录到备份目录。

#复制过来的目录
MYSQL_DIR=/data/mysql-test/mysql
#备份的目录
S_DIR=/data/mysql-test/bak
mkdir -p ${S_DIR}
mkdir -p /data/mysql-test/finish/
#移动除mysql、performance_schema、sys、information_schema目录以外的其他目录到备份目录
ls -l ${MYSQL_DIR}|grep ^d|grep -vE "mysql|performance_schema|sys|information_schema"|awk '{print $NF}'|xargs -I {} mv {} /data/mysql-test/bak

3.启动mysql docker

docker run -d --network=host -v /data/mysql-test/mysql:/var/lib/mysql 192.168.188.64:5000/mysql5.7.31
#下面是使用nerdctl启动
#nerdctl run -d --network=host -v /data/mysql-test/mysql:/var/lib/mysql 192.168.188.64:5000/mysql5.7.31

4.导入准备好的

使用mysql客户端上执行
source all.sql

5.分离表结构,复制源文件,释放表空间

#复制container中mysql命令到主机上
nerdctl cp e4c5982b91d1:/usr/bin/mysql /usr/bin/mysql
#获取数据库
DATABASES=$(ls -l /data/mysql-test/bak|grep ^d|awk '{print $NF}')
for in $DATABASES;do
    echo database:${i}
    #获取表
    Tables=$(ls /data/mysql-test/bak/$i|grep \.ibd)
    for in $Tables;do
        Table_name=$(echo $j|awk -F ".ibd" '{print $1}')
        #分离表空间
        mysql -uroot -pPassword -S /data/mysql-test/mysql/mysql.sock -e "alter table ${i}.${Table_name} discard tablespace;"
        echo "/data/mysql-test/mysql/$i/$j"
        #复制文件到数据
        cp /data/mysql-test/bak/$i/$j /data/mysql-test/mysql/$i/$j
        #修正文件权限
        chown 999:999 /data/mysql-test/mysql/$i/$j
        #释放表空间
        mysql -uroot -pPassword -S /data/mysql-test/mysql/mysql.sock -e "alter table ${i}.${Table_name} import tablespace;"
    done
    mv /data/mysql-test/bak/$i /data/mysql-test/finish/
done

 

 

56g左右恢复时间

 

posted @   hanwei666  阅读(159)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
欢迎这位客官来到《MYSQL 表空间恢复 - hanwei666 - 博客园》
点击右上角即可分享
微信分享提示