Pinbox24 W3 — Analiza migracji bazy danych (artnet → bms rs0)
Data analizy: 2026-06-30
Autor: Claude Code (sesja p24-infra)
Status: P0 — deadline 2026-07-31
1. Kontekst
Pinbox24 W3 (v32-prod + s3-v32-prod na bms-1) trzyma wszystkie dane produkcyjne na serwerach artnet (eat-hn1.artnet.pl:30071). Serwery artnet są przeznaczone do zamknięcia — opłacamy je bez uzasadnienia biznesowego. Niedostępność artnet = całkowity outage Pinbox24 W3.
Celem jest przeniesienie bazy pinbox24-production na bms rs0 (bms-2 + bms-3, MongoDB 6.x) i decommission artnet.
2. Aktualnie aktywne biura (ostatnie 2 lata)
Analiza wykonana 2026-06-30 przez zapytania mongojs na żywej bazie eat-hn1.artnet.pl.
2.1 Aktywność na podstawie regRecords
| Biuro | ObjectId | regRecords (2 lata) | Ocena |
|---|---|---|---|
| RESO EUROPA | 590c6d334704d811efc9fd5a | 130 887 | Główny aktywny klient |
| Gratus | 5bae738807770e585186308b | 1 152 | Aktywny |
| global office | 5b839f4e37eee31ed198ac6e | 27 | Marginalna aktywność |
| Microsystem 6 | 5b6168e8fffe4c7e0cb5bb95 | 3 | Marginalna aktywność |
2.2 Aktywność na podstawie files (uploadowane pliki Excel)
| Biuro | ObjectId | Pliki (2 lata) |
|---|---|---|
| RESO EUROPA | 590c6d334704d811efc9fd5a | 1 652 |
| Gratus | 5bae738807770e585186308b | 4 |
| Microsystem 6 | 5b6168e8fffe4c7e0cb5bb95 | 2 |
| EAT 3.0 office | 5cb9648308e32961acf1ff1f | 1 |
2.3 Wniosek
- Łącznie biur w bazie: 882
- Aktywnie rejestrujące dane (2 lata): 4 biura
- Dominujący klient: RESO EUROPA — 99%+ ruchu rejestracyjnego
- Łącznie regRecords w całej bazie: ~5,1 mln dokumentów (dane historyczne od 2017+)
- Pozostałe ~878 biur to historyczne/nieaktywne konta — DB jest wspólna, cała musi być przeniesiona
3. Analiza połączenia backendu z bazą
3.1 v32-prod (backend Node.js, mongojs 3.1.0 / mongodb driver 2.x)
- Używa
env.config.js(node-config) → kluczMONGODB_URL - Production URL zawiera wszystkich 3 członków RS artnet:
eat-hn1.artnet.pl:30071, eat-hn2.artnet.pl:30071, eat-hn3.artnet.pl:30071 - Parametry:
replicaSet=rs0, ssl=true, sslValidate=false - RS artnet ma 3 węzły (eat-hn1 + eat-hn2 + eat-hn3), PRIMARY = eat-hn1
- Protokół: OP_QUERY (legacy wire protocol, mongodb driver 2.x)
3.2 s3-v32-prod (microservice plików, Mongoose 4.x / mongodb driver 2.x)
- Używa
node-config→local.jsoverride (mongo.url→DB_URIz env) - Po naprawie 2026-06-30: direct connection do eat-hn1:30071 bez RS (unika RS discovery)
- Baza:
pinbox24-production, authSource:admin, ssl=true - Protokół: OP_QUERY
3.3 Kluczowy problem: niekompatybilność sterownika
| Komponent | Driver | Protokół | MongoDB 4.0 (artnet) | MongoDB 6.x (bms-2/3) |
|---|---|---|---|---|
| v32-prod | mongodb 2.2.11 | OP_QUERY | ✅ działa | ❌ “Unsupported OP_QUERY” |
| s3-v32-prod | mongodb 2.x (via Mongoose 4) | OP_QUERY | ✅ działa | ❌ “Unsupported OP_QUERY” |
| Nowa wersja | mongodb 4.x+ | OP_MSG | — | ✅ wymaga |
MongoDB 6.0 usunął wsparcie dla OP_QUERY. Migracja danych bez rebuildu obrazów Docker = brak działającego v32-prod/s3-v32-prod na nowej bazie.
4. Architektura docelowa na bms rs0
4.1 Osobna baza pinbox24-production na bms rs0
bms rs0 (MongoDB 6.x)
├── [existing] inne bazy (monitoring, n8n, etc.)
└── [NEW] pinbox24-production ← W3 data
├── regRecords ← główna tabela
├── files ← metadane plików
├── businessAddressbook ← 849MB+ (główna baza kontaktów)
├── offices ← 882 biur
└── [60 pozostałych kolekcji]
Analogicznie jak na artnet (artnet rs0 ma pinbox24-production, bms rs0 będzie miał to samo — izolacja przez hostname, nie nazwę bazy).
4.2 Zmiana connection stringa po migracji
Przed (artnet):
mongodb://pinbox_production:PASS@eat-hn1.artnet.pl:30071,eat-hn2:30071,eat-hn3:30071/pinbox24-production?replicaSet=rs0&authSource=admin&ssl=true
Po (bms rs0):
mongodb://pinbox_production:NEW_PASS@bms-2.zintegrowana.online:27017,bms-3.zintegrowana.online:27017/pinbox24-production?replicaSet=rs0&authSource=admin
(ssl=false, bms rs0 ma wewnętrzną sieć, nie wymaga TLS między członkami)
5. Fazy migracji (szczegółowy plan)
Pełny plan: docs/playbooks/pinbox24-w3-artnet-to-bms-migration.md — nie istnieje (planowany,
nigdy nie napisany; zob. faza migracji poniżej jako jedyne aktualne źródło)
| Faza | Nazwa | Opis | Status |
|---|---|---|---|
| 0 | Przygotowanie | Backup DB, weryfikacja rozmiaru, dostęp GitLab | 🔄 Backup w toku (7G+, 2026-06-30) |
| 1 | Migracja danych | mongodump → mongorestore na bms-2 | ⏳ Czeka na ukończenie backup |
| 2 | Rebuild sterowników | Rebuild obrazów Docker (mongodb driver 4.x+) | ⏳ Wymaga dostępu do kodu źródłowego GitLab |
| 3 | Cutover | Zmiana connection string, restart kontenerów | ⏳ Wymaga okna serwisowego |
| 4 | Decommission artnet | Wysyłka pisma o rezygnacji, usunięcie danych | ⏳ Po Fazie 3 |
6. Backup
- Lokalizacja backup:
/root/backups/w3-pinbox24-full-2026/(bms-1) - Start: 2026-06-30 ~16:25 UTC, PID 4026415
- Rozmiar w trakcie: 7.1G (kolekcja
registries14.7% z 43,788 docs,process.configs57%) - Log:
/root/backups/mongodump-full.log - Poprzedni partial backup:
/root/backups/w3-pinbox24-20260630-162510/(3.2G, urwany po 5 min)
Weryfikacja po ukończeniu:
# Na bms-1
tail -5 /root/backups/mongodump-full.log | grep -v pass
du -sh /root/backups/w3-pinbox24-full-2026/
ls /root/backups/w3-pinbox24-full-2026/pinbox24-production/ | wc -l7. Ocena ryzyka
| Ryzyko | Prawdopodobieństwo | Wpływ | Mitygacja |
|---|---|---|---|
| Niedostępność artnet przed migracją | WYSOKIE (serwery do zamknięcia) | KRYTYCZNY (outage W3) | Pilna realizacja Fazy 0–2 |
| Utrata danych podczas mongorestore | NISKIE | KRYTYCZNY | Backup + weryfikacja checksum |
| Brak dostępu do kodu GitLab (rebuild) | ŚREDNIE | WYSOKI | Zgłoszenie do klienta/arch |
| Okno serwisowe > 1h | NISKIE | ŚREDNI | Przygotowanie rollback plan |
| Konto pinbox_production na bms rs0 | BRAK (do utworzenia) | WYSOKI | Krok w Fazie 1 |
8. Zależności i akcje ludzkie
| # | Akcja | Kto | Kiedy |
|---|---|---|---|
| 1 | Dostęp do kodu źródłowego GitLab (v32-prod, s3-v32-prod) | Radek | ASAP |
| 2 | Zatwierdzenie okna serwisowego dla cutover | Radek | przed Fazą 3 |
| 3 | Wysyłka pisma wypowiedzenia artnet | Radek | po Fazie 3 |
| 4 | Aktualizacja connection strings w backend-environment.env | Claude (p24-infra session) | Faza 3 |
9. Powiązane dokumenty
- artnet-resignation-letter.md — szablon pisma do artnet
docs/playbooks/pinbox24-w3-artnet-to-bms-migration.md— szczegółowy plan 5-fazowy — plik nie istnieje (planowany, nie napisany)docs/playbooks/pinbox24-w3-excel-import-422-incident.md— incydent 2026-06-30 — plik nie istnieje (planowany, nie napisany)- pinbox24-s3-wasabi-bms1.md — Wasabi/S3 config
- mongodb-credential-rotation.md — rotacja credentials
Dokument wygenerowany przez Claude Code (sesja p24-infra) na podstawie live query 2026-06-30.