MySQLDump 导出部分数据

f30a202d97fcb737a80ade314ebdb8e0

MySQLDump 是非常常用的数据库导出工具。不过,大部分时候,我们使用的都是 mysqldump -uuser -p database_name > database_name.sql

这样可以提供数据导出功能,但导出的数据会是全表数据,我们在导出数据的时候,如果希望导出部分数据,就需要借助于其中的 --where Flag,来实现导出部分数据.

此外,由于导出的数据是部分数据,因此,就涉及到需要指定导出时的表名,才能实现导出相应的数据,需要满足如下格式

mysqldump [OPTIONS] database [tables]
Code language: CSS (css)

举个例子来说,假设我们需要导出数据库 wordpress 的 wp-options 表中的 ID 小于 20 的数据,则需要执行如下命令:

mysqldump --where="id < 20" wordpress wp-options
Code language: JavaScript (javascript)

上述命令就实现了从数据库中导出符合特定要求的数据。

MySQL 遭遇 Out of sort memory, consider increasing server sort buffer size 怎么办?

MacBook Pro with images of computer language codes

当你将线上数据拖到本地进行执行的时候,可能会出现 mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size 的错误,出现这样的错误,是因为你的 MySQL 的 SortBufferSize 太小导致的。你可以在 my.cnf 中添加配置。

sort_buffer_size=3M

参考文献

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sort_buffer_size

如何在服务器和本地互传 SQL?

MacBook Pro with images of computer language codes

在本地开发模拟线上数据的时候,难免需要从线上服务器上拉取数据到本地进行导入。

这个时候,你可以在执行 mysqldump 的时候加入 where 参数来筛选数据,

但依然会遇见文件比较大的情况。

在这种情况下,你可以选择使用 gzip 来压缩你导出的 SQL 文件,命令也非常简单

gzip xxx.sql
Code language: CSS (css)

执行完成后,你会获得一个 xxx.sql.gz 文件,接下来只要使用 scp 之类的软件,将文件拖回本地即可。

通过 Gzip 压缩,可以将一个原本 1.5G 的 SQL 文件压缩到 100M 左右,大大的提升了数据的传输速度。