我想从mysql切换到mariadb,为此,我导出旧的数据库并将它们导入到新的mariadb服务器,现在我有问题,新导入的数据库小于原始数据库 .
我做了以下事情:
-
使用mysql中的mysqldump创建备份(mysqldump --all-databases --user = root --password --master-data> backupdatabase.sql)
-
将其导入到新的maridb-server(mysql -u root -p <backupdatabase.sql)
如果想看,数据库有多大,我看到以下内容:
On the original mysql-server:
mysql> SELECT table_schema“database”,sum(data_length index_length)/ 1024/1024“size in MB”FROM information_schema.TABLES GROUP BY table_schema;
|数据库|大小以MB为单位
| DB-1 | 0.40625000
| DB-2 | 4.09375000 |
| DB-3 | 506.60937500 |
6行(0.90秒)
If i do now the same on the maraidb host:
MariaDB [(无)]> SELECT table_schema“database”,sum(data_length index_length)/ 1024/1024“size in MB”FROM information_schema.TABLES GROUP BY table_schema;
|数据库|大小以MB为单位
| DB-1 | 0.39062500 |
| DB-2 | 3.03125000 |
| DB-3 | 416.39062500 |
6行(0.09秒)
差异来自哪里?这是我的失败吗?
2 回答
InnoDB和MySIAM(您可能正在使用的引擎之一)的MySQL和MariaDB存储是完全相同的 . 此外,您可以通过在MySQL之上踩踏它来安装MariaDB,它将使用相同的文件数据库 .
您的问题很可能来自这样一个事实:当您从头开始创建一个表并插入所有行时,没有碎片或空间浪费或任何东西 . 当你有一个实时服务器时,当你删除行时,数据会变得有些碎片化,有时甚至会存储“空”空间而不会将其返回给操作系统(InnoDB) .
试试这个,在MySQL中创建一个新的数据库作为DB1-test并将转储导入其中,然后将DB1测试大小与MariaDB-DB1进行比较,它应该重合 .
Yor表未在MySQL服务器上进行优化 . 所以MySQL免费从未使用过Disc Space . 唯一要释放它的是删除并创建一个表 . 这就是优化所做的 . 另一件事是“每桌一个文件”选项 . 如果它在每个表上设置MySQL使用文件,并且可以通过Optimize else释放磁盘空间,那么你只有一个大文件 .