Cara Restore PostgreSQL Database daripada Backup

Cara Restore PostgreSQL Database daripada Backup

Panduan Lengkap Cara Restore PostgreSQL Database daripada Backup

Kehilangan data dalam pangkalan data boleh berlaku bila-bila masa sahaja, sama ada disebabkan oleh kesilapan manusia, kegagalan perkakasan, atau serangan siber. Bagi pentadbir sistem atau pembangun aplikasi, mengetahui cara restore postgresql backup dengan betul adalah satu kemahiran kritikal untuk memastikan kesinambungan perniagaan. Proses pemulihan bukan sekadar menjalankan satu arahan, tetapi ia melibatkan langkah keselamatan bagi mengelakkan data sedia ada daripada rosak lebih teruk.

Dalam dunia pengurusan data, strategi backup yang baik tidak bermakna jika anda tidak tahu bagaimana untuk mengembalikannya semula ke keadaan asal. Banyak organisasi terperangkap dalam situasi di mana mereka mempunyai fail backup, tetapi gagal melakukan proses restore kerana tidak memahami perbezaan antara format fail SQL biasa dan format custom archive. Artikel ini akan membimbing anda langkah demi langkah untuk memulihkan data anda dengan selamat dan efisien.

Sebelum kita terjun lebih dalam, pastikan anda mempunyai akses pentadbir (superuser) pada pelayan PostgreSQL anda. Proses pemulihan biasanya memerlukan kebenaran tinggi untuk mencipta semula jadual, indeks, dan kekangan (constraints) yang terdapat dalam fail backup tersebut.

Memahami Jenis Backup PostgreSQL

Sebelum melakukan proses restore postgresql backup, anda perlu tahu jenis fail yang anda miliki. PostgreSQL menyediakan dua kaedah utama untuk backup, dan setiap satu mempunyai cara restore yang berbeza. Jika anda tersalah guna alat pemulihan, proses tersebut akan gagal atau menghasilkan ralat sintaks.

Plain Text SQL Format (pg_dump)

Format ini adalah fail teks biasa yang mengandungi arahan SQL seperti CREATE TABLE dan INSERT INTO. Ia sangat mudah dibaca oleh manusia dan boleh dibuka menggunakan editor teks seperti Notepad++ atau VS Code. Untuk memulihkan fail jenis ini, kita biasanya menggunakan utiliti psql.

Custom, Tar, dan Directory Format (pg_dump -Fc)

Format custom adalah fail binari yang lebih mampat dan fleksibel. Ia tidak boleh dibaca secara terus tetapi membolehkan anda memilih item tertentu untuk dipulihkan (selective restore). Untuk fail jenis ini, anda wajib menggunakan alat pg_restore.

Ciri-ciri Plain Text (.sql) Custom Format (.dump / .bak)
Saiz Fail Lebih Besar Lebih Kecil (Mampat)
Alat Restore psql pg_restore
Kelajuan Restore Sederhana Lebih Pantas
Fleksibiliti Kena restore semua Boleh pilih jadual tertentu

Langkah Demi Langkah Restore PostgreSQL Backup

Proses pemulihan data harus dilakukan dengan berhati-hati. Jangan sesekali melakukan restore terus ke atas database produksi tanpa membuat salinan sandaran tambahan terlebih dahulu.

Kaedah 1: Restore Menggunakan psql (Untuk Fail .sql)

Jika backup anda adalah dalam format teks SQL, anda boleh menggunakan arahan psql. Ini adalah cara paling asas dan kerap digunakan untuk database bersaiz kecil.

  1. Buka terminal atau command prompt anda.
  2. Pastikan database sasaran sudah dicipta. Jika belum, jalankan arahan: CREATE DATABASE nama_database;
  3. Gunakan arahan berikut untuk memulihkan data:

    psql -U username -d nama_database -f fail_backup.sql

  4. Masukkan kata laluan apabila diminta.

Dalam contoh ini, -U merujuk kepada username pengguna, -d adalah nama database yang ingin dipulihkan, dan -f adalah lokasi fail backup anda. Jika anda menggunakan Windows, pastikan path ke fail tersebut adalah tepat.

Kaedah 2: Restore Menggunakan pg_restore (Untuk Fail Custom)

Untuk fail yang dihasilkan dengan flag -Fc, anda perlu menggunakan pg_restore. Alat ini jauh lebih berkuasa kerana ia boleh menjalankan proses pemulihan secara selari (parallel) untuk mempercepatkan masa.

  1. Sediakan database kosong yang akan menerima data tersebut.
  2. Jalankan arahan berikut:

    pg_restore -U username -d nama_database -v "C:\path\to\backup_file.dump"

  3. Flag -v (verbose) sangat penting supaya anda boleh melihat proses yang sedang berlaku dan mengesan jika ada ralat pada jadual tertentu.

Jika anda ingin memulihkan data ke dalam database yang sudah mempunyai data, anda boleh menambah flag --clean. Flag ini akan memadam objek database sebelum menciptanya semula, namun ia hanya berfungsi jika backup dibuat menggunakan flag --clean` semasa proses dump.

Tip Profesional: Jika anda menguruskan banyak laman web dan pangkalan data, pertimbangkan untuk melanggan website maintenance packages bagi memastikan proses backup dan restore dikendalikan oleh pakar secara automatik.

Strategi Pemulihan Selamat dan Pengesahan Data

Melakukan restore postgresql backup bukan sekadar menjalankan arahan dan menutup terminal. Terdapat beberapa langkah pengesahan yang perlu dilakukan untuk memastikan data yang dipulihkan adalah konsisten dan tidak korup.

Gunakan Database Sementara (Staging)

Jangan terus restore ke database produksi. Cara paling selamat adalah dengan mencipta database sementara, contohnya test_restore_db. Lakukan proses restore di situ terlebih dahulu. Jika semua data muncul dengan betul dan aplikasi dapat berinteraksi dengan database tersebut, barulah anda pindahkan ke produksi.

Semakan Integriti Data

Selepas proses restore selesai, lakukan semakan berikut:

  • Kiraan Rekod: Bandingkan jumlah baris dalam jadual utama antara backup lama dan hasil restore.
  • Semakan Skema: Pastikan semua indeks, trigger, dan foreign keys telah dicipta semula. Kadangkala, ralat kebenaran (permission) menyebabkan beberapa indeks gagal dicipta.
  • Ujian Aplikasi: Jalankan aplikasi anda dan cuba lakukan operasi CRUD (Create, Read, Update, Delete) untuk memastikan hubungan antara data adalah tepat.

Menguruskan Ralat “Already Exists”

Sering kali semasa proses restore, anda akan melihat ralat seperti relation "users" already exists. Ini berlaku kerana anda cuba memasukkan data ke dalam jadual yang sudah wujud. Untuk mengatasinya, anda mempunyai dua pilihan:

  1. Padam (Drop) database sedia ada dan cipta semula yang baru.
  2. Gunakan flag --clean dalam pg_restore untuk memadam objek sebelum restore.

Jika anda tidak pasti bagaimana untuk menguruskan pelayan anda dengan optimum, anda boleh melihat servis web hosting Malaysia yang menyediakan sokongan teknikal untuk pengurusan database.

Kesalahan Biasa Semasa Restore PostgreSQL Backup

Banyak pengguna mengalami kegagalan semasa proses pemulihan disebabkan oleh beberapa faktor teknikal yang remeh tetapi kritikal.

Ketidakpadanan Versi PostgreSQL

Satu masalah besar yang sering berlaku adalah cuba memulihkan backup dari versi PostgreSQL yang lebih baru ke versi yang lebih lama. Contohnya, backup dari PostgreSQL 15 tidak boleh dipulihkan ke PostgreSQL 12 dengan mudah. Sebaliknya, restore dari versi lama ke versi baru biasanya tidak mempunyai masalah.

Masalah Pemilikan (Ownership) dan Role

Apabila anda melakukan restore, PostgreSQL akan cuba menetapkan pemilik jadual berdasarkan user yang melakukan backup asal. Jika user tersebut tidak wujud di pelayan baru, anda akan melihat banyak ralat role "admin_lama" does not exist. Untuk mengatasi perkara ini, gunakan flag --no-owner semasa menjalankan pg_restore. Ini akan menjadikan user yang menjalankan proses restore sebagai pemilik semua objek tersebut.

Kekurangan Ruang Cakera (Disk Space)

Fail backup yang mampat mungkin hanya bersaiz 1GB, tetapi setelah dipulihkan, ia mungkin berkembang menjadi 10GB atau lebih. Jika cakera keras anda penuh semasa proses restore, database akan berada dalam keadaan “incomplete” dan boleh menyebabkan kerosakan fail. Sentiasa semak ruang storan sebelum memulakan proses.

Untuk lebih banyak maklumat mengenai pengurusan infrastruktur digital, layari laman utama eWallz Solutions.

Kesimpulan

Proses restore postgresql backup memerlukan ketelitian dan pemahaman tentang jenis fail yang digunakan. Sama ada anda menggunakan psql untuk fail SQL biasa atau pg_restore untuk fail custom, kunci utamanya adalah melakukan pengesahan data selepas pemulihan. Jangan sesekali mengabaikan langkah pengujian di persekitaran staging sebelum mengaplikasikannya ke sistem produksi.

Dengan mengikuti panduan ini, anda dapat mengurangkan risiko kehilangan data dan memastikan sistem anda kembali beroperasi dalam masa yang singkat. Ingatlah bahawa backup yang tidak diuji adalah backup yang tidak boleh dipercayai. Jadikan amalan melakukan “drill restore” secara berkala sebagai sebahagian daripada rutin penyelenggaraan server anda.

Soalan Lazim (FAQ)

Bagaimana saya tahu fail backup saya adalah format Plain Text atau Custom?

Anda boleh cuba membuka fail tersebut menggunakan editor teks seperti Notepad atau TextEdit. Jika anda melihat arahan SQL yang boleh dibaca seperti CREATE TABLE, itu adalah Plain Text. Jika fail tersebut kelihatan seperti kod rawak atau simbol aneh, itu adalah Custom Format.

Adakah saya perlu memadam database sedia ada sebelum melakukan restore?

Ya, adalah sangat disyorkan untuk memulihkan data ke dalam database yang kosong. Jika anda restore ke dalam database yang sudah mempunyai data, anda mungkin menghadapi ralat pertindihan data atau kekeliruan versi data yang menyebabkan aplikasi tidak stabil.

Mengapa saya mendapat ralat “role does not exist” semasa restore?

Ralat ini berlaku kerana fail backup mengandungi maklumat pemilik asal (owner). Jika user tersebut tidak wujud di server baru, PostgreSQL akan mengeluarkan amaran. Gunakan pilihan --no-owner dalam pg_restore untuk mengabaikan pemilikan asal.

Berapa lama masa yang diambil untuk proses restore?

Masa restore bergantung kepada saiz data, kelajuan cakera keras (SSD vs HDD), dan kaedah yang digunakan. Penggunaan pg_restore dengan flag -j (jobs) boleh mempercepatkan proses dengan menggunakan beberapa teras CPU secara serentak.

Bolehkah saya memulihkan satu jadual sahaja daripada fail backup besar?

Ya, tetapi hanya jika anda menggunakan Custom Format. Dengan pg_restore, anda boleh menggunakan flag -t nama_jadual untuk memulihkan jadual spesifik tanpa perlu memulihkan keseluruhan database.

Share this post


Open chat
Powered by