2013年5月19日星期日

一個較小的ibdata文件

Original post: http://anothermysqldba.blogspot.com/2013/05/a-smaller-ibdata-file.html

我所看到的ibdata文件較小的慾望來了最近在forums.mysql.com 

InnoDB數據庫使用的ibdata文件(S)的數據庫中的數據存儲到磁盤。 正確地配置您的系統是關鍵,在這裡你可以學到更多有關該等購股權:http://dev.mysql.com/doc/refman/5.6/en/innodb-configuration.html 

InnoDB提供ACID兼容和交易安全的存儲引擎,它是非常有成效的,但如果要刪除和/或經常更換數據,隨著時間的推移,你將需要恢復丟失的空間。 多少時間取決於您的系統上使用。 您不能運行一個簡單的命令,並恢復空間的ibdata文件中。 它將採取一些步驟,它不是從服務器上的,除非做幕後工作。 如果你有一個奴隸,它最好是做這項工作的從屬數據庫上先規劃旋轉,數據庫服務器成為主數據庫。 

所以,兩種不同的情況,這些都不是唯一的解決辦法,但一些解決方案: 


  • 你要保持的ibdata文件相同的大小,但你只想清除浪費的空間
恢復丟失的空間的最佳方式是將數據轉儲並重新加載它。 是的,不是我知道一個DBA的首選。這是比較麻煩的,你的數據庫是更大的。 我希望你有一個從數據庫,可以做到這一點,然後關閉奴隸使其主後。 


  1. 備份數據庫
    1. mysqldump --user=<username> --password=<> --add-drop-database --master-data=2 --triggers --routines --events --databases (list database names and do not add mysql to this list) > /Just_AN_example/mysqldump_<DATEHERE>_.sql
      1. 這給了你一份ASCII副本以防萬一二進制腐敗。
      2. 如果需要的話,它還具有主數據通過評論。
      3. 這將讓你的mysql認證以及機智。
        1. 我想保存的mysql數據庫作為轉儲分開。
    2. 您還可以創建一個備份MySQL企業備份Percona的XtraBackup ,如果系統是一個更大的數據庫,並需要聯機備份,這些都是不錯的選擇。 給你們使用的各種原因。
  2. 校驗和數據庫。
    1. 收集一些數字,你有什麼這樣你可以比較它,當你加載它。
      1. Percona的工具包,這是可以做到

        1. # ./pt-table-checksum --password=<Password> > checksum_before_dump.txt
      2. 查詢時,你可以自己寫。
        1. 這一點,我有一個博客文章
          1. http://anothermysqldba.blogspot.com/2013/05/mysql-checksum.html
  3. 停止/啟動數據庫並利用停機時間,任何只讀變量,你想調整
  4. 裝入數據庫


  1. 上面列出的過程中,按照步驟1至2。
  2. 在上述過程的步驟4中,您會希望您的my.cnf文件中添加以下。
    1. innodb_file_format =酷魚
    2. innodb_file_per_table的= 1
  3. 刪除的ibdata文件和日誌。
    1. 從這個角度沒有回來
  4. 啟動數據庫
  5. 確認它是啟動和運行
  6. 加載備份數據庫。

當然,這將是最好的非生產/從服務器上,這樣你就可以確認所有的步驟,讓自己一個可行的情況,然後旋轉奴隸成為新的主。