Разделение баз данных
Моя ситуация (коротко) есть сайт. База находится в Финляндии. В связи с санкциями в рф сайт открывается через раз. есть доменное имя и хост в рф. нужно настроить сайт что б работал и в рф и за пределами.
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 → Apply4️⃣ Инструменты (проверенные)
Очередь
RabbitMQ (рекомендую)
или Kafka (если уже есть опыт)
или Redis Streams (если проще)
Синхронизация
Debezium (CDC) — если хочешь автомат
или:
сервис-слой
таблица
outbox_events
Открыт к обсуждению. Предлагайте свои варианты и условия