Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет!
Хотелось бы совета как правильно реализовать данную задачу:
Через mysqldump был сформирован .sql-пакет (дамп определенных таблиц и их данных) для дальнейшего импорта в новую БД.
Как обезопасить себя что в случае форс-мажора если импорт .sql оборвется сделался бы ROLLBACK в начальное состояние?
Грубо говоря как мне безопасно импортировать в MYSQL .SQL-файл (дамп таблиц) в одну транзакцию? (или еще както?)
Или для этого надо сам .sql файл выгружать утилитой mysqldump с определенными параметрами? (Чтобы он сформировался для дальнейшего импорта прописав в самом файле единую транзакцию импорта?)
Или это как-то иначе делается?
Сейчас я экспортирую так: mysqldump --user=user --password=password --host=host --databases "dbase" --tables table1 table2 --protocol=tcp --port=3306 --skip-triggers > export.sql
импортирую: mysql --user=user --password=password --database=dbase < export.sql
Но если по какой-то причине импорт дампа прервется состояние этих таблиц не восстановится же? Поправьте как это делается правильно.
PS: и еще мелкий вопрос - у меня в файле tables.txt (одна строка = одно имя таблицы) содержится список таблиц для экспорта.
Как мне вместо --tables table1 table2 указать что названия таблиц надо считывать из файла?
Спасибо за внимание!
Неактивен
К сожалению, MySQL не поддерживает транзакции в DDL, поэтому любые изменения структуры таблиц автоматически сделают этот дамп непригодным для восстановления. Можно попробовать сделать дамп и добавить туда внутри транзакции строки вида DELETE FROM tablename, но это выглядит как минимум рискованно. Кажется, то, что Вы хотите, проще реализовать восстановлением в отдельную базу данных, а потом переключением боевой нагрузки в нее.
Список таблиц можно вычитывать средствами shell операционной системы (например, в bash это будет просто
Неактивен
Спасибо вам за наводки!
добавить туда внутри транзакции строки вида DELETE FROM tablename - вы имеете ввиду (чтобы сохранить единую транзакцию) создать дамп без create и drop и сделав например дамп обернутый в begin и end только с trancate и insert ? (про риск - вы имеете ввиду что теперь контроля соответствия структуры таблиц нет?)
Переключение баз не устроит.. - если вдаваться более подробно, нужно по маске выборочно отобрать таблицы и только их импортировать из старой базы (из pre-production сервера) в активную БД (production), при этом задача поставлена сохранить целостность импорта.
Есть еще вариант федеративных таблиц, только не знаю чем это мне облегчит задачу
Отредактированно W2S (20.10.2018 23:29:09)
Неактивен