Jez*_*ezB 7 mysql mysqldump backup
我有一个 10.6GB 的 MySQL 数据库——它有 MyISAM 和 InnoDB 表。一个特定的表(称为“响应”)是 8Gb - 该表是 InnoDB。
实时数据库被复制到另一台服务器,我使用 MySQLDump 从复制服务器进行备份……实时服务器运行 Windows,但复制服务器运行 CentOS。
MySQLDump 命令是:
mysqldump --verbose --lock-tables=true --max-allowed-packet=1024M --host=192.168.1.182 --user=myusername --password=mypassword --opt --databases databasename > databasename.sql
Run Code Online (Sandbox Code Playgroud)
该命令运行到“响应”表的一半 - 当我们得到:错误 2013 - 查询期间在第 12891212 行转储表响应时丢失与 MySQL 服务器的连接
经过一番谷歌搜索后,我尝试将以下命令添加到 MySQLDump(独立和同时):
--net-buffer-length=32704
Run Code Online (Sandbox Code Playgroud)
和
--skip-extended-insert
Run Code Online (Sandbox Code Playgroud)
错误仍然发生在同一个地方。
为了完整起见,我尝试在 NaviCat 和 MySQL Workbench 中转储数据库 - 两者都返回相同的错误。
所以,我想知道这是否是腐败问题。我尝试运行以下(在复制服务器上):
CHECK TABLE responses;
Run Code Online (Sandbox Code Playgroud)
和
CHECK TABLE responses EXTENDED;
Run Code Online (Sandbox Code Playgroud)
两者都返回以下内容:错误 2013 - 查询期间与 MySQL 服务器的连接丢失。
实时数据库非常忙,所以我有点担心......我在实时表上启动了CHECK TABLE,但不出所料,它导致应用程序停止,所以我不得不停止它。
这里欢迎任何建议......最终目标是使用 MySQLDump 进行备份。
谢谢
更新:我尝试使用 NaviCat 将表(在复制服务器上)复制到另一台服务器上的新数据库 - 它失败并显示相同的消息(传输记录:12,889,214):错误 2013 - 在查询过程中与 MySQL 服务器的连接丢失
你的问题源于网络。在这种情况下,它不是用于通过网络传输数据的缓冲区。它是网络试图在这样做时保持活动的时间长度。
请注意以下选项:
您有一个繁忙的服务器,并且在某个时刻,您需要为 mysqldump 读取的数据超时。
我过去所做的是在源服务器和目标服务器上运行以下内容:
mysql> SET GLOBAL net_read_timeout = 31536000;
mysql> SET GLOBAL net_write_timeout = 31536000;
Run Code Online (Sandbox Code Playgroud)
然后,去运行mysqldump。
将这些值设置得非常高会强制 mysqldump 数据库连接等待很长时间才能传送数据。如果您想知道,数字31536000
是一年中的秒数 (365 * 24 * 60 * 60)。mysqldump 数据库连接将只需要停留并等待,即使对于您繁忙的服务器,直到数据到来(最终)。请参阅我的帖子Jan 12, 2012
:客户端超时,而 MySQL 查询仍在运行?
试一试 !!!
请注意您从 mysqldump 获得的错误消息:
错误 2013 - 在查询期间在第 12891212 行转储表响应时丢失与 MySQL 服务器的连接
请注意行号12891212
。如果每次 mysqldump 失败时该行号都会在错误消息中返回,那么您可能会怀疑数据损坏。但是,如果您在每次 mysqldump 尝试中获得不同的行号,这表明 mysqldump 连接能够沿着大表移动,并且只是超时和一些随机点。
请设置这些值并再次尝试 mysqldump。然后,回来告诉我们发生了什么事。
归档时间: |
|
查看次数: |
17441 次 |
最近记录: |