169 lines
4.5 KiB
Markdown
Executable File
169 lines
4.5 KiB
Markdown
Executable File
# 📊 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`** |