Назад | Перейти на главную страницу

Безопасно ли изменять значение innodb_data_file_path для mysql 5?

Недавно я столкнулся с повреждением данных после изменения значения этого параметра в my.cnf из :

innodb_data_file_path = ibdata1:10M:autoextend:max:128M

кому:

innodb_data_file_path = ibdata1:10M:autoextend:max:256M

Я не совсем уверен, что это было причиной повреждения, так как ранее в БД не хватало места. Мой вопрос: безопасно ли изменять максимальный размер БД после заполнения пространства?

Если вы хотите быть уверенным, вам следует сделать следующее:

Сначала измените путь innodb_data_file_path в /etc/my.cnf на

[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 в качестве своего репозитория, и я изменил максимальное число с 1 ТБ на 16 ТБ. Во время сбора данных ничего нельзя было записать, но никакого повреждения не было. Вы можете просто изменить номер.

Я бы вообще удалил максимальное значение, как я уже упоминал

innodb_data_file_path = ibdata1:10M:autoextend

по двум причинам:

  1. изменение очень небольшое
  2. ibdata1 всегда будет записан, потому что табличное пространство отмены внутри него и оно должно быть записано. Это вызовет случайный рост ibdata1. Вы можете снова столкнуться с этим. Так что лучше всего убрать опцию max.