Download the PHP package nodir/db-sync without Composer
On this page you can find all versions of the php package nodir/db-sync. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nodir/db-sync
More information about nodir/db-sync
Files in nodir/db-sync
Informations about the package db-sync
Laravel DB Sync
π Production PostgreSQL bazasini local muhitga bir buyruq bilan ko'chiring.
Laravel dasturchilari uchun oddiy va xavfsiz vosita β prod serverdagi PostgreSQL bazasini SSH orqali local kompyuteringizga sinxronlash. Real ma'lumotlar bilan ishlash, debug qilish va test qilishni osonlashtiradi. Docker va oddiy muhit ikkalasida ham ishlaydi.
β¨ Xususiyatlari
- π Xavfsiz β SSH orqali ulanish, prod bazaga faqat o'qish uchun kirish
- β‘ Tez β PostgreSQL'ning native
pg_dump/pg_restorevositalaridan foydalanadi - π― Oddiy β bitta buyruq (
php artisan db:sync-prod) - π‘οΈ Himoyalangan β production muhitda ishlamaydi, har safar tasdiqlash so'raydi
- π§ Avtomatik β sequence'larni o'zi to'g'rilaydi, dump fayllarni o'zi tozalaydi
- π Moslashuvchan β faqat data, fresh migrate, dump saqlash kabi rejimlar bor
- π³ Docker-ready β Docker muhitida ham muammosiz ishlaydi
π Talablar
Ishlash uchun quyidagilar kerak:
| Component | Versiya | Qayerda |
|---|---|---|
| PHP | ^8.1 | Local |
| Laravel | 10.x / 11.x / 12.x | Local |
| PostgreSQL client | 14+ | Local (pg_dump, pg_restore) |
| PostgreSQL server | 14+ | Prod server |
| SSH | Har qanday | Local β Prod |
β οΈ Muhim: Local va Prod'dagi PostgreSQL versiyalari bir xil bo'lishi kerak! Aks holda
transaction_timeoutkabi versiya-spetsifik xatolar chiqishi mumkin.
Local kompyuterda pg_dump va pg_restore o'rnatilganligini tekshiring:
Agar yo'q bo'lsa, Ubuntu/Debian'da:
π¦ O'rnatish
O'zingizga mos variantni tanlang:
- Oddiy muhit (Docker'siz)
- Docker muhiti
Oddiy muhit (Docker'siz)
1-qadam: Composer orqali
π‘ Eslatma:
--devflagi bilan o'rnatilyapti, chunki bu vosita faqat development muhiti uchun.
2-qadam: Config faylni publish qilish (ixtiyoriy)
Sozlamalarni o'zgartirmoqchi bo'lsangiz:
Bu config/db-sync.php faylini yaratadi.
π³ Docker muhiti
Docker'da ishlash uchun 3 ta qo'shimcha qadam bor: konteynerda pg_dump/pg_restore va SSH client bo'lishi kerak, SSH key'lar konteynerga uzatilishi kerak, va PostgreSQL versiyalari mos kelishi kerak.
1-qadam: Dockerfile'ga dependency qo'shish
Dockerfile'ga postgresql-client va openssh-client qo'shing:
2-qadam: SSH key'larni konteynerga uzatish
docker-compose.yml dagi app service'ga volume qo'shing:
π‘
:ro= read-only β konteyner SSH key'larni o'zgartira olmaydi.
3-qadam: PostgreSQL versiyasini moslashtirish
Bu juda muhim! Local va prod'dagi PostgreSQL versiyasi bir xil bo'lishi kerak.
Prod serverdagi versiyani tekshiring:
Keyin docker-compose.yml dagi PostgreSQL image'ni shunga moslang:
Agar versiyani o'zgartirgan bo'lsangiz, eski volume'ni tozalash kerak:
4-qadam: Composer paketni o'rnatish
5-qadam: SSH known_hosts ga server qo'shish
Birinchi marta "host key verification" xatosi chiqmasligi uchun:
6-qadam: Tekshirish
Docker β to'liq docker-compose.yml namunasi
β οΈ Docker'da
DB_HOST:.envdaDB_HOST=localhostemas, balki PostgreSQL service nomi yozing (masalan,DB_HOST=db). Aks holdapg_restorelocal bazani topa olmaydi.
βοΈ Sozlash
1-qadam: SSH key sozlash
Prod serverga parolsiz kirish uchun SSH key ulanishini sozlang:
Tekshiring β parolsiz ishlashi kerak:
2-qadam: .env faylga qo'shish
Laravel loyihangizning .env fayliga quyidagi o'zgaruvchilarni qo'shing:
β οΈ Muhim:
.envfayli.gitignoreda borligiga ishonch hosil qiling. Prod parollari hech qachon Git'ga tushmasligi kerak!
3-qadam: Prod DB parolini topish
Prod serverdagi Laravel .env faylidan oling:
π Foydalanish
Oddiy sync
Barcha ma'lumotlar va schema'ni ko'chirish:
Natija:
Boshqa rejimlar
| Buyruq | Tavsif |
|---|---|
php artisan db:sync-prod |
To'liq sync (schema + data) |
php artisan db:sync-prod --fresh |
Avval migrate:fresh qiladi, keyin data yuklaydi |
php artisan db:sync-prod --data-only |
Faqat ma'lumotlarni oladi (schema tegilmaydi) |
php artisan db:sync-prod --keep-dump |
Dump faylini o'chirmaydi, storage/app/db-sync/ da saqlaydi |
Flaglarni birlashtirish mumkin:
π Xavfsizlik
Nima qilinadi
| Baza | Amal | Tavsif |
|---|---|---|
| Prod | β Faqat o'qiladi | pg_dump faqat SELECT qiladi, hech narsa o'zgartirmaydi |
| Local | β οΈ Qayta yoziladi | Eski jadvallar o'chadi, prod nusxasi bilan almashtiriladi |
Ichki himoyalar
- β Production'da ishlamaydi β
APP_ENV=productionbo'lsa, darhol to'xtaydi - β Tasdiqlash so'raydi β har safar
yesjavobi kerak - π SSH orqali β PostgreSQL portini tashqariga ochmaydi
- π§Ή Tozalash β dump fayllar avtomatik o'chadi (agar
--keep-dumpqo'shilmasa)
Tavsiyalar
-
Sensitive data β agar prod'da real foydalanuvchi ma'lumotlari bo'lsa, sync'dan keyin anonymizatsiya qiling:
-
Backup β birinchi marta ishlatishdan oldin local bazani backup qiling:
- Alohida backup user β production'da
rooto'rniga faqatpg_dumphuquqiga ega alohida SSH user yarating.
π Muammolarni hal qilish
"Permission denied (publickey)"
SSH key to'g'ri sozlanmagan. Qayta sozlang:
"pg_dump: command not found"
Prod serverda PostgreSQL client o'rnatilmagan:
"pg_restore: command not found" (Docker)
Konteyner ichida PostgreSQL client o'rnatilmagan. Dockerfile'ga qo'shing:
Keyin qayta build qiling: docker compose build
"connection to server failed: fe_sendauth: no password supplied"
.env da PROD_DB_PASSWORD yo'q yoki noto'g'ri. Tekshiring:
"unrecognized configuration parameter: transaction_timeout"
Local va prod'dagi PostgreSQL versiyalari farq qiladi. transaction_timeout PostgreSQL 17 da qo'shilgan.
Yechim: Local PostgreSQL'ni prod bilan bir xil versiyaga ko'taring.
Docker'da docker-compose.yml ni o'zgartiring:
Keyin:
"No identities found" (Docker)
SSH key konteynerga uzatilmagan. docker-compose.yml ga volume qo'shing:
Keyin: docker compose restart
"Host key verification failed" (Docker)
Server konteyner ichidagi known_hosts da yo'q:
"pg_restore: error: could not execute query"
Odatda FK (foreign key) ogohlantirishlari, xavfsiz. Agar jiddiy xato bo'lsa, --fresh flagi bilan qayta urinib ko'ring:
Katta bazalarda timeout
.env ga qo'shing:
(7200 soniya = 2 soat)
π Ichki ishlash tamoyili
Oddiy muhitda
Docker muhitida
- SSH orqali prod serverga ulanadi
- Prod'da
pg_dumpishga tushadi, natija local'ga stream bilan kelib tushadi - Local'da
pg_restoreorqali bazaga yoziladi - Sequence'lar avtomatik to'g'rilanadi
- Dump fayl tozalanadi
π£οΈ Yo'l xaritasi
Kelajakda qo'shilishi mumkin bo'lgan xususiyatlar:
- [x] Docker qo'llab-quvvatlash
- [ ] MySQL qo'llab-quvvatlash
- [ ] Bir nechta prod baza profillari
- [ ] Faqat tanlangan jadvallarni sync qilish (
--tables=users,orders) - [ ] Avtomatik anonymizatsiya konfiguratsiyasi
- [ ] Progress bar
π€ Hissa qo'shish
Pull request'lar xush kelibsiz! Katta o'zgarishlar uchun avval issue oching.
- Repository'ni fork qiling
- Feature branch yarating (
git checkout -b feature/zo-r-narsa) - Commit qiling (
git commit -m 'Zo"r narsa qo"shildi') - Push qiling (
git push origin feature/zo-r-narsa) - Pull Request oching
π Litsenziya
MIT License - xohlaganingizcha ishlatishingiz mumkin.
π¨βπ» Muallif
Nodir β Senior PHP Developer, Uzbekistan
- π GitHub: @Nodir7393
- πΌ Ish: Laravel, Yii2, Next.js, PostgreSQL
β Loyihaga yordam berish
Agar paket yoqdi va ishingizga yaragan bo'lsa:
- β GitHub'da yulduzcha qo'ying
- π Topilgan bug'lar haqida xabar bering
- π‘ Yangi g'oyalar bilan bo'lishing
- π’ Do'stlaringiz bilan ulashing
Made with β€οΈ in Uzbekistan πΊπΏ
All versions of db-sync with dependencies
illuminate/console Version ^10.0|^11.0|^12.0
illuminate/support Version ^10.0|^11.0|^12.0
symfony/process Version ^6.0|^7.0