«Заменить» в терминологии Terraform означает уничтожить существующий объект и создать новый для его замены. Символ +/-
(в отличие от -/+
) указывает, что этот конкретный ресурс будет заменен в режиме «создать перед уничтожением», когда во время операции на короткое время будут существовать два экземпляра базы данных. (Это может или не может быть возможным на практике, в зависимости от того, изменяется ли имя экземпляра как часть этой операции.)
Для aws_db_instance
, в частности, уничтожение экземпляра эквивалентно удалению экземпляра в Консоль RDS: если у вас нет резервной копии содержимого базы данных, она будет потеряна. Даже если у вас есть резервная копия, вам нужно будет восстановить ее через консоль RDS или API, а не с помощью Terraform, потому что Terraform не знает о механизме резервного копирования / восстановления и поэтому его идея «создать "означает создание совершенно новой, пустой базы данных.
Подводя итог: применение такого плана напрямую, безусловно, не обычно« безопасно », потому что Terraform планирует уничтожить вашу базу данных и все содержимое вместе с ним.
Если вам требуется для внесения изменений в вашу базу данных, которые невозможно выполнить без создания совершенно нового экземпляра RDS, вам обычно необходимо внести эти изменения за пределами Terraform с использованием инструментов RDS c, чтобы вы могли реализовать некоторый процесс для передачи данных между старым и новым экземплярами, будь то резервное копирование и последующее восстановление (что потребует временного отключения) или временный запуск обоих экземпляров и настройка включите репликацию от старого к новому, пока вы не будете готовы отключить старую. Детали такой миграции выходят за рамки Terraform, потому что они указаны c для любого движка базы данных, который вы используете.