mysqldump 不适用于全文索引?

Posted

技术标签:

【中文标题】mysqldump 不适用于全文索引?【英文标题】:mysqldump Doesn't Work with Full-Text Index? 【发布时间】:2020-02-03 03:55:22 【问题描述】:

我经常使用以下命令通过 ssh 在 AWS RDS 上导出一个 mysql 数据库:

mysqldump -u myUserName -h myDBname.randomcharacters.us-region.rds.amazonaws.com -p myDBname > myDBname.sql

它会创建 10 GB 的 sql 文件,然后我将其压缩并下载到我的开发系统。

最近我通过在 mySQLWorkbench 中运行此代码向该数据库添加了全文索引:

ALTER TABLE myTable ADD FULLTEXT(field1, field2);

自从添加全文索引后,数据库继续运行良好。在访问它时一切正常。但是当我通过mysqldump 导出它时,它会在导出大约 2 GB 的数据后退出,当我尝试在本地开发系统上导入它时,生成的文件会导致我的 sql 客户端崩溃。

这能解释什么?

【问题讨论】:

全文索引的内容既不被mysqldump读取也不被导出——加载dumpfile的服务器负责在加载数据时从头开始构建全文索引.添加此索引的唯一方法是更改​​转储文件中的表定义,这不会导致您描述的问题。 你说 mysqldump “在导出大约 2 GB 的数据后退出” 但 mysqldump 并没有直接退出——如果一切都没有,这必然伴随着来自 mysqldump 的错误消息没有被抓获。那条错误信息是什么?在创建转储文件时指定 --verbose 可能很有用,如果您不知道这一点,您还需要知道 mysqldump 文件是人类可读的,因此像 headtailless 这样的实用程序对于检查它们以获取提示很有用。请告诉我们你看到了什么。 【参考方案1】:

这是一个数据包大小问题。添加--max_allowed_packet=64M 修复它:

mysqldump -u myUserName -h myDBname.randomcharacters.us-region.rds.amazonaws.com -p --max_allowed_packet=64M myDBname > myDBname.sql

【讨论】:

以上是关于mysqldump 不适用于全文索引?的主要内容,如果未能解决你的问题,请参考以下文章

mysql全文索引用于 MATCH() AGAINST 但不用于 =

MySQL进阶实战10,MySQL全文索引

MariaDB10.2.6启用Mroonga存储引擎用于全文索引

Jackrabbit Oak Lucine 索引和 SQL2 查询,用于在 txt 和 pdf 中进行全文搜索

怎么MySql添加全文索引

MySQL 索引