# 📊 Database Import Guide untuk CKB Laravel Application ## 🚀 Quick Start (Paling Mudah) Jika Anda baru pertama kali setup aplikasi: ```bash # Jalankan quick setup yang otomatis import database ./docker-quick-setup.sh dev ``` ## 📥 Manual Import Database ### 1. Import ke Development Environment ```bash # Pastikan containers berjalan terlebih dahulu ./docker-start.sh dev up # Import database ckb.sql ./docker-import-db.sh dev # Atau import file SQL lain ./docker-import-db.sh dev nama-file-backup.sql ``` ### 2. Import ke Production Environment ```bash # Start production environment ./docker-start.sh prod up # Import database ./docker-import-db.sh prod # Atau dengan file khusus ./docker-import-db.sh prod production-backup.sql ``` ## 🔄 Auto Import (Recommended untuk First Time Setup) Ketika Anda menjalankan Docker containers untuk pertama kali, file `ckb.sql` akan otomatis diimport ke database. Ini terjadi karena: 1. File `ckb.sql` di-mount ke `/docker-entrypoint-initdb.d/01-init.sql` di MySQL container 2. MySQL otomatis menjalankan semua file `.sql` di direktori tersebut saat inisialisasi 3. Auto import hanya terjadi jika database kosong/belum ada ## 🛠️ Troubleshooting Import ### Problem: Database tidak terimport otomatis **Solusi:** ```bash # 1. Stop containers docker-compose down # 2. Hapus volume database (HATI-HATI: akan hapus data!) docker-compose down -v # 3. Start ulang (akan trigger auto import) docker-compose up -d # 4. Atau import manual ./docker-import-db.sh dev ``` ### Problem: Permission denied saat import **Solusi:** ```bash # Pastikan script executable chmod +x docker-import-db.sh chmod +x docker-quick-setup.sh # Pastikan file SQL readable chmod 644 ckb.sql ``` ### Problem: Database terlalu besar, import timeout **Solusi:** ```bash # Import langsung ke container dengan timeout yang lebih besar docker-compose exec -T db mysql -u root -proot ckb_db < ckb.sql # Atau split file SQL jika sangat besar split -l 10000 ckb.sql ckb_split_ # Kemudian import satu per satu ``` ## 📋 Verifikasi Import Berhasil ### 1. Cek via phpMyAdmin - Buka http://localhost:8080 - Login dengan: server=db, username=root, password=root - Pilih database `ckb_db` - Lihat tabel yang sudah terimport ### 2. Cek via Command Line ```bash # Lihat daftar tabel docker-compose exec db mysql -u root -proot -e "USE ckb_db; SHOW TABLES;" # Hitung jumlah tabel docker-compose exec db mysql -u root -proot -e "USE ckb_db; SELECT COUNT(*) as total_tables FROM information_schema.tables WHERE table_schema='ckb_db';" # Lihat contoh data dari salah satu tabel docker-compose exec db mysql -u root -proot -e "USE ckb_db; SELECT * FROM users LIMIT 5;" ``` ### 3. Test Aplikasi Laravel ```bash # Cek koneksi database dari Laravel docker-compose exec app php artisan tinker # Di dalam tinker: # DB::connection()->getPdo(); # \App\Models\User::count(); ``` ## 💾 Backup Database ### Backup Development ```bash # Backup dengan timestamp docker-compose exec db mysqldump -u root -proot ckb_db > backup_dev_$(date +%Y%m%d_%H%M%S).sql # Backup sederhana docker-compose exec db mysqldump -u root -proot ckb_db > backup_current.sql ``` ### Backup Production ```bash # Backup production database docker-compose -f docker-compose.prod.yml exec db mysqldump -u root -p ckb_production > backup_prod_$(date +%Y%m%d_%H%M%S).sql ``` ## 🔄 Replace Database dengan Backup Baru ```bash # 1. Backup database saat ini (safety) docker-compose exec db mysqldump -u root -proot ckb_db > backup_before_replace.sql # 2. Import database baru ./docker-import-db.sh dev new-backup.sql # 3. Clear Laravel cache docker-compose exec app php artisan cache:clear docker-compose exec app php artisan config:clear ``` ## 📝 Notes Penting 1. **File ckb.sql**: Pastikan file ini selalu ada di root project untuk auto-import 2. **Backup Safety**: Script import otomatis membuat backup sebelum replace database 3. **Environment**: Selalu pastikan Anda menggunakan environment yang benar (dev/prod) 4. **Permissions**: Database user harus punya permission CREATE, DROP, INSERT untuk import 5. **Size Limit**: File SQL besar (>100MB) mungkin perlu setting timeout MySQL yang lebih besar ## 🎯 Best Practices 1. **Selalu backup** sebelum import database baru 2. **Test di development** dulu sebelum import ke production 3. **Gunakan quick setup** untuk setup pertama kali 4. **Monitor logs** saat import: `docker-compose logs -f db` 5. **Verify data** setelah import berhasil --- **Untuk bantuan lebih lanjut, lihat file `DOCKER-README.md` atau `docker-import-db.sh --help`**