点标签看更多好帖
开启左侧

[学习借鉴] 用 BigDump 工具导入超大 MySQL 数据库备份文件

[复制链接] 2
回复
1467
查看
打印 上一主题 下一主题
楼主
跳转到指定楼层
发表于 2016-6-17 02:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
最近发现网站数据库备份出现问题:
! M; E8 E* O# Z9 ]7 u* ?经过联系虚拟空间技术支持: 我们的数据库太大( 将近400MB), 远远超过了普通MySQL的数据库容量。使用一般的Cpanel已经无法备份。  Y6 f; ]1 u. }( @* ^& y

. `1 F( u3 ?4 ?$ K学习下面文章, 备用:http://www.discuz.net/thread-2881375-1-1.html- `# V& _6 }0 d) e- f( G7 }

+ D* `5 _& |/ g1 P2 v
1 f4 }2 `; R* [& d9 B
' w2 Y1 N3 I# e+ S& c* [7 j3 u$ U' M/ I常用的 MySQL 数据库恢复工具(也能进行备份操作)是 phpMyAdmin,这是一个开源、免费的工具,大多数主机商(例如 Hawkhost)都会免费提供 。相信很多站长也用过 phpMyAdmin 来进行网站数据库的备份和恢复,确实很方便,并且有多国语言界面。不过,有一种情况可能你还没碰到,就是当你的数据库体积比较大时,例如 SQL 备份文件大于 2MB,甚至大于 10MB,这个时候如果你通过 phpMyAdmin 来进行数据库的恢复,就会出错,显示如下的提示:
0 p3 V& k$ N! m( _  o. N5 B
这是因为你的 SQL 文件体积太大,超过了 phpMyAdmin 的处理能力,这种情况在网络速度比较慢的情况下尤为突出,例如站长在周末晚上8点这个网络拥挤的时段尝试使用 phpMyAdmin 来恢复大型 MySQL 数据库备份,就容易遇到这种问题。
1 l# V- a) A; C$ W4 {很显然 phpMyAdmin 只适用于恢复比较小的 SQL 文件备份。对于超大 MySQL 数据库备份的恢复,你必须换一个专用的恢复工具,那就是:BigDump!
$ e$ b8 N+ G0 I  b7 nBigDump 数据库导入工具简介1 v/ v0 ?3 I+ u/ V
BigDump 是由德国人 Alexey Ozerov 用 PHP 语言开发的一个工具脚本,它只有一个文件,名为 bigdump.php(你可以改名运行)。这个文件是独立运行的,因此与你的网站核心程序无关,不管是 WordPress,Drupal 还是 Joomla,只要你使用的是 MySQL 数据库,都可以用 BigDump 来恢复超大的 .sql 格式备份文件。
9 q- g- d# R3 u! }5 S" m" [BigDump 工作的原理也很简单:切割分段导入。它在读取 SQL 文件时,每次只读取一小部分,将其导入,然后重新开始一次恢复进程,再读取一小部分…… 周而复始,直到将整个 SQL 文件全部导入。+ `( f! l( b" l
BigDump 数据库恢复工具用法演示
% U, X8 l- }% l" B% a& O假设我们已经有了一个 MySQL 数据库的备份文件,名为 gate2.sql,文件大小约 150MB(这么大的文件别指望通过 phpMyAdmin 来恢复了)。数据库字符编码为 utf-8。我们演示一下如何通过 bigdump.php 工具将这个备份文件恢复到在线数据库中去。
1 |( q4 ]6 T* e" h2 V' c$ l1、获取 BigDump 文件并设置
: `% D) V' q9 G" L% s我们下载 BidDump 工具并解压,得到一个 bigdump.php 文件。毫无疑问,bigdump.php 文件需要设置一些参数,否则它怎么知道要导入的数据库的连接帐号?
2 L4 c$ K+ S* @$ \8 p7 p! M用文本编辑器打开 bigdump.php 文件,在大约第 38 行开始,我们设置要导入的 MySQL 数据库连接参数。如下图所示:) b! K, C1 c8 W. Q- @7 q$ D
一般来说,设置好这几项就可以了。对于某些特殊数据库,还需要在下面第66行左右设置数据库字符编码。bigdump.php 文件中没有预设这个参数,原文是:* D, y5 l$ _! ~1 q( e
  @8 z2 b/ K' e$ t2 a0 {, c) W6 h
$db_connection_charset = '';
如果你的数据库是 UTF-8 编码,那么此处就要修改为:
. v: y$ L' ]8 f% N7 ]* A8 k& ]6 l  `7 G
$db_connection_charset = 'utf8';
注意那个连字符要去掉。如下图所示:
2 `, X4 {# q9 k3 f4 K% p
接下来将设置好的 bigdump.php 文件上传到 Joomla 网站上,推荐上传到 /tmp 这个临时目录。: `* w4 G. B) ^4 f: J
2、上传 MySQL 数据库备份文件9 J1 a1 d$ s' v: j" {1 Y9 N0 m" C  ~
现在需要将数据库备份文件上传到 bigdump.php 所在的 /tmp 目录中。考虑到文件较大,我们通过FTP 软件 FileZilla 上传zip 格式的文件,然后借助 Joomla 后台安装的 eXtplorer 资源管理器组件将其远程解压,在 /tmp 目录中得到 gate2.sql 文件。& p; A0 p, H# A! i5 x) V9 w
+ _  Q# t  |7 Y- I/ {: M
3、启动 BigDump 工具& I$ [/ y9 d  ]  u, ?: b) J- C8 j
在浏览器地址栏输入 bigdump.php 所在 URL 并回车,运行这个文件。例如本次演示是在本地测试服务器上进行,那么对应的运行网址是:
' Q, w, x: S) Y) |+ R- Shttp://localhost/gate/tmp/bigdump.php
7 ?3 t! l$ d- v! A4 t6 Z" `如果你输入的 URL 正确,就应该看到如下画面:
  W1 C$ M0 s7 J% z9 h! h
这就表示 BigDump 工具已经成功启动,它在启动时就自动扫描所在目录中的全部文件和子目录。如果找到 SQL 格式或者 gzip/zip 格式文件,就假设这是数据库文件,在这些文件后面,就会显示出相应的操作链接。例如在上图中,它探测到所在目录中有一个 gate2.sql 文件,那么针对该文件就在表格右侧同一行中显示了两条操作链接,分别是“Start Import”(开始导入)和“Delete file”(删除文件)。上图的表格中也显示了 SQL 文件的大小,可以看到这个备份文件接近 150MB。
0 z9 e/ m  m- K# t4 u$ D在上图中,还可以看到一个文件上传功能,点击那个“浏览”按钮,你就可以上传一个 SQL 文件(或其压缩包)来进行导入。但是我们不推荐使用此功能。对于大型文件,FTP 上传是最佳选择。
) `  G8 O" {- X6 v! @) |; v4、运行 BigDump 导入功能6 F( O& B9 v7 @: I0 M
点击上图中的“Start Import”链接,就看到如下画面:: W: W6 `* c7 ^
上面这个截图是导入开始一段时间之后所截取的,可以看出 BigDump 正在顺利进行 SQL 文件的导入。表格中不仅显示了文件大小,还显示了已经导入的字节数及总体进度。
: c& r4 ^% Q* J' i2 B5 P经过一段时间后(大约20分钟),这个 150MB 大小的 SQL 文件终于导入结束,看到如下画面:
& L" \3 g4 ?0 E% U: O
原来显示进度条的地方,现在显示了一条消息:
9 O! h4 w! }- I4 C! XCongratulations: End of file reached, assuming OK
7 ~; h  p  N3 o3 R意思是说:已经到达文件末尾,想必应该成功了。看到这条消息,你就可以完全放心了。BigDump 已经成功地将你的 SQL 备份文件导入到你所指定的 MySQL 数据库里面了。. T( k; B! L: t% V0 m
注意:数据库恢复成功结束后,不要忘记删除 bigdump.php 备份工具和你的 SQL 文件!使用 BigDump 数据库导入工具的注意事项
3 P9 m" r$ s' p8 w' e
7 `4 X' ?: ^' h# k) y1 {1 {1 U0 }- t" Y* t2 o! M, `+ X5 R! J- j
1、在开始导入之前,目标数据库必须清空3 h, O" l( [6 E) P/ X& H  d* x5 m
如果目标数据库里面含有记录,那么 BigDump 就无法导入,会报错停止。因此请在开始运行 bigdump.php 文件之前,将目标数据库清空(最好删除全部内容)。, B4 |- o4 A9 D8 F. f, T
2、所用的 SQL 文件不能含有 Extended Inserts
  \) a: r# t; N+ P3 _3 K! r, J2 T或许很多第一次使用 BigDump 的用户都会遭遇这个问题。这是因为 phpMyAdmin 在导出数据库时,已经默认勾选了“使用扩展插入”。9 H  r4 \& ?- F; e/ @" q) F
这里的“扩展插入”就是 Extended Inserts,而 BigDump 是不能处理带有 Extended Inserts 的 SQL 文件的。所以,在你制作数据库备份时,必须在 phpMyAdmin 的面板上去掉“扩展插入”的勾选。如下图所示:
9 o* s. X1 e  a5 q1 M1 m' r
3、如何使 Akeeba Backup 与 BigDump 配合工作?3 x( ^7 @% z* ~/ J* f3 x; M+ ~
我们前面推荐大家使用 Akeeba Backup 来制作备份文件。那么,可否使用 Akeeba Backup 来制作数据库备份,然后通过 BigDump 导入?当然是可以的。不过,这里面需要一些特殊技巧。我们将在 Akeeba Backup 使用详解 这篇教程中介绍。
. w6 F; [' v+ V3 T, C' u4、使用 BigDump 导入仍然发生超时错误  Q, G5 t$ M% z
这种问题多见于配置比较低的服务器,或者服务器繁忙时段。那么,你可以尝试修改 bigdump.php 文件中的“Other settings (optional)” 这部分的 $linespersession 参数,将默认值 3000 修改得更小一些。(不过,我认为你还是换一个更好的服务器吧,例如 Hawkhost)。
9 r! H3 t4 Y5 e3 l% g% T2 \# Q: f7 Q5、发生 MySQL 服务器超载怎么办?+ b) r9 X" K2 C" s; L* H2 p0 h
如果服务器性能较差,在运行 bigdump.php 过程中可能会发生 MySQL 服务器超载(overrun)故障。你可以修改 bigdump.php 文件中的 $delaypersession 参数来解决。该参数让 bigdump.php 文件在结束一个片段的导入之后,休息一段时间(你设定的数值就是暂停的时间,单位:毫秒),然后再开始下一个片段的导入,这样服务器就不会太累了。
. O; {2 b, q% m! i% G/ n6、直接把 .sql 格式文件交给 BigDump; w, V9 V- K; Z9 m: H4 s
在本次演示中,我们先将 zip 格式的备份包上传到服务器上,然后又将它解压成 .sql 格式的文件,再通过 BigDump 来导入。为什么不直接用 BigDump 来导入压缩格式的备份文件?
! M  Q' |; l. ~5 _4 \! \8 W0 I. L没错,BigDump 具有导入压缩格式 SQL 备份文件(zip/gzip)的能力,但是在处理压缩文件时,它需要先在临时目录中将其解压,再读取。请注意:这个解压并不是一次性的,而是每导入一个小片段,就要将整个压缩包重新解压一次。因此,直接导入压缩格式文件,反而使 bigdump.php 运行变慢。& M3 X2 F! Z3 M
7、我还有更奇怪的问题……' x$ [3 q  |  v. j6 S" x, x( `
一般来说,运行 bigdump.php 导入一个 SQL 备份文件非常容易。如果你参照上述注意事项及操作过程,仍然不能顺利完成数据库备份文件的导入,那么请到http://www.ozerov.de/bigdump.php阅读更多 FAQ,查找原因。
6 k) c: z- F+ V4 D1 a) Q, u0 s工具下载地址:http://www.ozerov.de/bigdump.zip (10 KB ZIP archive) - @8 G9 Z1 n/ r$ m
0 g: c. m" c, f1 t. ^- E

7 H2 V7 I+ C$ r, Y  m
$ L0 i! X8 y+ i7 K  U! D

转载请保留当前帖子的链接:https://www.beimeilife.com/thread-16511-1-1.html 谢谢
沙发
发表于 2016-6-17 02:11 | 只看该作者
当前我们使用PHPMYADMIN进行手工备份, 同时利用Discuz后台备份作为补充。
板凳
发表于 2016-6-17 03:31 | 只看该作者
百万记录级MySQL数据库及Discuz!论坛优化; a; Y5 @9 [: w* ?8 E) l- H
, f9 \7 W4 F+ D; k- M
http://chenyipeng.lofter.com/post/7f475_9a47c38
9 _/ Y# Y- D: _4 l3 q8 V( r  T% f7 T3 A: [4 w( c

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表