Резервное копирование и восстановление MySQL с помощью представлений

У меня возникают проблемы при правильном запуске резервных копий mysql, когда они являются представлениями в базе данных. Я думаю, что это может быть связано с необходимостью для него объекта-заполнителя. В любом случае я запускаю эту команду:

mysqldump -u myuser -pmypassword mydatabase | mysql -u myuser -pmypassword -C mydatabase_Beta

Пользователь имеет полные привилегии, и я получаю это:

Просмотр mydatabase_beta.yadayada ссылается на недопустимые таблицы или столбцы или функции или определяет / вызывает, или просмотр не имеет прав на их использование.

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

В этом примере я восстанавливаю его под другим именем, но мне нужно иметь возможность восстановить рабочую копию. Я думаю, что это, вероятно, дополнительный параметр mysqldump или, возможно, горячее копирование будет работать лучше. Мысли?

3 ответа

Попробуйте сделать это в два этапа:

mysqldump -uroot -ppassword --skip-extended-insert database.sql > database.sql

Таким образом, он создает резервную копию в файл, а затем передает его во вторую команду:

mysql -u myuser -pmypassword -C mydatabase_Beta < database.sql

Если ошибка ссылки находится на шаге mysqldump, либо исправьте представления, либо удалите их из базы данных. Я не могу представить, что они все еще используются, если они ссылаются на несуществующую таблицу.

Я думаю, что ответ может быть добавить -f:

--force, -f

Continue even if an SQL error occurs during a table dump.

Одно из применений этой опции - заставить mysqldump продолжать выполнение, даже когда он встречает представление, которое стало недопустимым, потому что определение ссылается на таблицу, которая была удалена. Без --forcemysqldump выходит с сообщением об ошибке. С --forcemysqldump печатает сообщение об ошибке, но также записывает комментарий SQL, содержащий определение представления, в вывод дампа и продолжает выполнение.

Застрелен в темноте, но я не думаю, что вам нужно -C во второй половине этого заявления. Согласно моей копии MySQL -C определяет путь к файлу конфигурации для использования.

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