問題 :阿里雲有台mysql服務器的硬盤快滿了。主要是/var/lib/mysql/ibdata1文件很大
解決方法:備份數據庫-->停用數據庫-->修改mysql配置文件-->刪除ib*開頭的文件-->啟動數據庫-->還原數據庫
1.備份
mysqldump -u root -p --all-databases --add-drop-database --flush-privileges --routines > /mnt/data/all-database.sql
參數說明:
--all-databases 備份全部數據庫
--add-drop-database 每個數據庫創建之前添加drop數據庫語句
--flush-privileges 在導出mysql數據庫之后,發出一條FLUSH PRIVILEGES 語句。為了正確恢復,該選項應該用於導出mysql數據庫和依賴mysql數據庫數據的任何時候
--routines 導出存儲過程以及自定義函數
2.停用數據庫
systemctl stop mysqld 或者 service mysqld stop
3.修改文件
vim /etc/my.cnf
[mysqld]
innodb_file_per_table=1
4.刪除文件
cd /var/lib/mysql/
rm -f ib*
5.啟動數據庫
systemctl start mysqld 或者 service mysqld start
6.還原數據庫
mysql -uroot -p
source /mnt/data/all-database.sql
完成!
注意事項:
1.停用數據庫注意要用服務停,不要直接kill, 后面重啟可能會報錯。
2.修改配置文件並且沒有刪除ib* ,數據庫一直起不來,報錯,把ib*文件刪除在重啟
3.Table‘performance_schema.session_variables’ doesn’t exist的異常
3.1 mysql_upgrade -uroot -p
3.2 systemctl stop mysqld
3.3 systemctl start mysqld