Files
CKB/DATABASE-IMPORT-GUIDE.md

4.5 KiB

📊 Database Import Guide untuk CKB Laravel Application

🚀 Quick Start (Paling Mudah)

Jika Anda baru pertama kali setup aplikasi:

# Jalankan quick setup yang otomatis import database
./docker-quick-setup.sh dev

📥 Manual Import Database

1. Import ke Development Environment

# 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

# 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

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:

# 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:

# 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:

# 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

# 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

# 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

# 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

# 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

# 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