Бесплатная миграция IT-инфраструктуры в облако
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Создание кластера баз данных

Вы можете создавать кластеры баз данных, состоящие из одной или нескольких баз выбранного типа СУБД.

Панель управления

Создать кластер баз данных можно в панели timeweb.cloud/my в разделе «Базы данных». 

7d9e117e 9245 4da7 B57d E4b02afaf3ce

Нажмите «Добавить» и укажите параметры создаваемой базы:

  1. Тип базы данных и ее версия
    Доступны следующие базы:
    • MySQL 5.7, 8
    • PostgreSQL 13, 14, 15, 16, 17
    • MongoDB 6, 7
    • Redis 6, 7
    • Opensearch 2.9
    • ClickHouse 23.10.1
    • Kafka 3.5.1
    • RabbitMQ 3.12

Изменить выбранную БД или ее версию будет невозможно.

Image3

  1. Регион размещения и зона доступности.

    Выберите регион размещения кластера. Обратите внимание, что создание кластера с репликацией возможно только в BGP-сети и в следующих локациях: Санкт-Петербург, Москва и Нидерланды.

Image2

  1. Конфигурация

    Конфигурацию можно будет изменить в любой момент. Уменьшить конфигурацию невозможно. 

    Для баз данных MySQL и PostgreSQL доступно создание кластера с репликацией. Вы можете указать количество реплик при настройке конфигурации: 3 или 5. Изменить количество реплик после создания кластера будет невозможно. 

    Цена за кластер с репликацией рассчитывается как количество реплик * стоимость одной ноды.

Image5

  1. Сеть
    В сетевых настройках можно выбрать:
    • нужен ли базе публичный IP-адрес. Например, если планируется, что база будет работать только в приватной сети, выпускать для нее публичный IP не требуется. Стоимость публичного IP — 150 рублей в месяц; все публичные IPv4 «плавающие», их можно переносить между разными сервисами на вашем аккаунте;
    • приватную сеть — можно выбрать одну из существующих сетей или создать новую.

A33618fe 9c5e 48a7 9eb7 Fef93cb61413

  1. Дополнительные услуги
    В этом пункте вы можете включить бесплатное создание автоматических бэкапов. По умолчанию бэкапы создаются ежедневно с сохранением одной последней копии. Изменить настройки создания бэкапов можно в настройках кластера, во вкладке «Бэкапы».

Image4

  1. Информация о базе данных
    Здесь вы задаете пароль дефолтного пользователя (в дальнейшем вы сможете добавлять других пользователей БД). Пароль можно сгенерировать в панели или указать свой. Для MySQL доступен выбор типа хэша пароля. Вы всегда сможете изменить пароль, как и название базы. Также выберите, в какой проект добавить базу данных.

Image6

Нажмите «Заказать», и вы сможете начать работу с базой через пару минут.

CLI

Для работы у вас должен быть установлен интерфейс командной строки Timeweb Cloud.

    1. Ознакомьтесь со справкой по команде создания баз данных:
twc db create --help
    1. Посмотрите список доступных пресетов:
twc db list-presets

Можно отфильтровать пресеты по типу БД с помощью type. Например, чтобы получить только пресеты MySQL:

twc db list-presets -f type:mysql
    1. Создайте базу данных:
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 этой инструкции).

    1. Ознакомьтесь с документацией:

Тарифы баз данных можно получить через API: https://api.timeweb.cloud/api/v1/presets/dbs

    1. В конфигурационном файле опишите параметры кластера БД, который нужно создать. 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"] } }
    1. Проверьте конфигурацию:
terraform validate

Если в конфигурационном файле есть ошибки, Terraform сообщит о них.

    1. Проверьте запланированные изменения:
terraform plan

Terraform выведет информацию о создаваемых ресурсах.

    1. Если все корректно — примените конфигурацию:
terraform apply

 

Была ли статья полезна?
Ваша оценка очень важна
Комментарии 4
Дмитрий
Дмитрий
19.09.2024, 22:29

Приведите пожалуйста пример как создать redis через teraform. Подход кластер + инстанс + пользователь как для postgres, как я вижу не подходит. Инстанс как я понимаю создаётся сразу вместе с кластером.

Timeweb Cloud
Timeweb Cloud
20.09.2024, 14:38

Добрый день!

Да, создание инстанса для Redis не подразумевается.

Создать кластер Redis через Terraform действительно не удается 🤔 Мы передали информацию коллегам, чтобы это исправить, но по срокам решения пока сориентировать не сможем. Спасибо, что обратили внимание!

Дмитрий
Дмитрий
16.09.2024, 22:54

Как получить хост базы данных после создания через twc_database_instance для использования в k8s кластере?

Timeweb Cloud
Timeweb Cloud
18.09.2024, 13:25

Добрый день!

Для получения IP-адреса хоста базы данных, который можно использовать для подключения к базе данных в k8s, вы можете воспользоваться выходными переменными (output) в Terraform.

Добавьте следующий блок в ваш .tf-файл:

output "db_ip" {
  value = twc_database_cluster.my-cluster.networks[0].ips[0].ip
}

Где my-cluster — это имя вашего кластера.

Затем выполните команду terraform apply. После успешного выполнения вы сможете получить IP-адрес базы данных командой:

terraform output db_ip

или с использованием опции для вывода чистого значения:

terraform output -raw db_ip

Этот IP-адрес вы можете передать в переменные окружения или конфигурационные файлы в Kubernetes для настройки подключения к базе данных.