#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-объекта