What happens if I delete the ibdata1 file and restart the server, my database is MyISAM, I used InnoDB before but now all tables are MyISAM. Will be a big problem if I delete this file. As far as I know that will be recreated when I restart the server, but I don't understand what exactly is that file!
You should do the following:
Add this to /etc/my.cnf
Then perform the following:
- service mysql stop
- rm -f /var/lib/mysql/ib*
- service mysql start
As to what the file is : ibdata1 stores the internal metadata for each InnoDB table that exists. Make sure all InnoDB tables are converted to MyISAM or mysqldump'd out before deleting ibdata1. There are also two other files: ib_logfile0 and ib_logfile1. Those are InnoDB log files for holding running transactions not fully commited to disk as well as MVCC (Multiversioning Concurrency Control) data.
Once you restart mysql from those three(3) steps, none of the InnoDB files should reappear. In fact, you should get a much faster mysql startup.
InnoDB stores the tablespace for all tables with ENGINE=InnoDB in that file whereas in MyISAM the tablespace is stored in individual .MYD and .MYI files.
Yes, you can remove the ibdata1 file. However, as long as you have the InnoDB engine enabled, the file will be recreated at startup. I wouldn't delete this file while the mysqld service is running.