首页 > 数据库 >MYSQL 表空间恢复

MYSQL 表空间恢复

时间:2023-11-07 11:11:05浏览次数:47  
标签:恢复 MYSQL 目录 test mysql 空间 data bak schema

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左右恢复时间

 

标签:恢复,MYSQL,目录,test,mysql,空间,data,bak,schema
From: https://www.cnblogs.com/hanwei666/p/17814583.html

相关文章

  • Mysql一些操作笔记
    1.如何在MySQL中表的时间格式字段加上指定天数?UPDATE表名SETdate1=date1+interval4dayWHERE条件;其中,4表示需要增加的天数,条件是MySQL的where子句,根据实际的表结构,生成适当的筛选条件。此外,也可以使用date_add函数在MySQL中添加指定天数,比如,要增加6天:UPDAT......
  • mysql binlog常用脚本(解析与反解析)
     解析binlog方法1:mysqlbinlogmysqlbinlog--no-defaults--base64-output=decode-rows-vv--database=dboop--start-datetime='2020-10-1100:00:00'--stop-datetime='2020-10-1115:00:00'mysql-bin.000075>75.sql 常用参数database:只列......
  • 如何解决MySQL主从复制延时问题
    MySQL主从复制是面试中不可避开的重要一环,里面的知识点虽然基础,但是能回答全的同学不多,今天我们再来老生常谈一下。本文全文内容如下。  1.MySQL主从1.1什么是MySQL主从?MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL......
  • mysql blob和text的区别
    一:主要区别TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据。目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用标签引用,这样的博客就可以使用TEXT类型。而BLOB就可以把图片换算成二进制保存到数据库中。二、类型区......
  • [翻译]——How the MySQL Optimizer Calculates the Cost of a Query (Doc ID 1327497
    本文是对这篇文章HowtheMySQLOptimizerCalculatestheCostofaQuery(DocID1327497.1)的翻译,翻译如有不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢!适用于:MySQL4.0及后续更高的版本本文档中的内容适用于任何平台。目标了解MySQL优化......
  • Debug - MySQL - Err 1062 duplicate entry xxxx for key xxx
    可能原因1脏数据存在 可能原因2当你手动刷sql修改表结构时,可能这张表正有写库操作。一边写库一边修改表结构,就会出现这种错误。。。原因未知,猜测和锁表有关系 两次错误提示:详细的数据是不一样的....而且日期是今天的,说明不是脏数据  等待写库程序结束,再刷表就没......
  • mysql 使用ON DUPLICATE KEY update实现插入或更新操作
    创建一个表CREATETABLE`userinfo`(`UserID`int(11)NOTNULL,`UserName`varchar(45)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULTNULL,PRIMARYKEY(`UserID`))ENGINE=InnoDBDEFAULTCHARSET=utf8;想要实现,没有数据插入新数据,有数据更新数据首先......
  • 2023第十届国际地下空间开发大会
    地下空间的开发利用是全球公认的城市可持续发展的解决方案之一。党的二十大报告强调,坚持人民城市人民建,人民城市为人民,提高城市规划、建设、治理水平,加快转变超大特大城市发展方式,建设人与自然和谐相处、共生共荣的宜居城市,为未来城市发展指明了方向。地下空间作为城市规划建设的重......
  • SQLserver、MYSQL、Oracle复制表结构和数据语句
    1.SQLserver语法select*into新表名from旧表名;2.mysql语法CREATETABLE新表名SELECT*FROM旧表;Oracle语法CREATETABLE新表ASSELECT*FROM旧表;......
  • MySQL学习(11)使用EXPLAN查看执行计划
    前言 MySQL查询优化起生成的执行计划是什么,可以通过EXPLAIN命令查看。执行计划在SELECT、DELETE、INSERT、REPLACE以及UPDATE语句前面加上EXPLAIN,可以通过记录的形式输出这条语句的执行计划。EXPLAINSELECT*FROMsingle_table; 列名描述id每个SELECT关键字......