GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menginstal dan Mengonfigurasi Replikasi Master-Slave dengan PostgreSQL 9.6 di CentOS 7

PostgreSQL atau Postgres adalah sistem manajemen basis data relasional objek sumber terbuka (ORDBMS) dengan lebih dari 15 tahun pengembangan aktif. Ini adalah server database yang kuat yang dapat menangani beban kerja yang tinggi. PostgreSQL dapat digunakan di server Linux, Unix, BSD, dan Windows.

Replikasi database master/slave adalah proses penyalinan (syncing) data dari database di satu server (master) ke database di server lain (slave). Manfaat utama dari proses ini adalah untuk mendistribusikan database ke beberapa mesin, jadi ketika server master mengalami masalah, ada mesin cadangan dengan data yang sama yang tersedia untuk menangani permintaan tanpa gangguan.

PostgreSQL menyediakan beberapa cara untuk mereplikasi database. Hal ini dapat digunakan untuk tujuan backup dan untuk menyediakan server database ketersediaan tinggi. Dalam tutorial ini, kami akan menunjukkan cara menginstal dan mengkonfigurasi replikasi Master-Slave PostgreSQL 9.6 di server CentOS 7. Kami akan menggunakan mode siaga Panas, dan ini adalah titik awal yang sangat baik untuk mempelajari PostgreSQL secara mendalam.

Apa yang akan kami lakukan

  1. Instal PostgreSQL 9.6
  2. Mulai dan konfigurasikan PostgreSQL 9.6
  3. Konfigurasi Firewalld
  4. Konfigurasikan server Master
  5. Konfigurasi server Budak
  6. Pengujian

Prasyarat

    • 1 server CentOS 7
      • Guru - Izin Baca dan Tulis - IP:10.0.15.10
    • 1 server CentOS 7
      • Budak - Hanya Izin Baca- IP:10.0.15.11
    • Keistimewaan Root

    Langkah 1 - Instal PostgreSQL 9.6

    Pada tutorial kali ini kita akan membahas cara install PostgreSQL versi 9.6 terbaru di server CentOS 7. Secara default, repositori resmi CentOS menawarkan versi yang lebih lama, jadi kita perlu menginstal PostgreSQL dari repositori resmi.

    Tambahkan repositori PostgreSQL 9.6 baru ke sistem.

    yum -y install https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

    Sekarang instal PostgreSQL 9.6 menggunakan perintah yum berikut.

    yum -y install postgresql96-server postgresql96-contrib

    Jadi dengan cara ini, Anda dapat menginstal PostgreSQL 9.6.

    Langkah 2 - Mulai dan konfigurasikan PostgreSQL 9.6

    Sebelum memulai layanan postgres, kita perlu menginisialisasi database. Untuk ini, buka '/usr/pgsql-9.6/bin ' dan inisialisasi database dengan pengaturan postgres 'postgresql96-setup '.

    cd /usr/pgsql-9.6/bin
    ./postgresql96-setup initdb

    Selanjutnya, mulai layanan postgres dan aktifkan untuk memulai secara otomatis saat boot sistem.

    systemctl start postgresql-9.6
    systemctl enable postgresql-9.6

    Secara default, postgres berjalan pada port 5432. Jadi pastikan status port 5432 adalah 'LISTEN ' dengan menjalankan perintah netstat dengan cara berikut.

    netstat -plntu

    Jika Anda tidak memiliki perintah netstat, instal net-tools. Itu bagian dari alat-net.

    yum -y install net-tools

    Jadi PostgreSQL 9.6 telah dimulai. Tetapi kita masih perlu mengkonfigurasi kata sandi untuk pengguna postgres. Login sebagai pengguna 'postgres', lalu akses shell 'psql' postgres.

    su - postgres
    psql

    Berikan 'postgres ' pengguna kata sandi baru dengan kueri di bawah ini.

    \password postgres
    Enter new password:

    Jadi PostgreSQL 9.6 telah dimulai dan kata sandi baru untuk pengguna postgres telah dikonfigurasi.

    Langkah 3 - Konfigurasi Firewalld

    Firewalld adalah alat manajemen firewall default pada CentOS 7. Kami akan memulai layanan ini dan membuka port untuk koneksi PostgreSQL.

    Mulai firewalld dan aktifkan untuk memulai secara otomatis saat boot sistem menggunakan perintah berikut:

    systemctl start firewalld
    systemctl enable firewalld

    Selanjutnya, tambahkan layanan postgres baru ke firewalld dengan perintah berikut.

    firewall-cmd --add-service=postgresql --permanent
    firewall-cmd --reload

    Sekarang periksa port layanan yang terbuka.

    firewall-cmd --list-all

    Dan Anda akan melihat layanan PostgreSQL telah ditambahkan ke firewalld.

    CATATAN: Jalankan Langkah 1, Langkah 2 dan Langkah 3 pada semua Master dan Slave.

    Langkah 4 - Konfigurasikan server Master

    Pada langkah ini, kita akan mengkonfigurasi server master untuk replikasi. Ini adalah server utama, memungkinkan proses membaca dan menulis dari aplikasi yang berjalan di atasnya. PostgreSQL pada master hanya berjalan pada alamat IP '10.0.15.10', dan melakukan replikasi streaming ke server slave.

    Buka direktori data pgsql '/var/lib/pgsql/9.6/data ' dan edit file konfigurasi 'postgresql.conf '.

    cd /var/lib/pgsql/9.6/data
    vim postgresql.conf

    Batalkan komentar pada baris 'listen_addresses' dan ubah nilai alamat IP server menjadi '10.0.15.10'.

    listen_addresses = '10.0.15.10'

    Batalkan komentar pada baris 'wal_level' dan ubah nilainya menjadi 'hot_standby '.

    wal_level = hot_standby

    Untuk tingkat sinkronisasi, kami akan menggunakan sinkronisasi lokal. Batalkan komentar dan ubah baris nilai seperti di bawah ini.

    synchronous_commit = local

    Aktifkan mode pengarsipan dan berikan variabel archive_command perintah sebagai nilai.

    archive_mode = on
    archive_command = 'cp %p /var/lib/pgsql/9.6/archive/%f'

    Untuk setelan 'Replikasi', batalkan komentar pada baris 'wal_sender' dan ubah nilainya menjadi 2 (dalam tutorial ini,  kami hanya menggunakan 2 server master dan slave), dan untuk nilai 'wal_keep_segments' adalah 10.

    max_wal_senders = 2
    wal_keep_segments = 10

    Untuk nama aplikasi, batalkan komentar pada baris 'synchronous_standby_names' dan ubah nilainya menjadi 'pgslave01 '.

    synchronous_standby_names = 'pgslave01'

    Itu dia. Simpan perubahan ini dan keluar dari editor.

    Selanjutnya, di file postgresql.conf, mode arsip diaktifkan, jadi kita perlu membuat direktori baru untuk tujuan pengarsipan.

    Buat direktori baru, ubah izinnya, dan ubah pemiliknya menjadi pengguna postgres.

    mkdir -p /var/lib/pgsql/9.6/archive/
    chmod 700 /var/lib/pgsql/9.6/archive/
    chown -R postgres:postgres /var/lib/pgsql/9.6/archive/

    Sekarang edit file pg_hba.conf.

    vim pg_hba.conf

    Tempelkan konfigurasi di bawah ini ke akhir baris.

    # Localhost
    host    replication     replica          127.0.0.1/32            md5

    # PostgreSQL Master IP address
    host    replication     replica          10.0.15.10/32            md5

    # PostgreSQL SLave IP address
    host    replication     replica          10.0.15.11/32            md5

    Simpan dan keluar. Semua konfigurasi selesai. Sekarang, restart PostgreSQL 9.6 menggunakan perintah berikut.

    systemctl restart postgresql-9.6

    Selanjutnya, kita perlu membuat pengguna baru dengan hak replikasi. Kami akan membuat pengguna baru bernama 'replika '.

    Masuk sebagai pengguna postgres, dan buat 'replika . baru ' pengguna dengan sandi '[email protected] '.

    su - postgres
    createuser --replication -P replica
    Enter New Password:

    Jadi dengan ini, konfigurasi Master PostgreSQL 9.6 telah selesai, dan pengguna untuk replikasi telah dibuat.

    Langkah 5 - Konfigurasi server Slave

    Pada langkah ini, kita akan mengkonfigurasi server Slave. Kami ingin mengganti direktori data postgres di server budak dengan data postgres dari server master, dan kemudian mengkonfigurasi server budak untuk berjalan di bawah alamat IP '10.0.15.11', dan akhirnya mengaktifkan hot_standby di atasnya untuk memungkinkan hanya membaca tanpa menulis.

    Sebelum kita mulai mengkonfigurasi server budak, hentikan layanan postgres menggunakan perintah systemctl di bawah ini.

    systemctl stop postgresql-9.6

    Lalu pergi ke direktori postgres, dan backup direktori data.

    cd /var/lib/pgsql/9.6/
    mv data data-backup

    Buat direktori data baru dan ubah izin kepemilikan direktori menjadi pengguna postgres.

    mkdir -p data/
    chmod 700 data/
    chown -R postgres:postgres data/

    Selanjutnya, login sebagai pengguna postgres dan salin semua direktori data dari 'Master ' server ke 'Budak ' server sebagai pengguna replika.

    su - postgres
    pg_basebackup -h 10.0.15.10 -U replica -D /var/lib/pgsql/9.6/data -P --xlog
    Password:

    Ketik kata sandi Anda dan tunggu transfer data dari master ke server slave.

    Setelah transfer selesai, masuk ke direktori data postgres dan edit file postgresql.conf di server slave.

    cd /var/lib/pgsql/9.6/data/
    vim postgresql.conf

    Ubah nilai 'listen_addresses' menjadi ip address server slave '10.0.15.11'.

    listen_addresses = '10.0.15.11'

    Aktifkan 'hot_standby ' di server budak dengan menghapus komentar pada baris berikut dan ubah nilainya menjadi 'on '.

    hot_standby = on

    Itu dia. Simpan perubahan dan keluar dari editor.

    Kemudian buat 'recovery.conf . baru ' file dengan vim.

    vim recovery.conf

    Tempelkan konfigurasi berikut di dalamnya.

    standby_mode = 'on'
    primary_conninfo = 'host=10.0.15.10 port=5432 user=replica [email protected] application_name=pgslave01'
    trigger_file = '/tmp/postgresql.trigger.5432'

    Simpan perubahan dan keluar dari file.

    Catatan: Di utama_conninfo , masukkan detail server Anda sendiri.

    Ubah izin kepemilikan file recovery.conf menjadi milik pengguna 'postgres'.

    chmod 600 recovery.conf
    chown postgres:postgres recovery.conf

    Dan mulai PostgreSQL 9.6 di server budak.

    systemctl start postgresql-9.6

    Konfigurasi server budak telah selesai.

    Sekarang ketika Anda memeriksa server Slave, Anda akan melihat bahwa PostgreSQL 9.6 berjalan di server dengan alamat IP '10.0.15.11 '.

    netstat -plntu

    Langkah 6 - Pengujian

    Instalasi dan konfigurasi untuk replikasi Master-Slave PostgreSQL 9.6 telah selesai. Untuk menguji penyiapan, periksa aliran status replikasi dan uji replikasi data dari Master ke Slave.

    Masuk ke server Master dan beralih ke pengguna postgres.

    su - postgres

    Selanjutnya, periksa replikasi status streaming PostgreSQL dengan perintah berikut.

    psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"
    psql -x -c "select * from pg_stat_replication;"

    Anda akan melihat nilai statusnya adalah 'streaming ', dan sync_state adalah 'sinkronisasi '.

    Selanjutnya uji dengan memasukkan data dari master kemudian cek semua data pada server slave.

    Masuk sebagai pengguna postgres dan akses shell PostgreSQL di 'MASTER ' server.

    su - postgres
    psql

    Buat tabel baru 'replica_test ' dan masukkan beberapa data ke dalamnya dengan kueri penyisipan berikut.

    CREATE TABLE replica_test (test varchar(100));
    INSERT INTO replica_test VALUES ('howtoforge.com');
    INSERT INTO replica_test VALUES ('This is from Master');
    INSERT INTO replica_test VALUES ('pg replication by hakase-labs');

    Dan sekarang login ke 'SLAVE ' server mirip dengan yang Anda lakukan pada master.

    su - postgres
    psql

    Periksa semua data dari tabel 'replica_test' menggunakan kueri di bawah ini.

    select * from replica_test;

    Jadi, Anda akan melihat bahwa semua data direplikasi dari 'MASTER ' server ke 'BUDAK ' server.

    Tes tambahan

    Uji untuk melakukan tindakan 'MENULIS' dari server 'SLAVE'.

    INSERT INTO replica_test VALUES ('this is SLAVE');

    Dan hasilnya seharusnya 'Tidak dapat menjalankan INSERT '.

    Maka instalasi dan konfigurasi PostgreSQL 9.6 Master-Slave Replication pada CentOS 7 berhasil.

    Referensi

    • https://www.postgresql.org/download/linux/redhat/
    • https://www.server-world.info/en/note?os=CentOS_7

    Cent OS
    1. Cara Menginstal dan Mengonfigurasi Postgres 13 Ubuntu 20.04

    2. Cara Menginstal dan Mengonfigurasi Postgres 13 di Centos 8

    3. Cara Menginstal dan Mengonfigurasi Postgres 14 Ubuntu 20.04

    1. Cara Menginstal dan Mengkonfigurasi Nginx di CentOS 7

    2. Cara Menginstal dan Mengonfigurasi Redis di CentOS 7

    3. Cara Menginstal dan Mengkonfigurasi Postgres 14 di Debian 11

    1. Cara Menginstal dan Mengonfigurasi GitLab di CentOS 7

    2. Cara Menginstal dan Mengonfigurasi Nextcloud dengan Apache di CentOS 7

    3. Cara Instal dan Konfigurasi Redmine di CentOS 7