В AWS недавно запущена поддержка автоматического масштабирования хранилищ экземпляров RDS. У нас есть несколько экземпляров RDS с избыточно выделенным хранилищем в нашей производственной среде. Мы хотим использовать эту новую функцию, чтобы сократить некоторые расходы. Поскольку мы не можем уменьшить хранилище действующего экземпляра RDS, нам сначала нужно будет создать экземпляр RDS с меньшим объемом хранилища с поддержкой автоматического масштабирования, а затем перенести существующие данные в новый экземпляр, а затем удалить старый экземпляр.
Мы используем terraform с поставщиком terraform-aws для создания нашей инфраструктуры. Проблема в том, что я не могу достичь вышеуказанной стратегии с помощью терраформ.
Вот что я попробовал:
- Изменить существующий скрипт создания RDS, чтобы создать еще два
Ресурсы.
- Один имеет тип
aws_db_snapshot
, а другой -
aws_db_instance
(с использованием снимка).
- Однако я получаю следующее
ошибка ошибка изменения инстанса БД (test-rds-snapshot):
InvalidParameterCombination: неверный размер хранилища для имени движка
Postgres и тип хранения gp2: 20.
# Existing RDS instance with over provisioned storage
resource "aws_db_instance" "test_rds"{
.
.
.
}
# My changes below
# The snapshot
resource "aws_db_snapshot" "test_snapshot" {
db_instance_identifier = "${aws_db_instance.test_rds.id}"
db_snapshot_identifier = "poc-snapshot"
}
# New instance with autoscale support and reduced storage
resource "aws_db_instance" "test_rds_snapshot" {
identifier = "test-rds-snapshot"
allocated_storage = 20
max_allocated_storage = 50
snapshot_identifier = "${aws_db_snapshot.test_snapshot.id}"
.
.
.
}
Я хочу знать, нахожусь ли я на правильном пути или нет, и смогу ли я перенести производственные базы данных, используя эту стратегию. Дайте мне знать, если вам нужна дополнительная информация.