Vin*_*nie 7 mysql mysqldump backup
我们有一个 2GB 的 MySQL 数据库。今天早上我们开始了这个数据库的 mysql 转储,结果转储文件是 27GB!任何人都可以对这里发生的事情有所了解吗?
问题
有人告诉我您要么使用 5.0 之前的 MySQL 版本,要么调用了旧版本的 mysqldump,要么弄乱了转储的设置。
通常会使 mysqldump 超过其数据集大小的选项是 --skip-extended-insert。
在旧版本的 MySQL 中,没有扩展插入。这意味着表中的每一行都有一个针对自身的 INSERT 命令。如果表有 2,000 行,则 mysqldump 输出将有 2,000 个 INSERT 命令。这是要放置在转储文件中的大量逗号、括号、单引号和“INSERT INTO”标签。
在较新版本的 MySQL 中,添加了 --extended-insert 以在单个 INSERT 中将数十(甚至数百)行组合在一起。所以,而不是...
INSERT INTO tbname VALUES (1);
INSERT INTO tbname VALUES (2);
INSERT INTO tbname VALUES (3);
INSERT INTO tbname VALUES (4);
INSERT INTO tbname VALUES (5);
Run Code Online (Sandbox Code Playgroud)
你可以有这个:
INSERT INTO tbname VALUES (1),(2),(3),(4),(5);
Run Code Online (Sandbox Code Playgroud)
对于 mysqldump,--opt 包括 --extended-insert。如果在执行 mysqldump 时使用 --skip-opt,它会禁用 --skip-extended-insert。以下是影响扩展插入的 mysqldump 选项:
-e, --extended-insert
Use multiple-row INSERT syntax that include several
VALUES lists.
(Defaults to on; use --skip-extended-insert to disable.)
--opt Same as --add-drop-table, --add-locks, --create-options,
--quick, --extended-insert, --lock-tables, --set-charset,
and --disable-keys. Enabled by default, disable with
--skip-opt.
Run Code Online (Sandbox Code Playgroud)
警告
在 Linux 命令行运行这些
mysql --version
mysqldump --version
which mysqldump
Run Code Online (Sandbox Code Playgroud)
如果这些与您在服务器上运行的 mysql 版本不匹配,或者同一台机器上存在多个 MySQL 版本,请解决这个问题。在此之前,请确保调用正确版本的 mysqldump 并且不要使用 --skip-opt。
转储文件不仅仅包含结构和数据,它还包含用于重新创建结构和插入数据的实际 sql。这就是你的文件变大的原因。如果转储文件的大小对您来说是个问题,可以通过多种方法在转储时即时压缩转储文件。
有关更多信息,请阅读此处: http ://www.webcheatsheet.com/SQL/mysql_backup_restore.php#compress
归档时间: |
|
查看次数: |
7310 次 |
最近记录: |