AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1012278
Accepted
Ror
Ror
Asked: 2020-04-15 08:42:25 +0800 CST2020-04-15 08:42:25 +0800 CST 2020-04-15 08:42:25 +0800 CST

导出的 MariaDB 转储大小不同

  • 772

我正在尝试从另一个 MariaDB 服务器上复制数据库。我在服务器 A 上转储了数据库:

sudo mysqldump -u root -p --databases database1 > /var/tmp/database1.sql

我在服务器 B 上创建了新数据库:

create database database1;

然后我使用 scp 将 .sql 转储文件从服务器 A 复制到服务器 B,并使用以下命令将其导入服务器 B:

sudo mysql -u root -p database1 < database1.sql

但是,这两个数据库的大小似乎不同:

服务器甲:

MariaDB [(none)]> SELECT table_schema "database1", ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"  FROM information_schema.tables  GROUP BY table_schema;
+--------------------+---------------+
| database1          | DB Size in MB |
+--------------------+---------------+
| information_schema |           0.2 |
| mysql              |           2.5 |
| performance_schema |           0.0 |
| database1          |         516.7 |
+--------------------+---------------+

服务器 B:

MariaDB [(none)]> SELECT table_schema "database1",ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"  FROM information_schema.tables  GROUP BY table_schema;
+--------------------+---------------+
| database1          | DB Size in MB |
+--------------------+---------------+
| information_schema |           0.2 |
| mysql              |           0.7 |
| performance_schema |           0.0 |
| database1          |         456.8 |
+--------------------+---------------+

另外,如果我查看两个数据库上的同一张表,它们的行数似乎不同。我尝试多次复制数据库,但总是有所不同。有什么我想念的吗?我不是 MariaDB 的专家。两台服务器都在 Debian 9 下。

mysql debian database mariadb
  • 1 1 个回答
  • 484 Views

1 个回答

  • Voted
  1. Best Answer
    Rick James
    2020-04-15T13:45:52+08:002020-04-15T13:45:52+08:00

    这是正常的。这是发生的事情:

    • mysqldumpINSERT从 BTree 结构化数据生成语句。
    • 重新加载执行这些语句,用数据填充 BTree。
    • BTrees 是为灵活性而设计的——你可以在表格中间添加一条记录;
    • BTree 由“块”组成(对于 InnoDB,每个块为 16KB)
    • 如果插入进入“完整”块,则该块被“拆分”——16KB 突然变成 32KB。其中很多可能会导致表增长。
    • 另一方面,转储可能是按“顺序”完成的。在这种情况下,重新加载可能会比随机插入/删除更好地打包块。
    • 这种重新加载可能会更小,但不一定。

    同时...

    SHOW TABLE STATUS仅给出行数的估计值。如果您想要确切的行数,请使用SELECT COUNT(*) FROM tablename. (一次一张)由于STATUS是“估计”,它可能比实际计数多或少;有时数量很大。这又是“正常的”。

    • 2

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve