AWS에서 HA/DR 데이터베이스를 설정하는 방법은 무엇입니까? [3 - 단순 데이터베이스]

7069 단어 terraformdevopssreaws
이 게시물에서는 Terraform을 사용하여 AWS에서 간단한 데이터베이스를 생성하는 방법과 이를 구성하는 방법을 살펴봅니다.


데이터베이스를 만드는 방법?



최소 구성은 다음과 같습니다.

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"을 허용합니다.

engine_version
데이터베이스에 설치할 엔진 버전

instance_class
데이터베이스에 대해 원하는 머신 유형입니다. 필요한 성능에 따라 올바른 것을 선택하는 것이 정말 중요할 수 있습니다. 사용 가능한 인스턴스 유형에 대한 AWS 설명서를 확인하십시오. https://aws.amazon.com/rds/instance-types/

이름
데이터베이스 이름

사용자 이름
루트 계정의 사용자 이름

비밀번호
루트 계정의 비밀번호

매개변수_그룹_이름
데이터베이스를 구성하는 데 사용할 매개변수 그룹입니다. 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
  • 마리아 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
      ...
    }
    


    NOTE: You can set parameter_group_name = "rds-group-perso" in the aws_db_instance and it will also work. But using the parameter from the created resource is cleaner.




    기타 흥미로운 구성 가능한 매개변수



  • 포트 - 데이터베이스에 액세스하기 위해 기본 포트를 변경하려는 경우

  • storage_encrypted - 저장된 데이터를 암호화하려는 경우

  • kms_key_id - 암호화에 사용할 키의 KMS 키 ID

  • enabled_cloudwatch_logs_exports - CloudWatch에서 내보낼 모든 로그 유형을 설정합니다.

  • backup_window - 일일 백업이 생성되는 기간

  • backup_retention_period - 백업을 보관하려는 일수입니다.

  • security_group_names - 데이터베이스에 추가할 보안 그룹 목록입니다. 이것은 데이터베이스에 액세스할 수 있는 사람을 올바르게 제어하는 ​​데 정말 중요한 것입니다.

  • maintenance_window - 유지 관리를 수행할 창입니다.

  • 사용할 수 있는 다른 매개변수가 있습니다. 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 - 시작:

  • 2 - 정의:

  • 3 - 간단한 데이터베이스:

  • 4 - HA 데이터베이스:

  • 5 - DR 데이터베이스:

  • 6 - 스냅샷에서 만들기:

  • 7 - 동적 Terraform 백엔드 정의:

  • 8 - 여러 지역의 여러 인스턴스:

  • 9 - 임의 값 생성:
  • 좋은 웹페이지 즐겨찾기