PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Barman 2.11:barman-cloud-restore dan barman-cloud-wal-restore

Berkat utilitas baru barman-cloud-restore dan barman-cloud-wal-restore diperkenalkan di Barman 2.11 , sekarang dimungkinkan untuk menjalankan pemulihan instance PostgreSQL menggunakan cadangan lengkap yang sebelumnya dijalankan menggunakan barman-cloud-wal-archive dan barman-cloud-backup perintah. Mari temukan bersama cara menerapkannya di artikel berikut.


Perlu dicatat bahwa di Barman 2.11, semua utilitas cloud untuk Barman sekarang berada dalam paket terpisah yang disebut barman-cli-cloud .

Persyaratan

1. barman-cli-cloud paket
2. Contoh PostgreSQL
3. Bucket AWS S3
4. Mesin virtual kedua tempat menjalankan pemulihan

Pada artikel ini, kita akan menguji barman-cli-cloud fungsionalitas dalam mesin virtual dengan Debian Buster dan PostgreSQL 12. Untuk mengikuti instruksi yang terdapat dalam artikel ini dengan benar, kami juga menganggap Anda memiliki:

  • mengonfigurasi Postgres untuk mengarsipkan file WAL ke bucket S3 yang ada menggunakan barman-cloud-wal-archive
  • menjalankan pencadangan dan mengirimkannya ke bucket S3 yang sama melalui barman-cloud-backup

Anda dapat dengan mudah mencapai ini dengan mengikuti petunjuk yang terdapat dalam artikel blog sebelumnya:

  • Barman Cloud – Bagian 1:Arsip WAL
  • Barman Cloud – Bagian 2:Pencadangan Cloud

Siapkan server pemulihan

Hasilnya, kami memiliki ember S3 di AWS bernama barman-s3-test yang sudah berisi file WAL dan cadangan yang diarsipkan melalui barman-cloud-wal-archive dan barman-cloud-backup alat, sekarang kita perlu mengonfigurasi server dengan benar yang akan menjadi host untuk pemulihan instance PostgreSQL.

1. Instal PostgreSQL 12 dari repositori PGDG resmi

2. Instal repositori Publik Kuadran ke-2

3. Instal barman-cli-cloud paket:

[email protected]:~# apt [email protected]:~# apt install barman-cli-cloud

4. Instal awscli paket:

[email protected]:~# apt install awscli

5. Konfigurasikan kredensial AWS dengan alat awscli sebagai pengguna postgres:

[email protected]:~$ aws configure --profile barman-cloudAWS Access Key ID [Tidak Ada]:AKI*****************Kunci Akses Rahasia AWS [Tidak Ada ]:****************************************Nama wilayah default [Tidak Ada]:eu -west-1Format keluaran default [Tidak Ada]:json

Jalankan prosedur pemulihan

Sekarang setelah server pemulihan dikonfigurasi dengan benar, kami siap untuk memulai prosedur pemulihan.

Barman 2.11 memperkenalkan barman-cloud-backup-list perintah yang memungkinkan Anda untuk mengambil informasi tentang cadangan yang dibuat dengan barman-cloud-backup :

[email protected]:~$ barman-cloud-backup-list \ --profile barman-cloud \ s3://barman-s3-test pg12ID Cadangan Waktu Akhir Mulai Wal20200713T120856 13-07-2020 12:09:05 000000001000000000000000C

Kami sekarang siap untuk menjalankan pemulihan menggunakan barman-cloud-restore perintah:

[email protected]:~$ barman-cloud-restore \ --profile barman-cloud \ s3://barman-s3-test \ pg12 20200713T120856 \ /var/lib/postgresql/12/main/ 

Setelah pemulihan berakhir dengan sukses, kami dapat memeriksa isi direktori PGDATA:

[email protected]:~$ ls /var/lib/postgresql/12/main/PG_VERSION global pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase postgresql.auto.confbackup_label pg_commit_ts pg_ident.conf pg_subtransdy pg_snapify pg_s pg_replslot pg_stat pg_tblspc pg_xact

Sekarang, untuk memastikan bahwa proses pemulihan bekerja dengan benar, kita perlu memulai instance PostgreSQL yang dipulihkan dan memverifikasi bahwa semuanya berfungsi seperti yang diharapkan. Proses ini memerlukan beberapa langkah tambahan.

Pertama, karena kita menggunakan sistem Debian, kita perlu menyalin file yang berisi konfigurasi PostgreSQL di bawah /etc/postgresql/12/main/ direktori:

[email protected]:~$ cp /var/lib/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/[email protected]:~$ cp /var/lib/postgresql /12/main/pg_hba.conf /etc/postgresql/12/main/[email protected]:~$ cp /var/lib/postgresql/12/main/pg_ident.conf /etc/postgresql/12/main/ 

Kedua, buat recovery.signal berkas:

[email protected]:~$ touch /var/lib/postgresql/12/main/recovery.signal

Kemudian, nonaktifkan archive_command untuk mencegah instance yang dipulihkan agar tidak menulis di bucket yang sama dengan instance asli:

[email protected]:~$ echo \"archive_command ='cd .'\">> /etc/postgresql/12/main/postgresql.conf

Setelah itu, Anda perlu mengonfigurasi PostgreSQL untuk mengambil file WAL dari timeline terbaru yang tersedia dari bucket S3 dengan menggunakan barman-cloud-wal-restore di restore_command :

[email protected]:~$ echo \"restore_command ='barman-cloud-wal-restore --profile barman-cloud s3://barman-s3-test pg12 %f %p'\">> / etc/postgresql/12/main/[email protected]:~$ echo \"recovery_target_timeline ='latest'\">> /etc/postgresql/12/main/postgresql.conf

PENTING :Sebelum melanjutkan, pastikan instance PostgreSQL tidak berjalan, dan direktori tujuan (datadir default PostgreSQL) kosong.

Akhirnya, kami siap untuk memulai instance baru yang dipulihkan:

[email protected]:~# systemctl restart [email protected]

Besar! Seperti yang dapat kita lihat dari log PostgreSQL, file WAL dipulihkan dari bucket S3 dan instance telah dimulai dengan benar:

[email protected]:~$ less /var/log/postgresql/postgresql-12-main.log...2020-07-13 12:43:25.093 UTC [9458] LOG:memulai PostgreSQL 12.3 (Debian 12.3-1.pgdg100+1) pada x86_64-pc-linux-gnu, dikompilasi oleh gcc (Debian 8.3.0-6) 8.3.0, 64-bit2020-07-13 12:43:25.093 UTC [9458] LOG:mendengarkan pada alamat IPv4 "127.0.0.1", port 54322020-07-13 12:43:25.095 UTC [9458] LOG:mendengarkan pada soket Unix "/var/run/postgresql/.s.PGSQL.5432"07-2020- 13 12:43:25.111 UTC [9459] LOG:sistem database terputus; terakhir diketahui pada 13-07-2020 12:08:56 UTC2020-07-13 12:43:25.508 UTC [9459] LOG:memulai pemulihan arsip2020-07-13 12:43:26.010 UTC [9459] LOG:log yang dipulihkan file "00000001000000000000000C" dari arsip2020-07-13 12:43:26,052 UTC [9459] LOG:redo dimulai pada 0/C0000282020-07-13 12:43:26,054 UTC [9459] LOG:status pemulihan konsisten tercapai pada 0/C0001382020 -07-13 12:43:26,054 UTC [9458] LOG:sistem database siap menerima koneksi hanya baca2020-07-13 12:43:26.469 UTC [9459] LOG:file log yang dipulihkan "00000001000000000000000D" dari arsip2020-07- 13 12:43:26.823 UTC [9459] LOG:dilakukan ulang pada 0/D0001B02020-07-13 12:43:27.422 UTC [9459] LOG:memulihkan file log "00000001000000000000000D" dari arsip2020-07-13 12:43:27.592 UTC [9459] LOG:ID timeline baru yang dipilih:22020-07-13 12:43:27.644 UTC [9459] LOG:pemulihan arsip selesai2020-07-13 12:43:27.979 UTC [9458] LOG:sistem database siap untuk terima koneksi

Kesimpulan

Seperti biasa dengan rilis baru Barman, kami menyarankan semua orang memperbarui sistem mereka ke versi terbaru. Daftar lengkap perubahan dan perbaikan bug tersedia di sini.

Harap dicatat bahwa jika Anda sudah menggunakan barman-cloud-wal-archive atau barman-cloud-backup diinstal melalui paket RPM/Apt dan Anda meningkatkan sistem Anda, Anda harus menginstal barman-cli-cloud kemasan. Hal ini disebabkan fakta bahwa, dengan rilis Barman 2.11, semua alat terkait cloud adalah bagian dari barman-cli-cloud paket seperti yang dijelaskan di awal artikel.

Versi Barman berikutnya mungkin meningkatkan kegunaan dan kemampuan otomatisasi dari perintah pemulihan, misalnya dengan menyiapkan recovery.conf atau recovery.signal file seperti yang dilakukan Barman sebenarnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memahami Kinerja Kueri PostgreSQL

  2. Bagaimana cara memasukkan JSONB ke Postgresql dengan Python?

  3. Periksa apakah tipe yang ditentukan pengguna sudah ada di PostgreSQL

  4. SQLalchemy tidak melakukan perubahan saat mengatur peran

  5. Bagaimana cara menerapkan hubungan banyak ke banyak di PostgreSQL?