目標:阿里雲OS數據庫DMS,單個主庫最大存儲空間為2T.最近公司業務擴展很快,一天數據量達到7.9G左右。要求備份清理歷史數據,備份到其他磁盤。
准備:
如果想知道MySQL數據庫中每個表占用的空間、表記錄的行數的話,可以打開MySQL的 information_schema 數據庫。在該庫中有一個 TABLES 表,這個表主要字段分別是:
TABLE_SCHEMA : 數據庫名
TABLE_NAME:表名
ENGINE:所使用的存儲引擎
TABLES_ROWS:記錄數
DATA_LENGTH:數據大小
INDEX_LENGTH:索引大小
其他字段請參考MySQL的手冊,我們只需要了解這幾個就足夠了。
1 首先查看某一實例下的所有占用磁盤空間(表數據+索引數據,得到的結果為B,這里做了數據處理轉成M):
select concat(round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024,2),'M') from information_schema.tables where table_schema='實例名稱';
上面是查詢所有的表計的累計量,下面是是查詢單個表計的的SQL(按照實例名查詢):
select table_name, DATA_LENGTH/1024/1024 as tablesData, INDEX_LENGTH/1024/1024 as indexData from information_schema.tables where table_schema='dsm' ORDER BY tablesData desc;