我正在尝试从另一个 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 下。
这是正常的。这是发生的事情:
mysqldump
INSERT
从 BTree 结构化数据生成语句。同时...
SHOW TABLE STATUS
仅给出行数的估计值。如果您想要确切的行数,请使用SELECT COUNT(*) FROM tablename
. (一次一张)由于STATUS
是“估计”,它可能比实际计数多或少;有时数量很大。这又是“正常的”。