GreatSQL社区

搜索

[已解决] 请问:备份表结构恢复时的问题

906 8 2023-3-9 13:04
本帖最后由 shynodes 于 2023-3-9 14:08 编辑

1、使用mysqldump备份表结构,可以正常恢复

2、使用mysqlfrm工具读取.frm文件获取的表结构文件,在恢复时,报了索引超长的错误
mysqlfrm命令:
mysqlfrm --diagnostic /app/mysql/data/db1/>createtb.sql

ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
Query OK, 0 rows affected (0.01 sec)




请问:这是什么原因呢?谢谢
(表数量少的话,可以手动更改建表语句,多的话比较麻烦,求指教)


全部回复(8)
lizibin 2023-3-9 14:36:42
mysqldump备份有逻辑可读性很强的SQL建表语句,你直接分析frm文件是为了测试?
shynodes 2023-3-9 15:07:51
lizibin 发表于 2023-3-9 14:36
mysqldump备份有逻辑可读性很强的SQL建表语句,你直接分析frm文件是为了测试? ...

有需求,从全量物理备份中恢复单库,库里表数据还挺多,而且备份数据中表信息,可能和现在库中表信息不一致,比如新增一些表。
如果不全量恢复,只能从.frm文件中解析建表语句。
但测试恢复过程出现了问题。
lizibin 2023-3-9 15:31:58
如果备份文件的表结构和生产的表结构存在不一致,何不直接show create table tablename
查看生产表结构,直接分析物理文件是不得已的做法。
shynodes 2023-3-9 15:44:44
lizibin 发表于 2023-3-9 15:31
如果备份文件的表结构和生产的表结构存在不一致,何不直接show create table tablename
查看生产表结构, ...

表的数量,三千个
yejr 2023-3-9 21:05:25
先贴个表DDL看看
shynodes 2023-3-10 10:14:33
yejr 发表于 2023-3-9 21:05
先贴个表DDL看看

CREATE TABLE `DB`.`TABLE2` (
  `api_id` varchar(765) NOT NULL,
  `host_svr` varchar(765) DEFAULT NULL,
  `api_status` varchar(765) DEFAULT NULL,
  `api_ver` varchar(765) DEFAULT NULL,
  `branch_no` varchar(765) DEFAULT NULL,
  `company_id` varchar(765) DEFAULT NULL,
  `create_datetime` datetime DEFAULT NULL,
  `customized_uri` varchar(765) DEFAULT NULL,
  `expose_t2_switch` varchar(765) DEFAULT NULL,
  `function_id` varchar(765) DEFAULT NULL,
  `group_name` varchar(765) DEFAULT NULL,
  `location_index` int(11) DEFAULT NULL,
  `method` varchar(765) DEFAULT NULL,
  `modify_time` datetime DEFAULT NULL,
  `open_api_desc` varchar(765) DEFAULT NULL,
  `api_partition` varchar(765) DEFAULT NULL,
  `protocol_type` varchar(765) DEFAULT NULL,
  `record_status` varchar(765) DEFAULT NULL,
  `restful_uri` varchar(765) DEFAULT NULL,
  `service_name` varchar(765) DEFAULT NULL,
  `sub_system_no` varchar(765) DEFAULT NULL,
  `system_no` varchar(765) DEFAULT NULL,
  `t2_router` varchar(765) DEFAULT NULL,
  `t2_status` int(11) DEFAULT NULL,
  `api_user_demand_status` varchar(765) DEFAULT NULL,
  `t2_user_demand_status` varchar(765) DEFAULT NULL,
PRIMARY KEY `PRIMARY` (`api_id`),
UNIQUE KEY `UK_labu0l6f7t09b9k5qpaucbg91` (`restful_uri`)
) ENGINE=InnoDB;

----
shynodes 2023-3-10 10:19:08
shynodes 发表于 2023-3-10 10:14
CREATE TABLE `DB`.`TABLE2` (
  `api_id` varchar(765) NOT NULL,
  `host_svr` varchar(765) DEFAULT N ...

这个语句是mysqlfrm获取到的SQL,在库中查询的是varchar(255),表字符集是UTF8。
yejr 2023-3-10 13:51:38
shynodes 发表于 2023-3-10 10:19
这个语句是mysqlfrm获取到的SQL,在库中查询的是varchar(255),表字符集是UTF8。 ...

如果知道有固定规律,那就照规律批量处理就好了
shynodes

4

主题

0

博客

21

贡献

新手上路

Rank: 1

积分
36

助人为乐(铜)

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-22 05:00 , Processed in 0.022507 second(s), 18 queries , Redis On.
快速回复 返回顶部 返回列表