asa*_*din 8 mysql mysqldump backup
我希望创建一个 cron 作业来备份我的 MySQL 数据库。我正在使用这个命令:
$ mysqldump --user="User" --password="Password" -A
--single-transaction > /home/user/Export-`date +"%F"`.sql
Run Code Online (Sandbox Code Playgroud)
这导致 2.5 MB 的文件大小。但是,当我使用同一用户使用 phpMyAdmin 导出功能时,我得到一个 3.7 MB 的文件。
有人可以解释这些差异吗,如果我做错了什么?
免责声明:不是 PhpMyAdmin 的用户
我可以解释一下 mysqldump 的作用。当您运行 mysqldump 时,仅转储 SQL 语句中的数据。不复制索引。当 SQL 加载到另一台服务器时,索引将被重建。
这是一个例子
我运行一个查询来显示索引和数据使用情况。
这是该查询及其输出
mysql> SELECT IFNULL(B.engine,'Total') "Storage Engine",
-> CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
-> SUBSTR(' KMGTP',pw+1,1),'B') "Data Size", CONCAT(LPAD(REPLACE(
-> FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
-> SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
-> FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
-> SUBSTR(' KMGTP',pw+1,1),'B') "Table Size" FROM
-> (SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
-> SUM(data_length+index_length) TSize FROM
-> information_schema.tables WHERE table_schema NOT IN
-> ('mysql','information_schema','performance_schema') AND
-> engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
-> (SELECT 2 pw) A ORDER BY TSize;
+----------------+----------------------+----------------------+----------------------+
| Storage Engine | Data Size | Index Size | Table Size |
+----------------+----------------------+----------------------+----------------------+
| BLACKHOLE | 0.000 MB | 0.000 MB | 0.000 MB |
| MEMORY | 0.000 MB | 0.000 MB | 0.000 MB |
| FEDERATED | 0.142 MB | 0.000 MB | 0.142 MB |
| MyISAM | 8.049 MB | 0.368 MB | 8.417 MB |
| InnoDB | 10.828 MB | 6.766 MB | 17.594 MB |
| Total | 19.019 MB | 7.134 MB | 26.153 MB |
+----------------+----------------------+----------------------+----------------------+
6 rows in set (0.62 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
请注意,我的 PC 有 19.019 MB 数据和 7.134 MB。mysqldump 将仅转储 19.019 MB 的数据。不导出索引。
如果 phpmyadmin 使用 mysqldump,那么我只有一种可能的解释。mysqldump 默认使用选项 --opt。这就是 --opt 的作用
--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)
如果 phpmyadmin 使用 调用 mysqldump --skip-opt,则通知--extended-insert未启用。启用后--extended-insert,将使用 插入一批行INSERT INTO。使用--skip-optor--skip-extended-insert将导致每个表中的每一行都有一个单独的INSERT INTO. 因此,这会增大 SQL 脚本的大小。随后,重新加载的时间将比平时更长。
| 归档时间: |
|
| 查看次数: |
15843 次 |
| 最近记录: |