首页 > 数据库 >mysqlfrm读取frm文件获取建表ddl并恢复数据

mysqlfrm读取frm文件获取建表ddl并恢复数据

时间:2023-05-18 09:22:45浏览次数:53  
标签:comment mysqlfrm 建表 ad db frm mysql NULL

环境:

OS:Centos 6

[root@dev-env23 mysql-utilities-1.6.5]# python -V
Python 2.6.6

 

##################################获取建表ddl#########################

1.下载
下载地址:
https://downloads.mysql.com/archives/utilities/
下载的版本为:
mysql-utilities-1.6.5.tar.gz

 

2.解压
[root@dev-env23 soft]# tar -xvf mysql-utilities-1.6.5.tar.gz
[root@dev-env23 soft]# mv mysql-utilities-1.6.5 /opt/

 

3.安装
cd /opt/mysql-utilities-1.6.5
python ./setup.py install --record instfile.log

1) 使用选项 --record instfile.log 记录安装到系统的文件,在卸载时使用(手动删除).
2) 执行 python setup.py help 查看其他选项及帮助信息.
3) 所有命令会默认安装在 /usr/local/ 中.

 

4.通过frm文件获取到建表语句

[root@dev-env23 mysql-utilities-1.6.5]# mysqlfrm --diagnostic /home/mysql/data/db_yeemiao/ad.frm
# WARNING: Cannot generate character set or collation names without the --server option.
# CAUTION: The diagnostic mode is a best-effort parse of the .frm file. As such, it may not identify all of the components of the table correctly. This is especially true for damaged files. It will also not read the default values for the columns and the resulting statement may not be syntactically correct.
# Reading .frm file for /home/mysql/data/db_yeemiao/ad.frm:
# The .frm file is a TABLE.
# CREATE TABLE Statement:

CREATE TABLE `db_yeemiao`.`ad` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT, 
  `article_id` bigint(20) DEFAULT NULL comment '文章id', 
  `ad_name` varchar(400) NOT NULL comment '广告名称', 
  `picture` varchar(600) NOT NULL comment '图片', 
  `link_type` int(11) NOT NULL comment '0:外链,1:文章,2:帖子,3:无跳转', 
  `content_link` varchar(2000) DEFAULT NULL comment '内容链接', 
  `type` int(11) NOT NULL, 
  `status` int(11) NOT NULL comment '是否启用:0-启用,1-禁用 默认启用', 
  `is_del` bit(1) NOT NULL comment '是否删除:0未删除,1删除', 
  `start_time` datetime NOT NULL comment '开始时间', 
  `end_time` datetime NOT NULL comment '结束时间', 
  `sort` int(11) NOT NULL comment '排序权重(越小越靠后)', 
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '创建时间', 
  `modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '修改时间', 
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;

#...done.

 

获取到的表结构在新环境有可能因为字符集原因报如下错误,可以尝试修改索引字段大小解决

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

 

################数据恢复##########################
1.通过上面获取到的建表语句在新服务器上创建表

2.脱离表空间
alter table ad discard tablespace;
执行该命令后,对应的idb文件会自动删除掉

[root@host134 db_ym]# ls -al
total 16
drwx------ 2 mysql mysql 34 May 17 15:13 .
drwxrwxr-x 6 mysql mysql 238 May 17 14:52 ..
-rw-rw---- 1 mysql mysql 8556 May 17 15:12 ad.frm
-rw-rw---- 1 mysql mysql 67 May 17 14:38 db.opt

 

3.将crash服务器的表的idb文件拷贝到新服务器
cp /tmp/ad.ibd /opt/mysql56/data/db_ym/
chown -R mysql:mysql /opt/mysql56/data/db_ym/

4.加入表空间
alter table ad import tablespace;

 

5.验证
select count(1) from ad;

 

标签:comment,mysqlfrm,建表,ad,db,frm,mysql,NULL
From: https://www.cnblogs.com/hxlasky/p/17410900.html

相关文章

  • mysql只有frm和ibd文件下如何恢复(表引擎为innodb)
    环境:OS:Centos7DB:mysql5.6说明:主库已经无法启动,表的引擎为innodb下面操作是在新服务器安装与原库同版本的db下进行 ###################已知表结构的情况######################1.创建同结构的表CREATETABLE`ad`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`......
  • 几条固定数据需要建表?
    在开发中,可能会遇到这样的业务场景:已知有几条固定的数据,需要实现【展示&修改】功能。建表?杀鸡用牛刀缓存?服务器重启,数据就失效了从领域角度而言,这种数据可以视为配置(config),使用者可以选择自己想要的某种配置,同时又可以对这些配置做出一定调整(修改)。谈到配置,不难想出......
  • 如何搭建表白墙网站(LoveWall),Linux搭建网站教程
    用宝塔面板和开源表白墙程序LoveWall搭建一个表白墙网站。LoveWall是一个基于Thinkphp开发的表白墙。特色功能点赞发评论发弹幕多校区分享页涉证、涉H、暴力、违禁物等名词进行检测waitUpdate。下面是搭建教程:一、注册域名域名就是你的网站的网址,比如:blog.zeruns.tech就是我......
  • 权限模型与建表及SQL语句编写
    权限模型RBAC权限模型​RBAC权限模型(Role-BasedAccessControl)即:基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型。 准备工作      菜单表实体类}  建表及SQL语句编......
  • RBAC权限模型、建表及SQL语句编写
    RBAC权限模型RBAC权限模型(Role-BasedAccessControl)即:基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型。建表及SQL语句编写准备工作创建数据库SQL表CREATEDATABASE/*!32312IFNOTEXISTS*/`sg_security`/*!40100DEFAULTCHARACTERSETutf8......
  • 08.hbase创建表
    [root@ecs-0001bin]#hbaseshell查看所有表hbase(main):001:0>listcreate'SAAS:DWS_MCHT_SHOP_PORTRAYS','BASE','DATA'查看表详情desc 'SAAS:DWS_MCHT_SHOP_PORTRAYS'查看所有命名空间hbase(main):008:0>list_namespaceNAMESPACE       ......
  • 建表约束
    NOT NULL 非空  UNIQUE 唯一约束,意味这个值是不可以重复的,也是不可以为空的。。。2种写法:   PRIMARYKEY    主键约束(主关键字),自带非空、唯一、索引    DEFAULT  默认值 给这个一个缺省值,比如默认填入的人的性别为男  如果为给......
  • koa2 中建表方法
    需求,在model层新建商品表一.在model目录下新建goods.model.jsconst{DataTypes}=require('sequelize')constseq=require('../db/seq')constGoods=seq.define('zd_goods',{goods_name:{type:DataTypes.STRING,allo......
  • pg 如何生成创建表sql语句?
    oracle有dbms_metadata.get_ddl;sqlserver可以直接右键;mysql有showcreatetable但pg好像没有直接的方法,网上找到了几种自己创建函数的方法,收集一下。法一:支持生成包含:字段(支持数组类型字段)、约束、索引(支持唯一索引、全类型索引)在内的建表语句。CREATEORREPLACEFUNCTION"public......
  • oracle、达梦数据库、MySQL数据创建表与字段注释
    /**1.oracle注释*//*表本身注释*/commentontable表名is'注释信息';/*字段注释*/commentoncolumn表名.字段名is'注释信息';/*实例如下:*/commentontableUSERis'用户表';commentoncolumnUSER.IDis'主键ID';/**2.MySQL注释*//*表本身注释*/altertable表名co......