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

Gambaran Umum Replikasi Level Volume untuk PostgreSQL Menggunakan DRBD

Replikasi adalah berbagi data transaksional di beberapa server untuk memastikan konsistensi antara node database yang berlebihan. Seorang master akan mengambil sisipan atau pembaruan, dan menerapkannya ke kumpulan datanya, sedangkan budak akan mengubah datanya sesuai dengan perubahan yang dibuat pada kumpulan data master. Master biasanya disebut sebagai primer dan mencatat perubahan yang dibuat dalam Write Ahead Log (WAL). Di sisi lain, budak disebut sebagai sekunder dan mereka mereplikasi data mereka dari log REDO - dalam hal ini WAL.

Setidaknya ada 3 pendekatan replikasi di PostgreSQL:

Replikasi Bawaan atau Replikasi Streaming.

Dalam pendekatan ini, data direplikasi dari node primer ke node sekunder. Namun, ia datang dengan sejumlah kemunduran yaitu:

  • Kesulitan dalam memperkenalkan sekolah menengah baru. Ini akan mengharuskan Anda untuk mereplikasi seluruh status, yang dapat menghabiskan banyak sumber daya.
  • Kurangnya pemantauan dan failover bawaan. Sekunder harus dipromosikan ke primer jika terjadi kegagalan yang terakhir. Seringkali promosi ini dapat mengakibatkan inkonsistensi data selama ketidakhadiran primer.

Merekonstruksi Dari WAL

Pendekatan ini entah bagaimana menggunakan pendekatan replikasi streaming karena sekunder direkonstruksi dari cadangan yang dibuat oleh primer. Yang utama melakukan pencadangan basis data penuh setelah setiap hari selain pencadangan tambahan untuk setiap 60 detik. Keuntungan dengan pendekatan ini adalah tidak ada beban tambahan yang dikenakan ke primer sampai sekunder cukup dekat dengan primer sehingga mereka mulai mengalirkan Write Ahead Log (WAL) untuk mengejarnya. Dengan pendekatan ini, Anda dapat menambah atau menghapus replika tanpa memengaruhi kinerja database PostgreSQL Anda.

Replikasi Tingkat Volume untuk PostgreSQL (Disk Mirroring)

Ini adalah pendekatan umum yang tidak hanya berlaku untuk PostgreSQL, tetapi juga semua database relasional. Kami akan menggunakan Distributed Replicated Block Device (DRBD), sistem penyimpanan terdistribusi yang direplikasi untuk Linux. Ini dimaksudkan untuk beroperasi dengan mencerminkan konten yang disimpan di penyimpanan satu server ke yang lain. Sebuah ilustrasi sederhana dari struktur ditunjukkan di bawah ini.

DRBD dapat dianggap sebagai abstraksi dari perangkat disk yang menampung database PostgreSQL, tetapi sistem operasi tidak akan pernah tahu bahwa datanya juga terletak di server lain. Dengan menggunakan pendekatan ini, Anda tidak hanya dapat berbagi data tetapi juga sistem file ke lebih dari 1 server. Oleh karena itu, penulisan ke DRBD didistribusikan di antara semua server di mana setiap server akan menulis informasi ke hard disk fisik lokal (perangkat blok). Ketika operasi tulis diterapkan ke primer, kemudian direkam ke DRBD dan kemudian didistribusikan ke server DRBD sekunder. Di sisi lain, jika sekunder menerima operasi tulis melalui DRBD, mereka kemudian ditulis ke perangkat fisik lokal. Dalam hal dukungan failover, DRBD menyediakan ketersediaan data yang tinggi karena informasi tersebut dibagikan di antara node primer dan banyak node sekunder yang berjajar secara sinkron di tingkat blok.

Konfigurasi DRBD akan memerlukan sumber daya tambahan yang dikenal sebagai Detak Jantung, yang akan kita bahas di artikel lain, untuk meningkatkan dukungan untuk failover otomatis. Paket tersebut pada dasarnya mengelola antarmuka di beberapa server dan secara otomatis mengkonfigurasi salah satu server sekunder ke server utama jika terjadi kegagalan.

Instalasi dan Konfigurasi DRBD

Metode yang lebih disukai dalam menginstal DRBD adalah dengan menggunakan paket instalasi biner pra-bangun. Pastikan versi kernel paket cocok dengan kernel aktif Anda saat ini.

File konfigurasi untuk semua node yang primer atau sekunder harus identik. Juga jika Anda perlu memutakhirkan versi kernel Anda, pastikan kernel-module-drdb yang sesuai tersedia untuk versi kernel baru Anda.

Pengaturan DRBD untuk Node Utama

Ini adalah langkah pertama di mana Anda perlu membuat perangkat blok DRBD dan sistem file untuk menyimpan data Anda. File konfigurasi dapat ditemukan di /etc/drbd.conf. File mendefinisikan sejumlah parameter untuk konfigurasi DRBD yang meliputi:ukuran blok, definisi informasi keamanan perangkat DRBD yang ingin Anda buat dan frekuensi pembaruan. Konfigurasi dapat dibatasi untuk menjadi global atau terikat pada sumber daya tertentu. Langkah-langkahnya adalah:

  1. Tingkat sinkronisasi yang menentukan tingkat di mana perangkat ditautkan secara sinkron di latar belakang setelah penggantian disk, kegagalan, atau pengaturan awal. Ini dapat diatur dengan mengedit parameter kecepatan di blok sinkronisasi:

    syncer{
    rate 15M
    }
  2. Pengaturan otentikasi untuk memastikan bahwa hanya host dengan rahasia bersama yang sama yang dapat bergabung dengan grup simpul DRBD. Kata sandi adalah mekanisme pertukaran hash yang didukung di DRBD.

    cram-hmac-alg “sha1”
    shared-secret “hash-password-string”
  3. Mengkonfigurasi informasi host. Informasi node seperti host dapat ditemukan di setiap file drbd.conf node. Beberapa parameter yang akan dikonfigurasi adalah:

    • Alamat:Alamat IP dan nomor port host yang menyimpan perangkat DRBD.
    • Perangkat:Jalur perangkat blok logis yang dibuat oleh DRBD.
    • Disk:Ini mengacu pada perangkat blok yang menyimpan data.
    • Meta-disk:Ini menyimpan metadata perangkat DRBD. Ukurannya bisa sampai 128MB. Anda dapat menyetelnya menjadi disk internal sehingga DRBD menggunakan perangkat blok fisik untuk menyimpan informasi ini di bagian terakhir disk.

    Konfigurasi sederhana untuk yang utama:

    on drbd-one {
    device /dev/drbd0;
    disk /dev/sdd1;
    address 192.168.103.40:8080;
    meta-disk internal;
    }

    Konfigurasi harus diulang dengan sekunder dengan alamat IP yang cocok dengan host korespondennya.

    on drbd-two {
    device /dev/drbd0;
    disk /dev/sdd1;
    address 192.168.103.41:8080;
    meta-disk internal;
    }
  4. Membuat metadata untuk perangkat menggunakan perintah ini:

    $ drbdadm create create-md all
    Proses ini wajib dilakukan sebelum Anda memulai node utama.
  5. Mulai DRBD dengan perintah ini:
    $ /etc/init.d/drbd start
    Ini memungkinkan DRBD untuk memulai, menginisialisasi, dan membuat perangkat yang ditentukan DRBD.
  6. Tandai perangkat baru sebagai yang utama dan inisialisasi perangkat menggunakan perintah ini:
    $ drbdadm -- --overwrite-data-of-peer primary all
    Buat sistem file pada perangkat blok agar perangkat blok standar yang dibuat oleh DRBD dapat digunakan.
  7. Jadikan file utama siap digunakan dengan memasang sistem file. Perintah ini akan mempersiapkannya untuk Anda:
    $ mkdir /mnt/drbd
    $ mount /dev/drbd0 /mnt/drbd
    $ echo “DRBD Device” > /mnt/drbd/example_file

Pengaturan DRBD untuk Node Sekunder

Anda dapat menggunakan langkah yang sama di atas kecuali untuk membuat sistem file pada node sekunder karena informasi secara otomatis ditransfer dari node utama.

  1. Salin file /etc/drbd.conf dari node utama ke node sekunder. File ini berisi informasi dan konfigurasi yang diperlukan.

  2. Pada perangkat disk yang mendasarinya, buat metadata DRBD menggunakan perintah:

    $ drbdadm create-md all
  3. Jalankan DRBD dengan perintah:

    $ /etc/init.d/drbd start
    DRBD akan mulai menyalin data dari node primer ke node sekunder, dan waktunya tergantung pada ukuran data yang akan ditransfer. Jika Anda melihat file /proc/drbd, Anda dapat melihat kemajuannya.
    $ cat /proc/drbd
    version: 8.0.0 (api:80/proto:80)
      SVN Revision: 2947 build by [email protected], 2018-08-24 16:43:05
       0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
           ns:252284 nr:0 dw:0 dr:257280 al:0 bm:15 lo:0 pe:7 ua:157 ap:0
           [==>.................] sync'ed: 12.3% (1845088/2097152)K
           finish: 0:06:06 speed: 4,972 (4,580) K/sec
           resync: used:1/31 hits:15901 misses:16 starving:0 dirty:0 changed:16
           act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
  4. Pantau sinkronisasi menggunakan perintah arloji pada interval tertentu

    $ watch -n 10 ‘cat /proc/drbd‘

Manajemen Instalasi DRBD

Untuk melacak status perangkat DRBD, kami menggunakan /proc/drbd.

Anda dapat mengatur status semua perangkat lokal menjadi yang utama menggunakan perintah

$ drbdadm primary all

Jadikan perangkat utama sebagai perangkat sekunder

$ drbdadm secondary all

Untuk memutuskan simpul DRBD

$ drbdadm disconnect all

Hubungkan kembali node DRBD

$ drbd connect all
Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh Whitepaper

Mengonfigurasi PostgreSQL untuk DRBD

Ini melibatkan pemilihan perangkat yang akan disimpan oleh PostgreSQL. Untuk instalasi baru, Anda dapat memilih untuk menginstal PostgreSQL seluruhnya ke perangkat DRBD atau direktori data untuk ditempatkan di sistem file baru dan harus di node utama. Ini karena node utama adalah satu-satunya yang diizinkan untuk memasang sistem file perangkat DRBD sebagai baca/tulis. File data Postgres sering diarsipkan di /var/lib/pgsql sedangkan file konfigurasi disimpan di /etc/sysconfig/pgsql.

Menyiapkan PostgreSQL untuk Menggunakan Perangkat DRBD Baru

  1. Jika Anda menjalankan PostgreSQL, hentikan dengan perintah ini:

    $  /etc/init.d/postgresql -9.0
  2. Perbarui perangkat DRBD dengan file konfigurasi menggunakan perintah:

    $ mkdir /mnt/drbd/pgsql/sysconfig
    $ cp /etc/sysconfig/pgsql/* /mnt/drbd/pgsql/sysconfig
  3. Perbarui DRBD dengan direktori data PostgreSQL dan file sistem menggunakan:

    $ cp -pR /var/lib/pgsql /mnt/drbd/pgsql/data
  4. Buat tautan simbolis ke direktori konfigurasi baru pada sistem file perangkat DRBD dari /etc/sysconfig/pgsql menggunakan perintah:

    $ ln -s /mnt/drbd/pgsql/sysconfig  /etc/sysconfig/pgsql
  5. Hapus direktori /var/lib/pgsql, unmount /mnt/drbd/pgsql dan mount perangkat drbd ke /var/lib/pgsql.

  6. Jalankan PostgreSQL dengan perintah:

    $ /etc/init.d/postgresql -9.0 start

Data PostgreSQL sekarang harus ada di sistem file yang berjalan pada perangkat DRBD Anda di bawah perangkat yang dikonfigurasi. Isi database juga disalin ke node DRBD sekunder tetapi tidak dapat diakses karena perangkat DRBD yang bekerja di node sekunder mungkin tidak ada.

Fitur Penting dengan Pendekatan DRBD

  • Parameter penyetelan sangat dapat disesuaikan.
  • Penerapan yang ada dapat dengan mudah dikonfigurasi dengan DRBD tanpa kehilangan data.
  • Permintaan baca sama-sama seimbang
  • Otentikasi rahasia bersama mengamankan konfigurasi dan datanya.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails dan PostgreSQL:Peran postgres tidak ada

  2. sql ORDER BY beberapa nilai dalam urutan tertentu?

  3. Hapus baris duplikat dari tabel kecil

  4. Fungsi Kueri Dinamis Postgres

  5. Cegah pemicu rekursif di PostgreSQL