在服务器(CloudFoundry)中运行数据库备份运行命令时出现此错误:
mysqldump: Error 1317: Query execution was interrupted when dumping table `attac
hment` at row: 26
为什么会出现这样的错误?是因为mysql杀死了一些花费太多时间的进程..?还是因为任何其他原因?
答案 0 :(得分:1)
CF确实杀死查询进程花了超过3秒。请尝试以下步骤,看看是否可以解决问题:
1)vmc tunnel service_name
2)为隧道命令选择“无”
3)启动一个单独的mysqldump进程,其中包含一些调整选项,例如--where
看看它是否可以通过。
答案 1 :(得分:0)
我正在使用一个约 140GB 的数据库,但遇到了同样的错误。
$ mysql --version
mysql Ver 14.14 Distrib 5.6.51, for Linux (x86_64) using EditLine wrapper
就我而言,我想将数据库移动到另一台服务器,因此我首先在 /etc/my.cnf
中启用了这些设置以设置复制过程。
log-bin=mysql-bin
server-id=1
我重新启动了服务器,以便主服务器开始记录以进行复制。
然后我添加了这些设置以防止 Error 1317
超时。特别是对于大表查询,读/写超时以前太低了。
net_read_timeout=9999
net_write_timeout=9999
net_retry_count=999
然后我使用这个命令来获取转储,利用“时间点”。
由于“服务器 2”尚未启动,它将转储所有内容。
在我为服务器 2 打开复制后,它将提取自此转储以来的所有新记录。
如果您不进行复制,则可以省略 --master-data=2
。
sudo mysqldump --compress --max-allowed-packet=1G --master-data=2 --single-transaction --databases ${dbname} -r ${backupname}
花了大约 4 小时才完成。
这是我完整的 /etc/my.cnf
供参考 -
$ cat /etc/my.cnf
[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000
innodb_buffer_pool_size=1G
bulk_insert_buffer_size=20971520
query_cache_type=1
query_cache_size=16777216
log-bin=mysql-bin
server-id=1
net_read_timeout=9999
net_write_timeout=9999
net_retry_count=999