2016年10月31日 星期一

mysql 縮小 ibdata1 檔案



今天發現一台Server 空間不足, 這台主機主要運行著mysql
查看了一下檔案最大的size 是 ibdata1 , 果然不出所料 
show variables like '%per_table%';  值為 off

意思是說 mysql 中所有的table index 都會存在ibdata1  這個檔案中,
即使你刪除了table 這個ibdata1 也不會縮小

解決方法:

1.exp 資料庫
2.drop database
3.設定 innodb_file_per_table 為ON

my.cnf文件
[mysqld]下增加下面配置
innodb_file_per_table=1  


或者

 set global innodb_file_per_table=1

4.imp 資料庫

通常到這邊資料庫就會縮得比原本還小

意外插曲:
我在匯入資料庫的途中 , 有把 ibdata1 不小心刪除掉
導致他雖然把資料匯進去, 但mysql找不到這些table 的metadata
後來只要重新在匯一次資料進去, 就可以找到table了


不過這台是備庫還需要設定 master/slave 
設完
SET GLOBAL server_id=2;

mysql> change master to
    -> master_host='192.168.100.189',
    -> master_port=3306, 
    -> master_user='rep',
    -> master_password='rep', 
    -> MASTER_LOG_FILE='mysql-bin.000510', 
    -> MASTER_LOG_POS=337935886;

在 start slave 就可以讓她進行同步了