Инструкция для новичков
Всё, что нужно знать до первого запроса: что за звери такие «база», «строка подключения» и «Kafka», как подключиться, как работают тарифы и квоты и что будет, если не оплатить. Если после этой страницы останутся вопросы — напишите в поддержку, ответим.
Что означает каждый термин
Без этих десяти слов не читается ни одна инструкция в интернете.
| Термин | Что это простыми словами |
|---|---|
| База данных | Место, где приложение хранит данные: пользователей, заказы, сообщения. Это не файл на ноутбуке, а отдельная программа на сервере, к которой подключаются по сети. |
| PostgreSQL (Postgres) | Конкретная база данных. Мы поднимаем её за вас, обновляем и делаем копии. |
| Таблица, строка, колонка | Как лист Excel: таблица users, в ней строки — пользователи, колонки — email, created_at. |
| SQL | Язык запросов: select * from users where id = 1. Его понимает и Postgres, и любой драйвер. |
| Хост (host) | Адрес сервера. У нас infranest.ru. |
| Порт (port) | Номер «двери» на сервере. Для Postgres — 5432, для Kafka — 9093. |
| Пользователь и пароль | Логин и пароль вашей базы. Логин совпадает с названием базы, пароль генерируем мы и показываем один раз. |
| Строка подключения | Одна строка, где собрано всё: postgresql://база:пароль@infranest.ru:5432/база?sslmode=require. Её вставляют в проект вместо ручной настройки. |
| TLS / SSL | Шифрование канала. Пароль и данные идут по сети зашифрованными. У нас TLS обязателен, отказаться нельзя — это защита вас же. |
| PgBouncer | «Швейцар» на входе: держит соединения и не даёт приложению исчерпать лимит. Вы подключаетесь к нему, он — к Postgres. |
| Бэкап | Резервная копия. Мы делаем её каждую ночь и храним две последние копии. |
| Квота | Лимит диска для вашей базы. Указывается в тарифе: 100 МБ, 1 ГБ, 5 ГБ и так далее. |
| Kafka | Не база, а «почта» для программ: один сервис кладёт сообщение, другой забирает. Нужна, когда частей приложения несколько. |
Пять шагов до первого запроса
- Зарегистрируйтесь. Нужны только почта и пароль, карта не требуется. Бесплатная база создаётся сразу.
- Создайте базу. В кабинете нажмите «Создать» — имя базы сервис придумает сам, например
t_3fa1c9. Менять его не нужно и нельзя: это же и логин. Через несколько секунд база готова. - Получите пароль. Кнопка «Получить пароль» создаёт пароль и показывает его один раз: после обновления страницы он скроется. Сохраните в менеджер паролей — восстановить нельзя, только сменить.
- Скопируйте строку подключения. В кабинете есть готовые примеры для psql, DBeaver и языков программирования — копируются в один клик.
- Проверьте. Самый простой способ — psql:
psql "postgresql://t_3fa1c9:ПАРОЛЬ@infranest.ru:5432/t_3fa1c9?sslmode=require" -c "select now();"
Если в ответ пришла дата — всё работает.
infranest.ru, Port 5432, Database и Username — имя вашей базы (в кабинете, вид t_3fa1c9), SSL — require. Пароль — тот, что показали один раз.Что писать в приложение
Обычно достаточно одной строки — приложение само разберёт её на хост, порт, логин и пароль. В примерах ниже t_3fa1c9 — имя базы, которое придумал сервис; своё смотрите в кабинете, оно же будет логином.
DATABASE_URL=postgresql://t_3fa1c9:ПАРОЛЬ@infranest.ru:5432/t_3fa1c9?sslmode=require
Для Java/Spring — обычный JDBC-адрес: jdbc:postgresql://infranest.ru:5432/t_3fa1c9?sslmode=require, логин и пароль отдельными свойствами.
Примеры для каждого языка
Полные, с копированием, лежат в кабинете. Здесь — минимальный рабочий каркас.
Python
import psycopg
conn = psycopg.connect("postgresql://t_3fa1c9:ПАРОЛЬ@infranest.ru:5432/t_3fa1c9?sslmode=require")
with conn.cursor() as cur:
cur.execute("select version()")
print(cur.fetchone())
Node.js
const { Pool } = require("pg");
const db = new Pool({ connectionString: process.env.DATABASE_URL, ssl: true });
const { rows } = await db.query("select now()");
console.log(rows);
Java / Spring Boot
spring.datasource.url=jdbc:postgresql://infranest.ru:5432/t_3fa1c9?sslmode=require spring.datasource.username=t_3fa1c9 spring.datasource.password=ПАРОЛЬ
PHP, Go, .NET
Любой драйвер PostgreSQL подойдёт: PDO с pdo_pgsql, pgx для Go, Npgsql для .NET. Правило одно: строка подключения та же, TLS обязателен.
Пароли, TLS и лимиты
- Один пароль на базу. У каждой базы свой пользователь, соседние базы его не видят.
- Пароль показывается один раз. Мы храним только его хэш. Забыли — сбросьте в кабинете, старый перестанет работать.
- TLS обязателен. Без
sslmode=requireсоединение не установится: так пароль не уйдёт открытым текстом. - Лимит соединений. У Free — 3, у «Недели» и Starter — 10, у Pro — 25. Приложению хватает 5–10; пул соединений в коде лучше ограничить этим числом.
- Долгие запросы прерываются. Ограничение 30 секунд. Это защита общей базы от случайного
select *на миллион строк. - Временные файлы ограничены. От 512 МБ до 4 ГБ в зависимости от тарифа: тяжёлая сортировка не съест диск сервера.
Что сколько стоит
Цена за период тарифа — неделя или месяц, НДС не облагается (УСН). Платить картой через ЮKassa, чек приходит на почту. Одна база на аккаунт на любом тарифе.
| Тариф | Цена | Диск | Соединений | После неоплаты |
|---|---|---|---|---|
| Free | 0 ₽ | 100 МБ | 3 | не истекает |
| Неделя | 69 ₽ за 7 дней | 1 ГБ | 10 | только чтение 3 дня |
| Starter | 129 ₽/мес | 1 ГБ | 10 | только чтение 3 дня |
| Pro | 439 ₽/мес | 5 ГБ | 25 | только чтение 3 дня |
Kafka
| Тариф | Цена | Пользователей | Топиков | Хранение |
|---|---|---|---|---|
| Free | Kafka не входит — только PostgreSQL | |||
| Неделя | 69 ₽ за 7 дней | 4 | 5 | 512 МБ |
| Starter | 129 ₽/мес | 6 | 10 | 1 ГБ |
| Pro | 439 ₽/мес | 20 | 50 | 4 ГБ |
Как перейти на другой тариф
- В кабинете нажмите «Сменить тариф».
- Выберите нужный и оплатите — лимиты диска и соединений применятся сразу после оплаты, база не пересоздаётся.
- Понизить тариф можно, только если данные влезают в новый диск. Иначе сначала почистите базу.
Что будет, если не оплатить
Данные не исчезают в один момент. У вас есть время спокойно продлить или выгрузить всё.
| Когда | Что с базой |
|---|---|
| Оплаченный период закончился | Только чтение. База работает, но запись отклоняется. Это и есть «льготный период»: 3 дня на любом платном тарифе. |
| Льготный период закончился | Приостановка. Вход закрыт, данные лежат на диске ещё 14 дней. Ничего не удалено. |
| Прошли и эти 14 дней | База попадает в список на удаление. Автоудаление сейчас выключено: мы не удаляем данные без предупреждения и делаем финальный дамп. |
pg_dump работает.Что будет, если закончится место
| Заполнено | Что происходит |
|---|---|
| 80% | Письмо на почту: пора прибраться. База работает как обычно. |
| 100% | База становится «только для чтения». Запись отклоняется, чтение работает. Приходит письмо. |
| 120% | Ничего не блокируется мгновенно: даём неделю на чистку, приходит письмо с датой. |
| Неделя прошла | База блокируется: вход закрыт, пока не станет меньше лимита. |
Как почистить
- Удалить ненужные строки:
delete from logs where created_at < now() - interval '30 days'. - Освободить место на диске после удаления:
vacuum full logs(таблица на время блокируется, делайте в простой). - Если подходящих данных больше нет — сменить тариф на больший.
Kafka: зачем и как подключить
Kafka нужна, когда приложение состоит из нескольких частей и они передают друг другу события. Для обычного сайта или бота хватит PostgreSQL.
- Kafka входит в платные тарифы («Неделя», Starter, Pro): после оплаты подписка создаётся сама, с префиксом вида
k_1a2b3c. - Создайте пользователей (Producer — пишет, Consumer — читает) и топики. Имена начинаются с вашего префикса.
- Подключение:
infranest.ru:9093, протоколSASL_SSL, механизмSCRAM-SHA-512, логин и пароль — из кабинета.
spring.kafka.bootstrap-servers=infranest.ru:9093 spring.kafka.properties.security.protocol=SASL_SSL spring.kafka.properties.sasl.mechanism=SCRAM-SHA-512 spring.kafka.properties.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="k_1a2b3c-producer" password="ПАРОЛЬ";
Если подписка не оплачена: сначала «льготный период» — всё работает, потом доступы отключаются, данные остаются. Оплата возвращает доступ.
Частые ошибки и их смысл
| Сообщение | Что значит и что делать |
|---|---|
password authentication failed | Неверный пароль. Сбросьте его в кабинете; проверьте, что не осталось лишних пробелов при копировании. |
no such user или role does not exist | Логин не совпадает с именем базы, или база приостановлена из-за неоплаты. Проверьте статус в кабинете. |
too many clients already / too many connections | Приложение открыло больше соединений, чем разрешает тариф. Ограничьте пул (5–10) или возьмите тариф выше. |
cannot execute INSERT in a read-only transaction | База в режиме «только чтение»: закончился оплаченный период, превышен диск или вы сами включили окно очистки. Смотрите статус в кабинете. |
SSL required / server does not support SSL | В строке подключения нет sslmode=require, либо драйвер старый. TLS у нас обязателен. |
canceling statement due to statement timeout | Запрос выполнялся дольше 30 (60) секунд. Добавьте индексы или ограничьте выборку. |
| Подключение «висит» и не отвечает | Проверьте хост и порт (infranest.ru:5432), а также что провайдер/сеть не блокирует исходящие соединения. |
Куда писать, если не получается
Мы отвечаем в рабочие дни, обычно в течение нескольких часов.
- Почта: support@infranest.ru
- Обращение в кабинете: раздел «Обращения» — там же видна переписка и ответы.
- Что приложить: имя базы, текст ошибки, язык и версию драйвера. Пароль не присылайте никогда.
Free — без карты и без срока. Хватит, чтобы пройти инструкцию и понять, как всё устроено.
Создать базу ↗