2.4 KiB
Runbook Upgrade Database Production
Jangan arahkan .env development ke Production. Lakukan upgrade pada maintenance window dan gunakan salinan staging terbaru terlebih dahulu.
Sebelum perubahan
- Bekukan transaksi dan buat full backup database serta uji restore.
- Catat versi migration Production dan bandingkan struktur, engine, charset, trigger, role, serta foreign key dengan staging.
- Jalankan pemeriksaan berikut:
SELECT no_ref, COUNT(*) total, GROUP_CONCAT(id ORDER BY id) journal_ids
FROM journals GROUP BY no_ref HAVING COUNT(*) > 1;
SELECT r.id, r.nama_role, COUNT(u.id) users
FROM roles r LEFT JOIN users u ON u.role_id=r.id GROUP BY r.id, r.nama_role;
- Rekonsiliasi setiap referensi duplikat terhadap dokumen sumber, invoice, stok, aset, dan bukti bank. Tentukan nomor koreksi bersama bagian Finance. Jangan menjalankan
accountingrepair duplicate_refsdi Production. - Pastikan role bernama
Admintersedia. Tentukan approver Production; seed default menggunakan role tersebut dan wajib ditinjau.
Urutan deployment
- Deploy kode dan backup kedua sesaat sebelum migration.
- Jalankan migration 001–008.
- Konfigurasi
approval_workflowsdanapproval_workflow_stepssesuai matriks otorisasi perusahaan. Uji dengan akun non-pembuat. - Koreksi duplikat Production menggunakan change script yang telah disetujui dan menyimpan mapping nomor lama/baru.
- Jalankan migration 009 untuk unique constraint
journals.no_ref. - Jalankan
php index.php accountingcheck, smoke test submit–approve–post–reverse, laporan, dan tutup/buka periode.
Struktur baru yang wajib dipertahankan
approval_workflows, approval_workflow_steps, approval_requests, approval_actions, dan immutable_audit_logs; trigger trg_immutable_audit_no_update, trg_immutable_audit_no_delete, serta unique index uq_journals_no_ref.
Audit log adalah append-only. Koreksi dilakukan dengan event audit baru, bukan UPDATE/DELETE. Akses langsung database ke tabel audit harus dibatasi untuk user aplikasi; DBA darurat harus masuk prosedur change management.
Untuk perubahan invoice/piutang Tahap 5, lanjutkan dengan PRODUCTION-DB-TAHAP-5.md setelah seluruh langkah Tahap 4 selesai.
Rollback
Rollback schema setelah transaksi baru masuk berisiko menghilangkan kontrol dan tidak disarankan. Jika smoke test gagal, hentikan transaksi, rollback kode, pertahankan tabel kontrol untuk investigasi, atau restore backup penuh setelah persetujuan Finance/DBA.