В этом посте мы рассмотрим, как создать простую базу данных в AWS с помощью Terraform и как ее настроить.
Как создать базу данных?
Минимальная конфигурация выглядит следующим образом:
resource "aws_db_instance" "default" {
allocated_storage = 10
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t3.micro"
name = "mydb"
username = "random_user"
password = "random_pwd"
parameter_group_name = "default.mysql5.7"
skip_final_snapshot = true
}
параметр | определение |
---|---|
выделенное_хранилище | Размер вашей базы данных в Go |
движок | Какой тип базы данных вы хотите. AWS допускает как минимум «aurora», «MySql», «PostgreSQL», «MariaDB» и «Oracle». |
версия_движка | Версия движка для установки на базу данных |
класс_экземпляра | Тип машины, которую вы хотите использовать для вашей базы данных. В зависимости от производительности, которая вам нужна, может быть очень важно выбрать правильный экземпляр. Проверьте документацию AWS о доступных типах экземпляров: https://aws.amazon.com/rds/instance-types/. |
имя | Имя базы данных |
имя пользователя | Имя пользователя учетной записи root |
пароль | Пароль учетной записи root |
имя_группы_параметров | Группа параметров для использования при настройке базы данных. Вы можете использовать группу со значениями по умолчанию, определенными AWS. |
skip_final_snapshot | Установите значение false, если вы хотите генерировать моментальный снимок базы данных при удалении. В противном случае установите значение true. |
Как создать пользовательскую группу параметров?
Мы видели, что можно определить группу параметров для переопределения некоторых конфигураций базы данных.
Для этого создайте aws_db_parameter_group, и, как в следующем примере, вы можете изменить кодировку.
resource "aws_db_parameter_group" "default" {
name = "rds-group-perso"
family = "mysql5.6"
parameter {
name = "character_set_server"
value = "utf8"
}
parameter {
name = "character_set_client"
value = "utf8"
}
}
Все доступные параметры перечислены в документации AWS :
- MySQL : https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.html
- PostgreSQL : https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Reference.ParameterGroups.html
- Maria DB : https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MariaDB.Parameters.html
- PostgreSQL : https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.Parameters
Затем вы можете правильно обновить значение в aws_db_instance, чтобы использовать эту вновь созданную группу параметров.
resource "aws_db_instance" "default" {
...
parameter_group_name = aws_db_parameter_group.aws_db_parameter_group.id
...
}
ПРИМЕЧАНИЕ: Вы можете установить имя параметра_group_name = «rds-group-perso» в aws_db_instance, и это также будет работать. Но использование параметра из созданного ресурса является более чистым.
Другие интересные настраиваемые параметры
- port — Если вы хотите изменить порт по умолчанию для доступа к базе данных
- storage_encrypted — Если вы хотите зашифровать хранимые данные
- kms_key_id — Идентификатор ключа KMS, который будет использоваться для шифрования.
- enabled_cloudwatch_logs_exports — Чтобы установить все типы журналов, которые вы хотите экспортировать в CloudWatch.
- backup_window — Период дня, когда создаются ежедневные резервные копии
- backup_retention_period — Количество дней, в течение которых необходимо сохранять резервные копии.
- security_group_names — Список групп безопасности для добавления в базу данных. Это очень важный параметр, позволяющий правильно контролировать, кто может получить доступ к вашей базе данных.
- maintenance_window — Окно, в котором будет выполняться обслуживание.
Есть и другие параметры, ознакомьтесь с ними в документации Terraform.
Ссылки
Terraform
- aws_db_instance : https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance
- aws_db_parameter_group : https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_parameter_group
Надеюсь, это поможет вам! ?
И до скорой встречи в следующей части этой серии. ?
Ссылка на серию
- 1 — Начало : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-1-1ko7
- 2 — Определения : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-2-definitions-93p
- 3 — Простая база данных : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-3-simple-database-a9o
- 4 — База данных HA : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-4-ha-database-4kek
- 5 — База данных DR : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-5-dr-database-278b
- 6 — Создание из моментального снимка : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-6-create-from-snapshot-2mbf
- 7 — Определение бэкенда Dynamic Terraform : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-7-dynamic-terraform-backend-definition-3aga
- 8 — Несколько экземпляров в нескольких регионах : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-8-multiple-instances-in-multiple-regions-210d
- 9 — Генерирование случайного значения : https://dev.to/adaendra/how-to-setup-a-hadr-database-in-aws-9-generate-a-random-value-5g8a