Приветствую вас, товарищи и прошу помощи с такой вот проблемой.
Пишу я небольшой скрипт на bash для бекапа БД MySQL с помощью mysqldump и хочу при передаче ему определенного ключа исключать часть таблиц БД из дампа. Иду следующими шагами:
1. Фомирую список таблиц, пишу их в массив;
2. Из массива формирую строку ' "--ignore-table="db.table_1" --ignore-table="db.table_2" ... --ignore-table="db.table_n"'
3. Создаю дамп структуры БД с ключом --no-data;
4. В зависимости от того, передан ли ключ, запускаю mysqldump либо на полный бекап, либо добавив туда ключ из шага 2:
- mysqldump -u user -pPASSWORD --database db --single-transaction
или
- mysqldump -u user -pPASSWORD --database db --single-transaction --ignore-table="db.table_1" --ignore-table="db.table_2" ... --ignore-table="db.table_n"
Если эти шаги пройти руками - всё работает как нужно: с исключением таблиц работа проходит быстро, размер дампа около 250 Мб (бекапятся только конфигурационные базы). Однако, из скрипта дамп всегда получается полным, хотя я проверял - все переменные формируются верно и содержат нужные для исключения таблицы. Ниже скрин с кодом, а вот
ссылка на код на гитхабе (строки 258-305).