Резервное копирование и восстановление MySQLDump на разных схемах одного и того же сервера

#mysql

Вопрос:

У меня есть промежуточная база данных MySQL, в которой я создал промежуточные таблицы для загрузки данных. Я хочу перенести эту базу данных в Prod, но с использованием только таблиц, необходимых в производстве (вместе со всеми процедурами, событиями и триггерами) mysqldump .

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

Мы опробовали mysqldump команду без --add-drop database , вместо --no-create-db этого, потому что я обеспокоен тем, что во время процесса восстановления операторы «использовать этап» в определениях хранимых процедур могут изменить базу данных и уничтожить мою базу данных этапа. В результате таблицы были скопированы, но процедуры-нет.

Есть ли способ заставить это работать, пока:

A. выберите подмножество таблиц вместе со всеми процедурами и событиями

B. восстановите их в другой схеме

C. БЕЗ риска уничтожения исходной схемы?

Комментарии:

1. B: В выводе из mysqldump инструкции схема не меняется, если -A, --all-databases только не используется опция.

2. C: mysqldump ничего не стирает в исходной схеме.

Ответ №1:

Воспользуйся:

 mysqldump -u username -p password  --hex-blob -R -e --triggers database_name > database_name.sql
 

Вы можете добавлять или удалять параметры из команд дампа в зависимости от ваших потребностей.

--single-transaction — > опция, если вы не хотите или не можете выполнять блокировки таблиц

-d — > -d-это > --no-data для краткости.

-R — > Также подумайте о добавлении > --routines (-R для краткости), если в вашей базе данных есть хранимые процедуры/функции

-B — > Включите команду> CREATE DATABASE . --databases имя базы данных (сокращение: -B имя базы данных)

-r — > Чтобы набор символов вашей оболочки не мешал кодированию, -r schema.sql предпочтительнее >> schema.sql. Также неплохо указать набор символов явно с помощью —default-набор символов=utf8 (или что-то еще). Вы все равно захотите проверить имена наборов в верхней части файла дампа. Я и раньше попадал в ад кодирования кодировки MySQL

--routines — > Также подумайте о добавлении —процедур, если в вашей базе данных есть хранимые процедуры/функции

--hex-blob если в вашей базе данных есть тип данных blob-объекта