#mysql #backup
Вопрос:
Поэтому я работаю над этим скриптом bash, который должен создать резервную копию обоих production database and work environment database
, это достаточно просто и делается так:
bin/mysqldump.exe -uUsername -p-hHost.com --lock-tables=false --single-transaction --routines --triggers production_database >backups/dump_production_database .sql
bin/mysqldump.exe -uUsername -p-hHost.com --lock-tables=false --single-transaction --routines --triggers testers_database >backups/dump_testers_database .sql
НО testers_database
в данный момент он обновляется вручную, и я хочу, чтобы он обновлялся автоматически.
Тогда я подумал, давайте просто использовать MySql.exe
вот так, чтобы обновить testers_database
:
bin/mysql.exe -uUsername -p -hHost.com testers_database <backups/dump_production_database .sql
НО потом я подумал о проблеме здесь.. What if the developers have added new columns to tables, edits to existing functions or something like that, then this would be overwritten?
Как я должен создать эту mysql.exe
команду, чтобы она не перезаписывала ничего ценного для разработчиков? Могу ли я каким-то образом выполнить проверку подлинности, которая проверяет, есть ли какие-либо новые изменения в функциях/новые столбцы в существующих таблицах и т. Д., А затем не удаляйте эту таблицу и не создавайте старую / просто пропустите эту команду? Или я должен просто забыть об этом automatic update
, и пусть разработчики сами обновят базу данных и подождут 30min for it to complete the database update?
Сейчас, когда они развиваются они проверяют, что он работает на testers_database
, И если все работает, там это реализовано его production_database
вручную, это нормально, но я не хочу, чтобы этот сценарий bash, чтобы разрушить их прогресс/изменение в их test_database только сохранить свои базы данных обновляется с новейшей поисковой все время, так что они не должны делать это сами.
Комментарии:
1. Зачем вам автоматически обновлять базу данных тестировщика, если с базой данных нет проблем? Обычно вы восстанавливаете резервные копии на случай, если с базой данных что-то не так.
2. В основном это связано с тем, что разработчикам неудобно копировать производственную базу данных в свою базу данных test_database, если им нужны последние результаты на их тестовой площадке. Но я мог бы просто создать сценарий без этой
mysql
части, а затем просто попросить их обновить его вручную, когда им понадобятся новые результаты на их игровой площадке. Затем они сами контролируют, когда проверять изменения в своей тестовой среде.3. Маловероятно, что разработчик захочет скопировать всю базу данных prod в среду тестирования / разработки, поскольку такой шаг перезапишет любые изменения, внесенные в структуру. Вам необходимо предоставить разработчикам возможность переносить пользовательские производственные наборы данных в таблицы в среде разработки по требованию. У меня, вероятно, была бы зеркальная база данных производственной базы данных, которую разработчики могут использовать для извлечения данных по требованию.
4. Создайте сценарий, который создает резервную копию базы данных разработчиков и базы данных продуктов. Затем я также создал сценарий .cmd, который могут запускать разработчики (сообщая им, на что повлияет запуск этого сценария .cmd), и если они нажмут [Y] да, база данных test_database будет точной копией базы данных prods_database. Этот скрипт будет создавать только существующие таблицы/функции/stored_procedures, как в базе данных prods_database. Новые таблицы и т.д. будет храниться в базе данных разработчиков. Тогда у них есть простой способ обновить базу данных @Shadow
5. Примечание: у них есть доступ, чтобы сделать все это вручную, если они захотят. но это просто более простой способ убедиться, что все так, как должно быть, а также без необходимости редактировать файлы .sql 5 ГБ .