Есть ли способ загрузки больших 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 делается в транзакции. Иногда это неявный (когда включен автокоммит, каждый выполненный оператор - технически - запускает и фиксирует свою собственную транзакцию), но это все равно транзакция в соответствующем смысле.

Журнал повторного выполнения является критическим компонентом, и его размер можно изменить только после перезапуска.

Другие вопросы по тегам