Di PostgreSQL, Backup &Recovery sangat user friendly dibandingkan dengan database lain. Banyak dari mereka tidak akan setuju dengan ini, oke jangan berdebat. Datang ke Pencadangan, PostgreSQL tidak mendukung CADANGAN INCREMENTAL, namun ada alat pencadangan yang sangat konsisten dan solusi tingkat OS untuk mencapai tujuan ini.
Presentasi bergambar saya tentang Pencadangan dan Pemulihan PostgreSQL memberikan ide konseptual yang lengkap. Melihat ke Diagram, Anda dapat mengetahui cadangan mana yang dapat digunakan untuk memulihkan atau memulihkan.
Cadangan Logis
pg_dump, pg_restore dan pg_dumpall utilitas yang digunakan untuk pencadangan logis. pg_dump dan pg_restore akan membantu dalam mengambil cadangan untuk level Database, level Skema, dan Level Tabel. Pg_dumpall digunakan untuk dump tingkat cluster.
Tiga format didukung dengan pg_dump, format SQL Biasa, Format Kustom, dan Format Tar. Dump Custom dan Format Tar kompatibel dengan utilitas pg_restore sedangkan dump format SQL Biasa kompatibel dengan utilitas psql untuk pemulihan.
Di bawah ini adalah contoh untuk setiap level Pencadangan dan dengan perintah pemulihan terkait.
Catatan:Setel default untuk PGDATABASE, PGUSER, PGPASSWORD dan PGPORT di .bash_profile(Variabel Lingkungan di Windows)
Pembuangan dan Pemulihan Format SQL Biasa
$ pg_dump -U username -Fp dbname > filename
or
$ pg_dump -U username dbname -f filename
or
$ pg_dump -Fp -U username dbname -f filename
For restoring use psql command
$ psql -U username -f filename dbname
or
postgres=# i SQL-file-name //in psql terminal with i option
Format Khusus
$ pg_dump -Fc dbname -f filename
$ pg_restore -Fc -U username -d dbname filename.dmp
Format Tar
$ pg_dump -Ft dbname -f filename
$ pg_restore -U username -d dbname filename
or
$ cat tar-file.tar | psql -U username dbname
Catatan:Dump Level Skema dan Level Tabel dapat dilakukan dengan cara yang sama dengan menambahkan opsi terkait.
Pembuangan Tingkat Cluster:
$pg_dumpall -p portnumber > filename
For restoring use psql command
$ psql -f filename
Ada cara terbaik untuk mengambil dump dan mengembalikan metodologi. Secara khusus, buku Simon Riggs dan Hannu Krosing – “Buku Masak Administrasi PostgreSQL 9 – 2010” adalah cara yang baik untuk memulai dengan Pencadangan dan Pemulihan PostgreSQL yang diterbitkan oleh www.2ndQuadrant.com.
Cadangan Fisik (Cadangan sistem file)
Cadangan Dingin:
Dalam pencadangan dingin, ini adalah pencadangan sistem file sederhana dari direktori /data ketika Instance Postgres sedang down, artinya, untuk mencapai pencadangan direktori data yang konsisten sendiri, server basis data harus dimatikan sebelum menyalin. PostgreSQL memberikan fleksibilitas untuk menyimpan pg_xlog dan pg_tblspce di titik pemasangan yang berbeda melalui softlink. Saat menyalin direktori /data termasuk data tautan lunak, gunakan perintah di bawah ini.
tar czf backup.tar.gz $PGDATA
or
cp -r $PGDATA /backup/
or
rsync -a $PGDATA /wherever/data
Cadangan Panas (Cadangan Online):
Di Hot Backup, cluster akan aktif dan berjalan dan Database harus dalam Mode Log Arsip. Dua fungsi sistem akan memberi tahu instance tentang memulai dan menghentikan proses Hot Backup(pg_start_backup(),pg_stop_backup()). Sebelum lanjut ke Online Backup, mari kita bahas mode Database Archive Log yang wajib untuk Online Backup.
Mengaktifkan Pengarsipan WAL:
Postingan saya selanjutnya akan membahas tentang PITR / Tunning WAL dll, saat ini kita akan membahas tentang Pengarsipan WAL. Dalam sistem database PostgreSQL, database sebenarnya 'menulis' ke file tambahan yang disebut write-ahead log (WAL) ke disk. Ini berisi catatan menulis yang dibuat dalam sistem database. Dalam kasus Crash, database dapat diperbaiki/dipulihkan dari catatan ini.
Biasanya, log write-ahead log secara berkala (disebut Checkpoints) dicocokkan dengan database dan kemudian dihapus karena tidak lagi diperlukan. Anda juga dapat menggunakan WAL sebagai cadangan karena, ada catatan dari semua penulisan yang dibuat ke database.
Konsep Pengarsipan WAL:
Log write-ahead terdiri dari masing-masing 16 MB besar, yang disebut segmen. WAL berada di bawah direktori pg_xlog dan merupakan subdirektori dari 'direktori data'. Nama file akan diberi nama secara numerik dalam urutan menaik oleh Instance PostgreSQL. Untuk melakukan pencadangan berdasarkan WAL, diperlukan pencadangan dasar, yaitu pencadangan lengkap direktori data, dan Segmen WAL antara pencadangan dasar dan tanggal saat ini.
Konfigurasi pengarsipan segmen WAL dapat dipilih dengan mengatur dua parameter konfigurasi archive_command dan archive_mode di postgresql.conf. Membuat cluster menjadi mode Arsip-log membutuhkan RESTART.
archive_mode= on/off (boolean parameter)
archive_command = 'cp –i %p / Archive/Location/ f% '
Catatan: % p untuk file yang akan disalin dengan jalur yang digunakan sebagai nama file dan % f tanpa entri direktori untuk file tujuan.
Untuk informasi lebih lanjut tentang Proses Pengarsip, lihat posting Memori &Proses PostgreSQL 9.0.
Cadangan Online :
Untuk mengambil cadangan online:
Step 1 : Issue pg_start_backup('lable') in the psql terminal
postgres=# select pg_start_backup('fb');
Step 2 : OS level copy the $PGDATA directory to any Backup Location
$ cp -r $PGDATA /anylocation
Step 3 : Issue pg_stop_backup() in psql terminal.
postgres=# select pg_stop_backup();
Catatan: Kedua fungsi ini tidak perlu dijalankan dalam koneksi database yang sama. Mode pencadangan bersifat global dan persisten.
Di PostgreSQL, tidak ada katalog untuk menyimpan waktu Mulai dan Berhenti dari pencadangan Online. Namun, ketika pencadangan online sedang dalam proses, beberapa file dibuat dan dihapus.
pg_start_backup('label') dan pg_stop_backup adalah dua fungsi sistem untuk melakukan Backup Online. Dengan pg_start_backup('label') file backup_label dibuat di bawah direktori $PGDATA dan dengan pg_stop_backup() file 'wal-segement-number.backup' dibuat di bawah $PGDATA/pg_xlog. Backup_label akan memberikan waktu mulai dan lokasi Checkpoint dari Segmen WAL, juga akan memberi tahu instance PostgreSQL bahwa Cluster berada dalam BACKUP-MODE. File 'wal-segment-number.backup' di bawah direktori $PGDATA/pg_xlog menjelaskan waktu mulai dan berhenti, lokasi Checkpoint dengan nomor segmen WAL.
Catatan:Setelah pg_stop_backup(), file backup_label dihapus oleh instance PostgreSQL.
Kirimkan komentar Anda, saran.