Есть ли способ загрузки больших BLOB без перезапуска MySQL?
Я пытаюсь перенести последние несколько баз данных со старого сервера mysql, но одна из них, в частности, поставила меня в тупик:
ОШИБКА 1118 (42000) в строке 595: Размер данных BLOB/TEXT, вставленных в одну транзакцию, превышает 10% от размера журнала повторов. Увеличьте размер журнала повторов, используя innodb_log_file_size.
Сервер, на который выполняется миграция, работает 5.6.29-76.2-log Percona Server
, который, кажется, имеет обходной путь для ошибки согласованности транзакций с большими BLOB.
Поскольку изменение innodb_log_file_size требует перезапуска службы, есть ли способ импортировать базу данных с отключенными транзакциями или что-то в этом роде? SQL*Loader имеет несколько опций для отключения транзакций при импорте, может быть, есть аналогичный инструмент и настройки для MySQL?
1 ответ
Здесь нет обходного пути. Вам нужно будет перезагрузить.
Все в InnoDB делается в транзакции. Иногда это неявный (когда включен автокоммит, каждый выполненный оператор - технически - запускает и фиксирует свою собственную транзакцию), но это все равно транзакция в соответствующем смысле.
Журнал повторного выполнения является критическим компонентом, и его размер можно изменить только после перезапуска.