В этой части серии мы рассмотрим, как (наконец-то) создать базу данных с системой аварийного восстановления.
Создание глобальной базы данных
Теперь, когда у нас есть кластер баз данных, мы можем легко создать несколько таких баз данных в нескольких регионах и связать их в глобальную базу данных.
Поэтому, как минимум, нам нужно создать 2 кластера в 2 регионах, и мы создадим aws_rds_global_cluster.
Определение aws_rds_global_cluster
resource "aws_rds_global_cluster" "example" {
global_cluster_identifier = "global-test"
engine = "aurora"
engine_version = "5.6.mysql_aurora.1.22.2"
database_name = "example_db"
}
В этом примере мы видим, что здесь определены некоторые общие параметры, такие как движок, его версия или имя базы данных для поддержания единообразия среди всех баз данных.
Обновления в определениях кластеров
Поскольку вы будете использовать глобальную базу данных, вам необходимо связать ваши кластеры с глобальной базой данных.
global_cluster_identifier = aws_rds_global_cluster.example.id
Затем на все вторичные кластеры можно добавить depends_on, чтобы быть уверенным, что они будут созданы после глобального и первичного.
depends_on = [
aws_rds_global_cluster.example,
aws_rds_cluster.default
]
Кроме того, некоторые параметры больше не требуются (поскольку они теперь определены в глобальной базе данных), например :
- имя_хозяина
- мастер_пароль
- имя_базы данных
Затем, если вы хотите создать все элементы в одном скрипте Terraform, вам придется объявить несколько провайдеров для каждого региона, где вы хотите создать кластер. (Полная информация будет дана в следующем посте).
Использование глобального кластера
Доступ к базе данных
Глобальный кластер не имеет определенной конечной точки для доступа к базе данных с правами чтения/записи и другой для всех баз данных, доступных только для чтения.
Каждый кластер будет создавать свои собственные конечные точки.
Для основного кластера будут работать обе конечные точки.
Для другого кластера будет работать только конечная точка только для чтения.
Это нормально, это нужно для того, чтобы иметь только одну главную точку входа и реплицировать обновление на все остальные базы данных.
Но регион больше недоступен или если вы вручную выполняете обход отказа для смены основного региона, конечная точка чтения/записи первого региона будет отключена и включена конечная точка нового основного региона.
Как выполнить обход отказа вручную?
В веб-консоли AWS выберите вашу глобальную базу данных и в действиях у вас будет Fail over global database. Нажмите на него, и переключение произойдет!
Ссылки
- Документация по Terraform: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_global_cluster
- Документация по отказоустойчивой глобальной базе данных AWS : https://aws.amazon.com/blogs/database/managed-planned-failovers-with-amazon-aurora-global-database/
Надеюсь, это поможет вам! ?
И до скорой встречи в следующей части этой серии. ?
Ссылка на серию
- 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 — Динамическое определение бэкенда 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