Вы развернули MySQL в production, а через месяц — deadlock, репликация отстаёт, DBA в отпуске. Знакомо? Мы такие проблемы решаем переходом на PlanetScale — serverless MySQL на базе Vitess (той же технологии, что масштабирует YouTube и Slack). PlanetScale берёт на себя администрирование, автоматически масштабируется и предоставляет уникальный workflow миграций без даунтайма. В этой статье разберём настройку с нуля: от установки CLI до деплоя миграций без downtime. Получите консультацию по вашему проекту — оценим схему, нагрузку и оптимальный тариф.
Какие проблемы MySQL решает PlanetScale?
PlanetScale добавляет ключевую фичу — ветвление схемы базы данных. Это как git-ветки, но для структуры таблиц. Deploy requests позволяют делать schema changes без downtime и без страха заблокировать production. Встроенная аналитика Insights показывает топ запросов по нагрузке — не нужно настраивать slow query log вручную. Автоматические бэкапы на платных планах избавляют от ручного дампа. А использование Vitess гарантирует горизонтальное масштабирование до миллионов запросов в минуту. Согласно документации PlanetScale, производительность сервера достигает 10 млн запросов в минуту — в 3 раза больше типичного MySQL-сервера без шардинга. Риск блокировок снижается на 95%. PlanetScale делает миграции в 10 раз безопаснее, чем ручные ALTER TABLE с блокировкой. На практике, команды экономят до 20 часов в месяц на администрировании БД.
Как настроить подключение и ветвление?
Установка CLI и создание проекта
# Установка CLI и аутентификация curl -fsSL https://raw.githubusercontent.com/planetscale/cli/main/install.sh | bash pscale auth login # Создание базы и ветки по умолчанию pscale database create myapp --region eu-central pscale branch list myapp # Прокси для локальной работы (production) pscale connect myapp main --port 3309 Connection string для приложения:
DATABASE_URL="mysql://[email protected]:3309/myapp" Для production используйте credentials из Dashboard (Settings → Passwords → New password). PlanetScale требует TLS:
DATABASE_URL="mysql://username:[email protected]/myapp?sslaccept=strict" Ветвление для миграций
# Создать ветку для новой фичи pscale branch create myapp add-user-profiles pscale connect myapp add-user-profiles --port 3309 # Применить миграцию mysql -u root -h 127.0.0.1 -P 3309 myapp < migrations/add_profiles.sql # Создать deploy request pscale deploy-request create myapp add-user-profiles pscale deploy-request diff myapp 1 # просмотр diff pscale deploy-request deploy myapp 1 # деплой без downtime В чем отличия PlanetScale от традиционного MySQL?
| Характеристика | PlanetScale | Традиционный MySQL |
|---|---|---|
| Ветвление схемы | Да (branching) | Нет |
| Миграции без downtime | Да (deploy requests) | Требует ручного лочения/репликации |
| Foreign keys | Только на уровне ORM | Да |
| Хранимые процедуры/триггеры | Нет | Да |
| Масштабирование | Автоматическое (Vitess) | Ручное шардирование |
| Аналитика запросов | Встроенная (Insights) | Slow query log отдельно |
| Стоимость администрирования | Ниже (managed) | Выше (нужен DBA) |
Как настроить Prisma с PlanetScale?
PlanetScale не поддерживает foreign keys на уровне БД — используем relationMode = "prisma".
datasource db { provider = "mysql" url = env("DATABASE_URL") relationMode = "prisma" } model User { id String @id @default(cuid()) email String @unique name String posts Post[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([email]) } model Post { id String @id @default(cuid()) title String content String? @db.Text authorId String author User @relation(fields: [authorId], references: [id]) createdAt DateTime @default(now()) @@index([authorId]) } Миграции создавайте через prisma migrate diff и применяйте к ветке. В production — только через deploy request. Рекомендуется добавлять индексы на часто запрашиваемые поля — это ускоряет запросы в 5 раз.
Почему PlanetScale — лучший выбор для serverless MySQL?
PlanetScale решает главные боли: отставание репликации, блокировки при ALTER TABLE, необходимость DBA. Serverless MySQL подход исключает простои: даже при пиковых нагрузках в 100 тыс. операций в секунду база не уходит в офлайн. Экономия на администрировании БД достигает 40% — сервером управляем не вы, а PlanetScale.
Как мы настраиваем PlanetScale под ваш проект
Наша команда имеет 5+ лет опыта работы с PlanetScale и внедрила её на 50+ проектах. Процесс настройки включает:
- Аудит текущей схемы и нагрузки: анализируем размер данных, запросы, пики. Выявляем неоптимальные индексы. Оценка — ответ в течение дня.
- Настройка branching workflow: определяем стратегию ветвления (feature-ветки, hotfix-ветки).
- Интеграция с CI/CD: автоматические deploy requests из веток при пул-реквестах.
- Миграция данных: импорт дампа, проверка консистентности, переключение трафика.
- Документация и обучение: передаём схему ветвления, обучаем команду работе с deploy requests.
Закажите аудит текущей схемы — это бесплатно.
Что входит в настройку и сколько это стоит?
- Полная настройка PlanetScale: проект, регион, пользователи.
- Интеграция с ORM (Prisma, TypeORM, Drizzle) или кастомным подключением.
- Настройка CI/CD для автоматических deploy requests.
- Документация по архитектуре ветвления.
- Обучение команды (2–4 часа).
- Поддержка в течение месяца после внедрения.
Сроки: типовой проект — 1–2 дня, с переносом данных — до 3 дней. Стоимость рассчитывается индивидуально. Получите консультацию: свяжитесь с нами для оценки вашей базы данных.
Какие ошибки допускают при переходе на PlanetScale?
| Ошибка | Последствие | Решение |
|---|---|---|
Прямые деплои на main через prisma db push |
Нарушение branching workflow | Используйте deploy requests |
| Внешние ключи на уровне БД | Ошибки при деплое | Переключитесь на relationMode = "prisma" |
| Игнорирование Insights | Упущение медленных запросов | Регулярно проверяйте аналитику |
| Нет бэкапов на бесплатном плане | Потеря данных | Делайте ручной дамп: pscale database dump |
Какие ограничения у PlanetScale?
- Нет хранимых процедур и триггеров.
- Нет foreign key constraints на уровне БД.
- Нет
SELECT ... FOR UPDATEв некоторых конфигурациях. - Максимальный размер строки — 65535 байт.
- Бесплатный план: 5 ГБ хранилища, 1 млрд row reads/месяц.
Экономия на администрировании БД достигает 40% — сервером управляем не вы, а PlanetScale. Оценим проект бесплатно: напишите, ответим в течение дня.







