GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur Replikasi Master-Slave untuk PostgreSQL 9.6 di Ubuntu 16.04

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 dan dapat menangani beban kerja yang tinggi. PostgreSQL dapat digunakan di server Linux, Unix, BSD, dan Windows.

Replikasi database master/slave adalah proses penyalinan (sinkronisasi) 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 Ubuntu 16.04. 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. Konfigurasikan Firewall UFW.
  3. Konfigurasikan Server MASTER.
  4. Konfigurasikan Server SLAVE.
  5. Salin Data PostgreSQL dari MASTER ke SLAVE.
  6. Pengujian.

Prasyarat:

  • 1 server Ubuntu 16.04
    • GURU - Mengizinkan Baca dan Tulis - IP:10.0.15.10
  • 1 server Ubuntu 16.04
    • BUDAK - Hanya Baca - IP:10.0.15.11
  • Keistimewaan Root

Langkah 1 - Instal PostgreSQL 9.6

Dalam tutorial ini, kita akan menginstal PostgreSQL 9.6 versi terbaru. Di repositori resmi Ubuntu, mereka hanya menyediakan PostgreSQL 9.5, jadi kita perlu menginstal versi terbaru dari repositori PostgreSQL secara langsung.

Tambahkan repositori postgreSQL 9.6 ke direktori sources.list.d.

echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' | tee /etc/apt/sources.list.d/postgresql.list

Dan impor kunci penandatanganan PostgreSQL ke sistem.

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Sekarang perbarui repositori sistem dengan perintah apt.

apt-get update

Selanjutnya, instal paket PosgreSQL 9.6 dengan perintah apt di bawah ini.

apt-get install -y postgresql-9.6 postgresql-contrib-9.6

Jika penginstalan telah selesai, tambahkan untuk memulai secara otomatis saat boot.

systemctl enable postgresql

Secara default, PostgreSQL berjalan pada alamat IP localhost (127.0.0.1) dengan port 5432 di Ubuntu, periksa dengan perintah netstat.

netstat -plntu

PostgreSQL 9.6 berjalan di sistem. Pada langkah berikutnya, kita harus mengonfigurasi sandi untuk pengguna postgres.

Dari akun root, masuk ke pengguna postgres dengan perintah su, lalu akses terminal front-end postgres psql.

su - postgres
psql

Harap ubah sandi untuk pengguna postgres dan periksa info koneksi dengan kueri postgres di bawah.

\password postgres
\conninfo

PostgreSQL 9.6 telah diinstal pada sistem, berjalan tanpa kesalahan dan kata sandi untuk pengguna postgres telah diperbarui.

Langkah 2 - Konfigurasi Firewall UFW

UFW atau Uncomplicated Firewall adalah aplikasi untuk mengelola firewall berbasis iptables di Ubuntu. UFW adalah alat konfigurasi firewall default untuk Ubuntu Linux dan menyediakan cara yang mudah digunakan untuk mengkonfigurasi firewall.

Kita dapat menginstal ufw dari repositori utama Ubuntu dengan perintah apt.

apt-get install -y ufw

Tambahkan layanan baru ke firewall UFW:tambahkan layanan SSH dan PostgreSQL dengan perintah di bawah ini.

ufw allow ssh
ufw allow postgresql

Aktifkan firewall UFW dan periksa statusnya.

ufw enable
ufw status

Firewall UFW telah diinstal dan layanan PostgreSQL telah ditambahkan.

CATATAN:

Jalankan langkah 1 dan langkah 2 di server MASTER dan SLAVE.

Langkah 3 - Konfigurasi Server MASTER PostgreSQL

Server master memiliki alamat IP 10.0.15.10, dan layanan postgres akan berjalan di bawah IP tersebut dengan port default. Server master akan memiliki izin untuk BACA dan MENULIS ke database, dan melakukan replikasi streaming ke server budak.

Buka direktori konfigurasi postgres '/etc/postgresql/9.6/main ' dan edit postgresql.conf file dengan vim.

cd /etc/postgresql/9.6/main/
vim postgresql.conf

Batalkan komentar pada baris 'listen_addresses' dan ubah nilainya menjadi alamat IP server master '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 ubah opsi archive_command menjadi perintah 'cp %p /var/lib/postgresql/9.6/main/archive/%f'.

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

Untuk setting 'Replication', pada tutorial ini kita menggunakan 2 server saja, master dan slave, uncomment pada 'wal_sender ' dan ubah nilainya menjadi 2 , dan untuk 'wal_keep_segments ' nilainya 10 .

max_wal_senders = 2
wal_keep_segments = 10

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

synchronous_standby_names = 'pgslave001'

Simpan file dan keluar dari editor.

Di file postgresql.conf, mode arsip diaktifkan, jadi kita perlu membuat direktori baru untuk arsip. Buat direktori arsip baru, ubah izin, dan ubah pemiliknya menjadi pengguna postgres.

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

Selanjutnya, edit file pg_hba.conf untuk konfigurasi otentikasi.

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, lalu mulai ulang PostgreSQL.

systemctl restart postgresql

PostgreSQL berjalan di bawah alamat IP 10.0.15.10, periksa dengan perintah netstat.

netstat -plntu

Selanjutnya, buat pengguna baru untuk replikasi. Kami akan membuat pengguna baru bernama 'replika ' dengan sandi '[email protected] '. Silakan pilih kata sandi yang aman di sini untuk pengaturan Anda! Masuk ke pengguna postgres dan akses terminal front-end postgres psql.

su - postgres
psql

Buat 'replika . baru ' pengguna dengan sandi '[email protected] ' dengan kueri postgres di bawah.

CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD '[email protected]';

Sekarang periksa pengguna baru dengan 'du ' kueri di bawah, dan Anda akan melihat pengguna replika dengan hak replikasi.

\du

Konfigurasi server MASTER telah selesai.

Langkah 4 - Konfigurasi Server SLAVE

Server SLAVE memiliki alamat IP 10.0.15.11. Dan server ini hanya akan memiliki izin READ ke database. Server database Postgres akan berjalan di bawah alamat IP server, bukan IP localhost.

Hentikan layanan postgres pada server slave dengan perintah systemctl di bawah ini.

systemctl stop postgresql

Buka direktori konfigurasi Postgres '/etc/postgresql/9.6/main ', lalu edit file konfigurasi 'postgresql.conf '.

cd /etc/postgresql/9.6/main/
vim postgresql.conf

Batalkan komentar pada baris listen_addresses dan ganti nilainya dengan alamat IP server budak 10.0.15.11 .

listen_addresses = '10.0.15.11'

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

wal_level = hot_standby

Untuk tingkat sinkronisasi, batalkan komentar pada baris synchronous_commit dan ubah nilainya seperti yang ditunjukkan di bawah ini.

synchronous_commit = local

Untuk pengaturan replikasi, batalkan komentar pada baris max_wal_senders dan ganti nilainya dengan '2 ' karena hanya menggunakan 2 server. Dan untuk wal_keep_segments, ubah nilainya menjadi '10 '.

max_wal_senders = 2
wal_keep_segments = 10

Batalkan komentar pada baris 'synchronous_standby_names' untuk nama aplikasi dan ubah nilainya menjadi nama 'pgslave001 '.

synchronous_standby_names = 'pgslave001'

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

hot_standby = on

Simpan file dan keluar dari editor.

Langkah 5 - Salin Data PostgreSQL dari MASTER ke SLAVE

Selanjutnya, kita ingin mengganti direktori utama postgres pada 'SLAVE ' server dengan direktori data utama dari 'MASTER ' server.

Masuk ke server SLAVE dan akses pengguna postgres.

su - postgres

Buka direktori data postgres 'main ' dan buat cadangannya dengan mengganti nama nama direktori.

cd 9.6/
mv main main-bekup

Buat 'utama . baru ' direktori sebagai 'postgres ' dan pastikan memiliki izin seperti direktori main-bekup.

mkdir main/
chmod 700 main/

Selanjutnya, salin direktori utama dari server MASTER ke server SLAVE dengan pg_basebackup perintah, kami akan menggunakan pengguna replika untuk melakukan penyalinan data ini.

pg_basebackup -h 10.0.15.10 -U replica -D /var/lib/postgresql/9.6/main -P --xlog
Password:

Setelah transfer data selesai, buka direktori data utama dan buat recovery.conf baru berkas.

cd /var/lib/postgresql/9.6/main/
vim recovery.conf

Rekatkan konfigurasi di bawah ini:

standby_mode = 'on'
primary_conninfo = 'host=10.0.15.10 port=5432 user=replica [email protected] application_name=pgslave001'
restore_command = 'cp /var/lib/postgresql/9.6/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'

Simpan dan keluar, lalu ubah hak akses file menjadi 600 dengan chmod.

chmod 600 recovery.conf

Sekarang jalankan PostgreSQL 9.6 pada server SLAVE dan pastikan layanan postgres berjalan pada alamat IP 10.0.15.11 dengan netstat.

systemctl start postgresql
netstat -plntu

Transfer data dan konfigurasi untuk server SLAVE telah selesai.

Langkah 6 - Pengujian

Untuk pengujian, kita akan memeriksa status replikasi PostgreSQL 9.6 dan mencoba membuat tabel baru di server MASTER, kemudian memeriksa replikasi dengan memeriksa semua data dari server SLAVE.

Masuk ke server MASTER dan masuk ke pengguna postgres.

su - postgres

Jalankan perintah psql di bawah ini untuk melihat status replikasi.

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

Anda akan mendapatkan hasil seperti di bawah ini.

Selanjutnya, coba buat tabel baru dari server MASTER. Masuk ke pengguna postgres di server master.

su - postgres
psql

Dan buat tabel baru bernama 'replica_test ' dan masukkan data ke tabel dengan menjalankan kueri postgres di bawah ini.

CREATE TABLE replica_test (hakase 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');

Selanjutnya, login ke pengguna postgres di server SLAVE dan akses terminal psql.

su - postgres
psql

Periksa data di 'replica_test ' tabel dengan kueri postgres di bawah.

select * from replica_test;

Dan Anda akan mendapatkan data yang sama seperti di MASTER, itu direplikasi dari server MASTER ke server SLAVE.

Tes tambahan:

Uji untuk menulis di server SLAVE dengan kueri di bawah ini.

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

Dan Anda akan mendapatkan pesan kesalahan tentang 'Tidak dapat mengeksekusi INSERT ' kueri di server SLAVE.

Instalasi dan Konfigurasi PostgreSQL 9.6 dengan Master-Slave Replication di Ubuntu 16.04 Xenial Xerus telah berhasil.


Ubuntu
  1. Cara Menginstal PostgreSQL di Ubuntu 18.04

  2. Cara menginstal server PostgreSQL di Ubuntu 18.04

  3. Server Ubuntu untuk Dummies

  1. Instalasi Ubuntu 20.04 PostgreSQL

  2. Instalasi Ubuntu 22.04 PostgreSQL

  3. Cara Menginstal MySQL di Ubuntu 18.04

  1. Cara menggunakan Mattermost di Ubuntu 18.04

  2. Cara Mengonfigurasi Replikasi Master-Slave MySQL di Ubuntu 18.04

  3. Cara Menginstal PostgreSQL dan pgAdmin4 di Ubuntu 20.04