gar*_*ink 19 mysql mysqldump backup
我安装了一个数据库,我想在 mysql 中备份它。问题是mysqldump导出 'maia_mail' 表失败
# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15
Run Code Online (Sandbox Code Playgroud)
它运行不到 30 秒并得到如上所示的错误。
DB 的总大小为 1.3GB,其中 maia_mail 表为 1.0GB
在my.cnf我有这些设置:
[mysqld]
max_allowed_packet = 1300M
[mysqldump]
max_allowed_packet = 1300M
Run Code Online (Sandbox Code Playgroud)
请就如何转储数据库提出建议或提供一些指导?
Rol*_*DBA 15
我可以很容易地建议更改 InnoDB 设置,这可能只是为了让 mysqldump 正常工作。您可能不喜欢我对建议的看法,但我相信这是您最好(唯一)的选择。它是这样的:
mysqldump 的默认设置包括在单个 INSERT 中将数百或数千行聚集在一起。这称为扩展插入。它导致一些超出 max_allowed_packet 的超限。
我回复了一个帖子Sep 01, 2011(MySQL 服务器已经消失,阻碍了大型转储的导入),我讨论了为导入大型 mysqldump 做同样的事情。我相信禁用扩展 INSERT 也有助于创建一个麻烦的 mysqldump。
mysqldump -u root --skip-extended-insert -p maia > maia.sql
Run Code Online (Sandbox Code Playgroud)
坏消息:这是为每一行创建一个 INSERT 命令的作用。这肯定会增加执行 mysqldump 所需的时间。因此,它也将增加重新加载所需的时间(可能增加 10-100 倍。
我skip-extended-insert之前讨论过
Aug 12, 2011:为什么mysqldump文件这么大?Aug 09, 2013:从 MySQL 5.5 附件表备份/导出数据一直失败!Nov 16, 2014:如何使用 MySQL 为数据库转储批处理多个插入语句?为了使 mysqldump 的二进制数据更具字节可移植性,请以十六进制转储此类数据
mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql
Run Code Online (Sandbox Code Playgroud)
坏消息:它会使 mysqldump 膨胀一点
旁注:max_allowed_packet 的最大大小为 1G
我在尝试转储 12 GB 数据库时也遇到了同样的错误。我做了以下更改以使其工作。
注意:我知道超时值太高(7200 秒,即 20 小时)。但我故意这样做只是为了排除任何机会。我正在寻找最佳超时值。
只需在 my.ini (Windows) 或 my.cnf (Linux) 配置文件中包含以下内容即可。
[mysqld]
max_allowed_packet=1024M
net_read_timeout=3600
net_write_timeout=3600
[mysqldump]
max_allowed_packet=1024M
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48744 次 |
| 最近记录: |