Mysql

我注意到我的 MySQL slave 的 DB 大小小於 Master 的 DB

  • October 17, 2014

我有一個非常簡單的主 MySQL DB 設置,其中一個從 MySQL DB 從中複製。

最初,在設置從屬伺服器時,我使用 mysqldump 從主伺服器獲取初始數據庫轉儲,如下所示:

mysqldump --single-transaction --master-data  some_db > someSQL.sql

然後我轉到我的從屬數據庫,創建了一個名為“some_db”的全新數據庫,然後嘗試反向轉儲:

mysql -uroot --one-database some_db < someSQL.sql

但後來我在 MySQL 提示符下比較了 DB 大小,發現 master 的 some_db 的大小約為 7.6 gigs,而 slave 的只有 6.4 gigs。

我發現這很令人擔憂,因為我想知道某些數據是否失去了。據我了解,數據庫不包含 blob 或任何觸發器,那麼缺少的 1.2 gigs 可能去哪裡了?

請讓我知道您的想法。

謝謝是

由於表經歷了許多 INSERT/UPDATE/DELETE 循環,mysql 不會從已刪除的行中回收空間;相反,它在內部將該行標記為“已刪除”並將其保留在表空間中。1G 大小差異並不少見,不應該引起恐慌。

您可以嘗試optimize table在 master 上執行命令並驗證表大小是否減小。定期優化執行大量 DELETE 操作的表是一種很好的做法。

引用自:https://dba.stackexchange.com/questions/80423