Clean - Shrink ibdata1
To shrink ibdata1 once and for all you must do the following:
MySQLDump all databases into a SQL text file (call it SQLData.sql)
Example, change directory to the /home directory which may be a partition with more space.
mysqldump -uroot -p --all-databases --extended-insert --add-drop-database --disable-keys --flush-privileges --quick --routines --triggers > all-databases.sql
Drop all databases (except mysql schema) via PHPMyAdmin or shell.
service mysql stop
Add the following lines to /etc/my.cnf
rm -f /var/lib/mysql/ibdata1 /var/lib/mysql/ib_logfile
At this point, there should only be the mysql schema in /var/lib/mysql
service mysql start
This will recreate ibdata1 at 10MB, ib_logfile0 and ib_logfile1 at 1G each
Reload SQLData.sql into mysql
ibdata1 will grow but only contain table metadata
Each InnoDB table will exist outside of ibdata1
Suppose you have an InnoDB table named mydb.mytable. If you go into /var/lib/mysql/mydb, you will see two files representing the table
mytable.frm (Storage Engine Header)
mytable.ibd (Home of Table Data and Table Indexes for mydb.mytable)
ibdata1 will never contain InnoDB data and Indexes anymore.
With the innodb_file_per_table option in /etc/my.cnf, you can run OPTIMIZE TABLE mydb.mytable; and the file /var/lib/mysql/mydb/mytable.ibd will actually shrink.
Was this article useful? Have any suggestions or improvements to the information?
system is a feature of php which is disabled by default. To change this if needed for a...
PHPList produces internal server error. Checking error logs results in: Invalid command...
If you receive an Internal Server Error 500 and checking your log files displays "Premature end...
This error indicates your script is using out-dated PHP commands. It is best to update your...
PHP suexec is running on all of our shared servers. If you are running code that is insecure or...