Создание кластера баз данных
Вы можете создавать кластеры баз данных, состоящие из одной или нескольких баз выбранного типа СУБД.
Панель управления
Создать кластер баз данных можно в панели timeweb.cloud/my в разделе «Базы данных».
Нажмите «Добавить» и укажите параметры создаваемой базы:
- Тип базы данных и ее версия
Доступны следующие базы:- MySQL 5.7, 8
- PostgreSQL 13, 14, 15, 16
- MongoDB 5
- Redis 6
- Opensearch 2.9
- ClickHouse 23.10.1
- Kafka 3.5
- RabbitMQ 3.12
Изменить выбранную БД или ее версию будет невозможно.
- Регион размещения и зона доступности.
- Тариф
Тариф можно будет увеличить в любой момент. Уменьшить тариф невозможно.
- Сеть
В сетевых настройках можно выбрать:- какой внешний IP выдать базе — закрепленный за этой базой или плавающий (последний можно будет передавать другим сервисам на вашем аккаунте);
- приватную сеть — можно выбрать одну из существующих сетей или создать новую.
- Имя базы и пароль пользователя БД
Здесь вы задаете пароль дефолтного пользователя (в дальнейшем вы сможете добавлять других пользователей БД). Пароль можно сгенерировать в панели или указать свой. Вы всегда сможете изменить пароль, как и название базы. Также выберите, в какой проект добавить базу данных.
Нажмите «Заказать», и вы сможете начать работу с базой через пару минут.
Базе будет выдан публичный IP-адрес, который будет доступен в панели управления. Отключить доступ по публичному IP, если это потребуется, вы сможете в настройках базы после ее создания.
При создании кластера для него будут включены бесплатные автоматические бэкапы с ежедневным созданием и хранением одной резервной копии. Изменить настройки можно в настройках кластера на вкладке «Бэкапы».
CLI
Для работы у вас должен быть установлен интерфейс командной строки Timeweb Cloud.
- Ознакомьтесь со справкой по команде создания баз данных:
twc db create --help
- Посмотрите список доступных пресетов:
twc db list-presets
Можно отфильтровать пресеты по типу БД с помощью type
. Например, чтобы получить только пресеты MySQL:
twc db list-presets -f type:mysql
- Создайте базу данных:
twc db create --name db-dev --type mysql8 --login app --preset-id 327
Далее twc
предложит ввести пароль для базы данных. Вместо интерактивного ввода вы можете использовать опцию --password
и ввести пароль прямо в командной строке (может быть небезопасно).
Команда выше создаст инстанс СУБД MySQL 8 db-dev
с пользователем app
. Имя базы данных для подключения будет default_db
.
Получить все параметры подключения можно с помощью команды ниже, заменив 123456
на ваш ID инстанса СУБД:
twc db get -o yaml 123456
Параметры базы данных можно будет изменить в дальнейшем или сразу указать их при создании базы, например:
twc db create --name db-dev --type mysql8 --login app --preset-id 327 --param max_connections=200 --param max_allowed_packet=64M
Базе будет выдан публичный IP-адрес, который будет доступен в панели управления. Отключить доступ по публичному IP, если это потребуется, вы сможете в настройках базы после ее создания.
API
Для создания кластера базы данных воспользуйтесь методом createDatabaseCluster. Отправьте POST-запрос на /api/v1/databases
и передайте в нем параметры создаваемого кластера.
Terraform
Дальнейшее описание предполагает, что у вас уже установлен Terraform, настроен провайдер Timeweb Cloud и инициализирован проект (шаги 1–4 этой инструкции).
- Ознакомьтесь с документацией:
-
- источник данных twc_database_preset;
- ресурс twc_database_cluster;
- ресурс twc_database_instance;
- ресурс twc_database_user;
- ресурс twc_vpc.
Тарифы баз данных можно получить через API: https://api.timeweb.cloud/api/v1/presets/dbs
- В конфигурационном файле опишите параметры кластера БД, который нужно создать. Terraform выберет первый пресет, подходящий под заданные параметры.
Например, с помощью параметров ниже мы создадим следующие сущности:
- Кластер MySQL 5.7
- Локация — Санкт-Петербург
- 2 Гб ОЗУ и 20 Гб диска
- Приватная сеть (локальный IP будет выдан автоматически; на текущий момент назначить его через Terraform невозможно)
- Публичный IP
- Две базы данных
- Два пользователя базы данных
data "twc_database_preset" "preset" {
location = "ru-1"
type = "mysql"
disk = 20 * 1024
ram = 2 * 1024
}
#Создаем приватную сеть
resource "twc_vpc" "example-vpc" {
name = "Example VPC"
description = "Some example VPC"
subnet_v4 = "192.168.0.0/24"
location = "ru-1"
}
#Создаем кластер
resource "twc_database_cluster" "my-cluster" {
name = "My Cluster"
type = "mysql5"
preset_id = data.twc_database_preset.preset.id
network {
id = twc_vpc.example-vpc.id
}
is_external_ip = true
}
#Создаем базу данных
resource "twc_database_instance" "db-instance" {
cluster_id = twc_database_cluster.my-cluster.id
name = "database1"
}
#Создаем еще одну базу данных
resource "twc_database_instance" "second-db-instance" {
cluster_id = twc_database_cluster.my-cluster.id
name = "database2"
}
#Создаем пользователя с доступом ко всем БД
resource "twc_database_user" "test-user-2" {
cluster_id = twc_database_cluster.my-cluster.id
login = "admin"
password = "strongpassword1"
privileges = ["SELECT", "INSERT", "UPDATE", "DELETE"]
}
#Создаем пользователя с доступом к конкретной базе
resource "twc_database_user" "test-user" {
cluster_id = twc_database_cluster.my-cluster.id
login = "newuser"
password = "userpassword1"
instance {
instance_id = twc_database_instance.second-db-instance.id
privileges = ["SELECT", "INSERT", "UPDATE", "DELETE"]
}
}
- Проверьте конфигурацию:
terraform validate
Если в конфигурационном файле есть ошибки, Terraform сообщит о них.
- Проверьте запланированные изменения:
terraform plan
Terraform выведет информацию о создаваемых ресурсах.
- Если все корректно — примените конфигурацию:
terraform apply
Была ли статья полезна?