У меня есть файл SQL размером около 3 ГБ. Так что это занимает много времени, чтобы восстановить каждый раз, когда я взял недавний дамп с производства.

В этой единственной таблице «access_log» потребовалось 2,2 ГБ, что является просто журналом. Для целей тестирования нормально, чтобы эта таблица была пустой. Есть ли способ избежать этой таблицы при восстановлении базы данных.

Моя команда для восстановления выглядит

mysqldump -u uname -p pwd --no-data site_name_com | awk '/DROP TABLE/ { print }' | mysql -u uname -p pwd site_name_com && mysql -u uname -p pwd site_name_com < /..file_path../..file_name.sql

Как сделать дамп базы данных, исключающий одну конкретную таблицу?

1 ответ1

1

Выходной формат mysqldump - это просто длинный список команд SQL, предназначенный для обратной связи с программой mysql .

Вы можете использовать mysqldump --ignore-table=<database>.<table> чтобы создать дамп, который вообще не включает таблицу access_log .

Затем вы можете использовать mysqldump --no-data=true чтобы вывести только структуру таблицы access_log .

Если вы объедините их, у вас будет полный скрипт дампа, который исключает данные для таблицы access_log .

Пока вам нужно сделать это только для одной или нескольких таблиц и контролировать исходный вызов mysqldump, это должно быть практическим решением.

Погуглил таблицу исключений mysqldump, которая послужила источником моего вдохновения:пропустить определенные таблицы с вопросом переполнения стека mysqldump и его принятый ответ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .