展开

关键词

mysql快速大SQL

1.进mysql mysql -u root -p 2.创建 CREATE DATABASE 名; 3.设置参 set sql_log_bin=OFF; //关闭日志 set autocommit =0; //关闭autocommit自动提交模式 4.使用 use 名; 5.开启事务 START TRANSACTION; 6.引SQL source 的路径; 7.成功后事务提交

43230

技术分享 | 只有.frm和.ibd时如何批量恢复InnoDB的表

---- 背景 很多时候因为 MySQL 不能启动而造成无法访问,但应用的通常没有丢失,只是系统表空间等其它损坏了,或者遇到 MySQL 的 bug。 这个时候如果没有备份,很多人就以为丢失了,但实际上大部分时候还是有救的。对于 MyISAM 引擎的表空间,直接把对应的拷贝到一个新的就行了,就可以恢复了。 旧的 将新建的没有包括的 .ibd 抛弃 root@username: /var/ lib/mysql/my_db # ll *.ibd|wc 124 1116 7941 root 然后把旧的有的 .ibd 拷贝到这个 my_db 目录下面,别忘了把属主改过来:chown mysql. *,再把这些 import 到中。 $a import TABLESPACE" ; done 完成后检查表 使用 mysqlcheck 对 my_db 下的所有表进行检查: root@username: /var/ lib/mysql

37710
  • 广告
    关闭

    腾讯云618采购季来袭!

    一键领取预热专享618元代金券,1核1G云原生数据库TDSQL-C低至4.9元!云产品首单低0.8折起,企业用户购买域名1元起…

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL一次修改表字段故障修复演示

    二、处理过程 2.1 查看当前的故障 进MySQL datadir目录发现确实存在一个名叫#sql-ib334的。 过程当中,也咨询了我同学,说这种是临时表,系统默认会回收,但由于系统出现了问题,致.frm 丢失了,所以通过MySQL查看此还是会存在。 2.2 发现问题所在 请教高手后,查看目录后查出了问题所在:我少了一个sql-ib334.frm,解决办法是通过重新创建一个表来进行恢复。 .frm /data/data/mysql_3306/langyage/ 注意权限,因为我这个权限都是一样的,所以不用修改 如果都可以了就可以执行下面的命令: mysql> DROP TABLE 通过这次故障让我知道,不要轻易直接在大表上进行字段修改,因为很可能会造成异常,而应该要深了解INFORMATION_SCHEMA 这里面的东西,以便以后再发生类似的问题时,可以更好地处理。

    25130

    MySQL一次修改表字段故障修复演示

    进行操作,异常,随后再执行这个SQL语句一直报错,报错提示如下: ? 二、处理过程 2.1 查看当前的故障 进MySQL datadir目录发现确实存在一个名叫#sql-ib334的。 过程当中,也咨询了我同学,说这种是临时表,系统默认会回收,但由于系统出现了问题,致.frm 丢失了,所以通过MySQL查看此还是会存在。 .frm /data/data/mysql_3306/langyage/ 注意权限,因为我这个权限都是一样的,所以不用修改 如果都可以了就可以执行下面的命令: mysql> DROP TABLE 通过这次故障让我知道,不要轻易直接在大表上进行字段修改,因为很可能会造成异常,而应该要深了解INFORMATION_SCHEMA 这里面的东西,以便以后再发生类似的问题时,可以更好地处理。

    26220

    MySQL中相关说明

    VARCHAR(20)) ENGINE=InnoDB; 存储位置 frm保存在MySQL实例的data夹下的夹下(datadir/database_name) 可以通过下面的命令分别查看 `t_user` .ibd .ibd是InnoDB表的,最初InnoDB表的是保存在系统表空间中的,后来支持了每个表一个单独的存储,这个可以通过参innodb_file_per_table .MYD MyISAM名称为表名.MYD,位置在MySQL实例的data夹下的夹下。 .MYI MyISAM索引名称为表名.MYI,位置在MySQL实例的data夹下的夹下。 db.opt ,保存的默认字符集编码以及排序规则 位置同.frm为:datadir/database_name 示例如下: default-character-set=latin1

    36760

    使用Shell恢复MySQL .frm和.ibd

    这是学习笔记的第 1901篇MySQL里面对于表的默认的配置是每个表都有独立的.ibd和.frm对应,对于恢复来说,会提供很大的便利。 其中.frm存储了表结构定义信息,而.ibd存储了真正的。 如果某种特殊情况下,你只有.frm和.ibd,能不能单独恢复出来呢,答案是肯定的,当然这个过程不是一个命令搞定,而是需要一些方法和技巧。 所以在恢复.frm和.ibd的时候,难点在于如何解析得到建表的DDL语句。 在这里我们要做个小把戏,需要预创建一个同名的表,然后通过交换frm来变相得到DDL语句。 这个脚本为了支撑后续的灵活性,我是单独创建了一个test_recover,可以作为你的一个专用恢复,可以在上面做大量的恢复测试,来充分验证方案的可行性。

    97220

    故障分析 | mysql 5.6 升级到 8.0 失败一例处理

    2.升级过程 因为量比较大,采用逻辑方式升级将会非常慢,不推荐,故采取 In-Place 方式升级,根官方档提供的升级路径,需要先从 5.6 升级到 5.7 ,然后再升级到 8.0 当前环境 zabbix 目录下并不存在 #sql-ib104-715696445.ibd ,只有一个 #sql- 开头的 frm [root@GZ-DB-6CU552YR4V zabbix / 表空间,这一步也比较费时,因为需要修改 ibd 中页的 space id 和字典 space id 一致等操作 alter table xxxxxx import tablespace ; 表空间时,需要字典定义的 row format 和 ibd 中记录的 row format 一致,否则将报错: ERROR 1808 (HY000): Schema mismatch 通过 alter table xxxxxx row_format=compact 修改行格式,第5步 mv 过来的 ibd 会被删除,丢失,故要先 mv 走 ibd 再修改 row format

    21520

    语言小知识-MySQL引擎

    使用 InnoDB 引擎创建表,会生成 frm 和 idb frm 中存储表的定义,idb 中存储表的和索引。 ? 使用 MyISAM 引擎创建表,会生成 frm 、MYD和MYIfrm 中存储表的定义,MYD 中存储表的,MYI中存储表的索引。 ? 使用 MEG_MyISAM 引擎创建表,会生成 frm 和 MRG frm 中存储表的定义,MEG 存储表的。 CSV 引擎: 使用 CSV 引擎创建表,会生成 frm ,CSV 和CSMfrm 中存储表的定义,CSV 中存储表的,CSM 中存储表的元信息(如表现在的状态,表中的量 使用 BLACKHOME 引擎创建表,只会生成 frm frm 中存储表的定义,因为写任何都不会保存,所以也就没有存储表

    29640

    记一次MySQL恢复

    1 恢复步骤概要 备份frm、ibd 如果mysql版本发生变化,安装回原本的mysql版本 创建和原本名一致新,字符集都要保持一样 通过frm获取到原先的表结构,通过的得到的表结构创建一个和原先结构一样的空表 /dbsake frmdump [frm-file-path] #将所有读取结果输中 ./dbsake frmdump [frm-file-path] > <名> 例如: . /dbsake frmdump student.frm teacher.frm > school.txt 恢复表结构 中存放的是frm对应表结构的sql,直接复制出来运行就行了,此时中所有的结构都恢复了 DISCARD TABLESPACE; ALTER TABLE teacher DISCARD TABLESPACE; 6)拷贝原本的ibd,到新的中 确定新存放位置 在mysql中执行命令 show variables like 'datadir'; 进对应夹中,会有一个和需要恢复的名完全一样的夹,进夹 将ibd复制过来 cp命令直接复制过来就行了 7)命令恢复表空间

    6520

    MySQL备份.ibd、.frm、.MYD、.MYI的恢复教程

    MySQL 是具有持久化能力的。也就是说它的所有,其实最终都是存储在中的。如果你用的是 MyIsAM,则一张表有 3 个。 ? 进到我的 /usr/local/var/mysql/ 目录后,可以看到我的 xttblog 和 test 目录。 ? 根列表中的后缀名都可以判断出,我使用的是 InnoDB 存储引擎。 里面插一些测试,包含建立的索引等。然后,我们将 test_2019.ibd 和 test_2019.frm 两个复制到本地的其他目录。 直接复制表进行替换。结果就会致上面的这个错误。 tail -n +12 表示跳过开头的前 12 行。因为前 12 行都是注释。 最后,我要提示的一点是,注意的版本。如果版本不一致,也有可能致恢复失败!

    81420

    利用frm和ibd恢复表

    // 利用frm和ibd恢复表 // frm和ibd简介 在MySQL中,如果我们使用了默认的存储引擎innodb创建一张表,那么在夹下面就会出现表名.frm和表名.ibd ,而frm是innodb的表结构,mysiam存储引擎的表中,frm是表结构,MYI是索引,而MYD,从这里也可以看出,innodb存储引擎的索引和是在一起的,而Myisam 考虑这样一种需求,需要快速恢复一个表中的,而这个表所在的量非常大,恢复起来可能耗费的时间也比较长,那么全恢复肯定不是最佳的选择。那这种情况下怎么办呢? 我们可以使用frm盒ibd来对进行恢复。下面我们分析分析这个过程。 ? frm恢复表结构 当然,表结构需要使用frm来恢复。 m 4、重新创建同名表,保证字段量为m,与备份表保持一致,然后重新拷贝备份的frm到对应目录 5、修改实例的配置中的参innodb_force_recovery=6,然后重启,就可以看到对应的表结构创建语句

    3.5K20

    MyISAM引擎表和索引被删除处理

    海外有一台服务器受到攻击,上面有自建的mysql,要把备份下来,要到地址账号密码登录上去看了一下mysql版本是5.1的 mysql> select version(); +-------- mysql> select * from dr_app; ERROR 1286 (42000): Unknown table engine 'InnoDB' mysql> 到后台目录查看表 root [2015-02-15 10:53] draw_action_log.MYI 发现dr_app表的MYD和MYI被删除了 被删除了这台服务的mysql也没有备份(几年前的),领说被删除的只需要备份表结构就可以了 进一步发现被删除的表有几百个,需要把这些被删除的表找出来,然后通过frm恢复表结构 进到目录下取表名,先把进行分组计,正常情况下表名对应三个,我们只需要找出表名对应的只有1个( ,按照这种方式修复其他表就可以了 最后:表的是丢失了,所以一定要备份,备份大于一切,进行和服务器的安全加固很重要

    14631

    OracleDMP

    Oracle保存时一般以DMP的形式进行保存 本博客记录,DMP 先打开CMD sqlplus /nolog 以sysdba连接 conn /as sysdba 这里创建表空间,因为表空间进行存储的话 TABLESPACE DATA01 TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON DATA01 授权 grant connect,dba to job; 复制dmp到 oracle安装目录里的app\admin\orce\dpdump里,然后用以下代码dmp,要顺便logfile的话,加上logfile=名 impdp job/job@orcl schemas

    2K30

    第47问:Table definition cache 有什么作用

    definition cache (之后我们简称为 TDC),TDC 是全局级别的表定义缓存 本期我们就来介绍一下 table definition cache 的作用 实验 我们的实验方法与 第12问 相同 构造一个 ,我们先需要生成一个脚本: 我们从 information_schema 中,读取表名,并拼出相关的 SQL 现在就可以执行脚本了,我们将刚才生成的 SQL 通过管道符 MySQL client :MySQL 不再反复读取 frm 这就是 TDC 的作用:在全局级别建立一个缓存,用于减少读取表定义的成本。 如果我们在MySQL 8.0中,重复以上实验,会发现 MySQL 也不再读取 frm 。 这是因为 MySQL 8.0 引了 Data Dictionary ,将表定义放在了表中,不再需要访问 frm

    15320

    MySQL如何删除#sql开头的临时表

    例如,在对一张表(大表)添加索引时中途中断、磁盘不足致异常或正在添加索引时实例被kill等等情况所致。 处理方法 3.1 同时存在.frm 和.ibd名称相同的 如果 #sql-*.ibd 和 #sql-*.frm两个都存在目录里的话,可以直接drop table。 5.1中引名安全编码。 的方式,即权限和原权限一致,属主及group均为mysql,因此可以直接在里读取删除,如果权限不对,必须先修改权限。 3.3 修改frm名与ibd名一致 上一步中删除ibd时,其中一个frm也自动删除了。为此,尝试通过修改frm名和ibd名一致的方式处理。

    43420

    MySQL 如何使用 Navicat 出和 *.sql

    二、运行( SQL 2.1、新建 2.2、运行 SQL 2.3、查看运行SQL界面 2.4、查看 SQL 运行(为什么我的表了没有?) 对于做一些个人辅助软,选择 MySQL 是个明智的选择,有一个好的工具更是事半功倍。下面我将向大家介绍如何使用 Navicat Premium 出和 *.sql 。 ? ---- 一、转储(出) SQL 说明:转储即出,运行即 SQL ,以下不另作说明。 二、运行( SQL 为了演示方便,我先去我的 Navicat Premium 将上面演示出的删掉。 ? ---- 总结 本我们掌握了 MySQL 如何使用 Navicat 出和 *.sql ,其余的 IDE 操作都是类似的。

    2.3K31

    innodb实例损坏情况下恢复及相关工具的开发

    案例描述 某门户mysql innodb实例损坏,服务无法启动,使用系统上的frm及bid恢复内的业务。 相关知识点 Mysql innodb将实例的基础字典信息存储在data目录下的ibdata1以及mysql实例中,可以将其理解为oracle的system表空间以及字典,如果损坏实例将无法启动 在mysql实例无法启动的情况下使用这两个可以恢复内的业务。 恢复过程中需要获得每个表的字段个和每个表空间的table id(5.5版本),其中字段个记录在frm中。 1、分析frm格式获得表字段个 分析mysql源代码中位于table.cc中的open_binary_frm函获得frm中记录字段的位置: ? 4、使用原frm、ibd覆盖目标同名 停止目标实例服务,将需要恢复的原内的frm、ibd覆盖目标实例的同名,并import表空间: ?

    60080

    卧槽,安装完MySQL竟然提示表不存在!!

    (2)面这一部操作完成后,停止,并进所在目录,删除表面5个表所对应的idb,如下所示: [binghe@localhost] /data/mysqldata3/mydata/ slave_worker_info.ibd [binghe@localhost] /data/mysqldata3/mydata/mysql]rm -f *.ibd (3) 重新启动,进mysql,重建上面被删除的表结构:的建设表脚本在mysql的安装目录的share目录下,我的mysql的安装路径为/usr/test/mysql binghe@localhost : (1)登录后,删除5张表,并重新脚本 use mysql; drop table slave_master_info; drop table slave_relay_log_info; drop /share/mysql_system_tables.sql; (2)重新启动 注:这一步是必须的,否则无法正常配置双主架构。

    29150

    MySQL

    目录 ---- 目录 和表结构 只出表结构 首先建空 ---- 和表结构: 格式: mysqldump -u用户名 - p密码 名 > 名.sql 举例: /usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql 敲回车后会提示输密码 只出表结构 注:/usr/local/mysql/bin/ —> mysql的data目录 首先建空 mysql>create database abc; 方法一: 选择 mysql>use abc; 设置编码 mysql>set names utf8; (注意sql的路径) mysql>source /home/abc/abc.sql; 方法二: mysql -u用户名 -p密码 名 < 名.sql mysql -uabc_f -p abc < abc.sql

    59620

    相关产品

    • 云数据库 MySQL

      云数据库 MySQL

      腾讯云数据库MySQL是一种高性能、高可靠、高安全、可灵活伸缩的数据库托管服务,其不仅经济实惠,而且提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,为您简化 IT 运维工作,让您能更加专注于业务发展。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券