是否有MySql二进制转储格式?或者比纯文本INSERT语句更好的东西?

Oll*_*ass 20 mysql dump

是否有比转换MySql数据库的纯文本CREATE TABLE和INSERT语句更好(更快或更小)的内容?对于大量数据来说,这似乎非常低效.

我意识到可以复制底层数据库文件,但我认为它们只能在它们来自的相同版本的MySql中工作.

有没有一个我不知道的工具,或者这种缺乏的原因?

cod*_*ala 10

不确定这是否是您所追求的,但我通常将输出mysqldump直接传递给gzipbzip2(等).它倾向于比转储到stdout或类似的东西快得多,并且由于压缩,输出文件要小得多.

mysqldump --all-databases (other options) | gzip > mysql_dump-2010-09-23.sql.gz
Run Code Online (Sandbox Code Playgroud)

--xml如果你正在寻找"可移植性"而牺牲了比gzip压缩SQL更多的磁盘空间,那么也可以使用该选项转储到XML ...

  • 只是为此提供一些数字:我将mysqldump的输出传递给7-zip,结果通常是未压缩的SQL脚本的5-7%. (2认同)
  • 在 MySQL 备份中使用管道 ``|`` 运算符时我会非常小心。我已经让管道“|”将我的转储编码(UTF-8)弄乱成难以辨认的东西。我强烈建议 mysqldump 命令使用“--result-file”标志。 (2认同)

Duc*_*cio 5

对不起,MySQL没有二进制转储.但是,MySQL的二进制日志专门用于备份和数据库复制目的http://dev.mysql.com/doc/refman/5.5/en/binary-log.html.它们并不难配置.仅记录更新和删除等更改,因此每个日志文件(由MySQL自动创建)也是数据库中更改的增量备份.这样,您可以不时地保存数据库的整个快照(一个月一次?),然后只存储日志文件,并在发生崩溃时恢复最新的快照并运行日志.