Разделение баз данных

Сергей4 месяца в сервисе
Данные заказчика будут вам доступны после подачи заявки
20.12.2025

Моя ситуация (коротко) есть сайт. База находится в Финляндии. В связи с санкциями в рф сайт открывается через раз. есть доменное имя и хост в рф. нужно настроить сайт что б работал и в рф и за пределами.

  • MySQL

  • Есть:

    • 🇷🇺 RU-домен + RU-сервер (ПД РФ хранятся в РФ) ✅

    • 🇪🇺 .com + БД в Финляндии

  • Нужно:

    • синхронизировать работу .com ↔ RU

    • запись данных с обеих сторон

    • нормальная скорость в РФ

  • Трафик: средний

⚠️ Главное ограничение
Персональные данные РФ НЕ должны уходить в EU
→ значит полной bidirectional-репликации делать нельзя


❗ КЛЮЧЕВОЙ ПРИНЦИП

❌ НЕ «одна общая БД»

ДВЕ БД + управляемая синхронизация


✅ РЕКОМЕНДУЕМАЯ АРХИТЕКТУРА (рабочая и легальная)

1️⃣ Разделяем данные логически

В MySQL:

🇷🇺 RU DB (основная для РФ)

Хранит:

  • users (РФ)

  • телефоны, email, адреса

  • заказы РФ

  • платежи РФ

🇪🇺 EU DB (.com)

Хранит:

  • товары

  • категории

  • контент

  • публичные отзывы

  • агрегированные данные (без ПД)


2️⃣ Что и КАК синхронизируем

🔁 Из RU → EU (ограниченно)

МОЖНО передавать:

  • order_id

  • product_id

  • сумма

  • статус

  • timestamps

НЕЛЬЗЯ:

  • ФИО

  • телефон

  • email

  • адрес

  • IP

👉 Используем обезличенные события


🔁 Из EU → RU (свободно)

  • товары

  • цены

  • наличие

  • контент

  • SEO-данные


3️⃣ Техническая реализация (MySQL)

❌ Почему НЕ Master–Master

  • конфликты

  • риск утечки ПД

  • сложная поддержка

  • плохо живёт через границы


✅ Правильный вариант: Event-based Sync

🔹 Запись

RU / EU → Local MySQL → Event → Queue → Receiver → Apply

4️⃣ Инструменты (проверенные)

Очередь

  • RabbitMQ (рекомендую)

  • или Kafka (если уже есть опыт)

  • или Redis Streams (если проще)


Синхронизация

  • Debezium (CDC) — если хочешь автомат

  • или:

    • сервис-слой

    • таблица outbox_events


Открыт к обсуждению. Предлагайте свои варианты и условия


Авторизуйтесь для подачи заявки