我最近在更改此参数的值后遇到了数据损坏的情况my.cnf
:
innodb_data_file_path = ibdata1:10M:autoextend:max:128M
到 :
innodb_data_file_path = ibdata1:10M:autoextend:max:256M
我不完全确定这是损坏的原因,因为之前数据库空间不足。我的问题是,一旦空间已满,修改数据库的最大大小是否安全?
答案1
如果您想确定,您应该执行以下操作:
首先,将 /etc/my.cnf 中的 innodb_data_file_path 更改为
[mysqld]
innodb_data_file_path = ibdata1:10M:autoextend
然后运行以下命令
cd
service mysql restart --skip-networking --skip-grant-tables
mysqldump --single-transaction --routines --triggers --all-databases > MySQLData.sql
service mysql stop
确保 /root/MySQLData.sql 存在。然后继续
rm /var/lib/mysql/ibdata1
rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1
service mysql start --skip-networking --skip-grant-tables
mysql < MySQLData.sql
service mysql restart
试一试 !!!
实际上,我的工作中有一个监控,它使用 MySQL 作为其存储库,我将最大数量从 1TB 更改为 16TB。在数据收集过程中,无法写入任何内容,但没有引入损坏。您只需更改数字即可。
我会完全删除最大值,正如我提到的
innodb_data_file_path = ibdata1:10M:autoextend
原因有二:
- 变化很小
- ibdata1 总是会被写入,因为撤消表空间位于其中,必须写入。这会导致 ibdata1 偶尔增长。您可能再次遇到这种情况。因此,最好删除 max 选项。