Я пытаюсь понять, как исключить или включить определенные таблицы при выполнении команды mysqldump на AWS через терминал.
Предыстория: у меня есть мультисайт WordPress, но мне нужны только таблицы с первыми тремя символами «wp_», все остальные таблицы с префиксами типа «wp_1», «wp_2» и т. Д. Мне не нужен файл дампа.
Вот код, который я использую для создания файла дампа, который работает, но захватывает все таблицы в базе данных:
mysqldump -h RDS instance endpoint \
-u user \
-p databasename \
--port=3306 \
--single-transaction \
--routines \
--triggers \
--databases databasename > path/rds-dump.sql
Спасибо!
Одна вещь, которую я реализовал, когда столкнулся с такой же проблемой, - это то, что я создал файл со всеми необходимыми именами таблиц. Теперь мне просто нужно пройтись по файлу, взять дамп каждой таблицы и добавить его в тот же файл дампа. Например:
for i in $(cat requiredtables.txt);do mysqldump -h RDS_instance -u user -p'password' db_name $i >> db_dump.sql;done
Это невозможно, но вы всегда можете выгрузить всю базу данных и создать запрос SQL, который удаляет ненужные таблицы. Однако это не сократит время mysqldump.
Я смотрел на это некоторое время назад, когда перемещал свои собственные веб-сайты, и пришел к выводу, что это невозможно. Вероятно, есть способ обработать файл дампа после экспорта, но я, вероятно, не стал бы беспокоиться без действительно уважительной причины.