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 文件是人类可读的,因此像 head
和 tail
和 less
这样的实用程序对于检查它们以获取提示很有用。请告诉我们你看到了什么。
【参考方案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 但不用于 =
MariaDB10.2.6启用Mroonga存储引擎用于全文索引