Peralihan Replikasi PostgreSQL: Panduan Langkah demi Langkah
Blog Terkait: Menyiapkan Replikasi PostgreSQL di Server Budak: Panduan Langkah demi Langkah
Server Langsung Saat Ini: 192.168.10.10 (Utama)
Server Cadangan Saat Ini: 192.168.10.11 (Siaga)
Perkenalan:
Replikasi PostgreSQL memainkan peran penting dalam memastikan ketersediaan tinggi dan redundansi data untuk database Anda. Dalam skenario ketika server utama tidak tersedia, failover ke server siaga dapat membantu menjaga akses tanpa gangguan ke data Anda. Panduan ini menguraikan proses langkah demi langkah dalam melakukan peralihan manual di PostgreSQL. Dengan mengikuti panduan ini, Anda akan diperlengkapi untuk melakukan transisi dengan lancar dari server utama ke server siaga sambil memperbarui konfigurasi IP.
Langkah 1: Verifikasi Sinkronisasi Siaga
Sebelum memulai peralihan, pastikan server siaga sinkron dengan server utama. Jalankan perintah SQL berikut untuk memeriksa status sinkronisasi:
PILIH KASUS
KETIKA pg_last_wal_receive_lsn() = pg_last_wal_replay_lsn() LALU 0 EKSTRAK
LAINNYA (EPOCH FROM now() - pg_last_xact_replay_timestamp()) AKHIR SEBAGAI log_delay;
Kueri ini membandingkan LSN (Nomor Urutan Log) dari data WAL (Write-Ahead Log) yang diterima dan diputar ulang, yang menunjukkan status sinkronisasi.
Langkah 2: Izinkan IP Langsung Saat Ini di Cadangan Saat Ini
Untuk mengizinkan IP aktif saat ini mengakses cadangan saat ini (siaga), ubah file pg_hba.conf
:
cd /var/lib/postgresql/12/main
echo "replikasi replikasi host 192.168.10.10/32 md5" >> pg_hba.conf
Langkah 3: Matikan Utama
Hentikan instance PostgreSQL utama:
/usr/lib/postgresql/12/bin/
./pg_ctl -D /var/lib/postgresql/12/stop utama
Periksa log apakah instance telah dihentikan sepenuhnya. Setelah selesai maka lanjutkan ke langkah berikutnya.
Langkah 4: Promosikan Siaga ke Baca-Tulis
Promosikan server siaga menjadi server utama baru dengan menjalankan perintah berikut:
psql -c "PILIH pg_promote();"
#Perintah ini mempromosikan standby ke primer baca-tulis.
Langkah 5: Buat standby.signal
di Pratama Lama
Buat standby.signal
file di primer lama untuk memastikan file dimulai sebagai file siaga ketika dibawa kembali online:
sentuh /var/lib/postgresql/12/main/standby.signal
Langkah 6: Edit postgresql.auto.conf
di Pratama Lama
#Perbarui postgres. file .conf otomatis dengan DETAIL MASTER SERVER BARU
vi /var/ lib /postgresql/ 12 /main/postgresql. auto .conf
#Modifikasi parameter primary_conninfo untuk mencerminkan IP siaga baru
: primary_conninfo = 'user=replicator host=192.168.10.11 port=5432 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'
Langkah 7: Mulai Pratama Lama sebagai Siaga
Mulai primer lama sebagai siaga menggunakan perintah berikut:
/usr/lib/postgresql/12/bin/pg_ctl -D /var/lib/postgresql/12/mulai utama
Langkah 8: Pantau Log
Awasi log untuk memantau status database. Gunakan perintah berikut untuk melihat log:
Log akan memiliki sesuatu seperti “Mulai sebagai standby”
tail -100f /var/lib/postgresql/12/main/log/postgresql-Sat. catatan
Langkah 9: Verifikasi peralihan
Setelah konfigurasi selesai, konfigurasi tersebut diimpor untuk memverifikasi berbagai hal. Kami akan menggunakan beberapa metode untuk memverifikasi proses peralihan.
- Verifikasi peralihan menggunakan tampilan yang tersedia.
Pertama kita akan memeriksa apakah server menerima wals atau tidak menjalankan kueri di bawah ini pada budak baru:select * from pg_stat_wal_receiver;
select pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn(), pg_last_xact_replay_timestamp();
2. Verifikasi dengan mencocokkan tabel di kedua
Log DB ke dalam database langsung (Utama) yang baru dan membuat skema pengujian, tabel, dan memasukkan beberapa catatan untuk verifikasi.
BUAT TABEL test_schema.test_table (
id serial PRIMARY KEY,
nama varchar ( 100 ),
age int
);
INSERT INTO test_schema.test_table (nama, umur) VALUES
( 'Alice' , 28 ),
( 'Bob' , 32 ),
( 'Carol' , 24 );
Sekarang masuk ke server Slave baru dan verifikasi catatan yang dimasukkan, catatan tersebut akan terlihat.
3. Periksa budak baru apakah Read-only atau tidak (Harusnya read-only)
PILIH pg_is_in_recovery();
Kueri ini akan mengembalikan nilai boolean tunggal : true jika server dalam keadaan siaga dan false jika server utama.
Kesimpulan
Dengan mengikuti langkah-langkah ini, Anda berhasil melakukan peralihan di PostgreSQL, mengubah alamat IP yang terlibat dan memastikan transisi yang mulus dari alamat utama lama ke alamat siaga baru.
Ingatlah bahwa lingkungan PostgreSQL yang dikelola dengan baik memerlukan pemantauan, pemeliharaan, dan pencadangan rutin. Dengan panduan ini, Anda kini diperlengkapi untuk membangun penyiapan PostgreSQL yang kuat dan memiliki ketersediaan tinggi yang dapat menangani data penting organisasi Anda dengan percaya diri.
Untuk artikel lebih mendalam tentang PostgreSQL dan manajemen basis data, ikuti Umair Hassan di LinkedIn dan Medium .
===========================================
1.Diserver primary
postgres@BY-PSQL-DB1:~$ . primary_stop.sh
waiting for server to shut down.... done
server stopped
postgres@BY-PSQL-DB1:~$
2.Diserver replikasi
postgres@BY-PSQL-DB2:~$ psql -p 5401
psql (16.3 (Ubuntu 16.3-1.pgdg24.04+1))
Type "help" for help.
postgres=# select pg_promote();
pg_promote
------------
t
(1 row)
postgres=# \q
postgres@BY-PSQL-DB2:~$ cd replica_db
postgres@BY-PSQL-DB2:~/replica_db$ ls
backup_label.old base pg_commit_ts pg_hba.conf pg_logical pg_notify pg_serial pg_stat pg_subtrans pg_twophase pg_wal postgresql.auto.conf postmaster.opts
backup_manifest global pg_dynshmem pg_ident.conf pg_multixact pg_replslot pg_snapshots pg_stat_tmp pg_tblspc PG_VERSION pg_xact postgresql.conf postmaster.pid
postgres@BY-PSQL-DB2:~/replica_db$ vi postgresql.conf
# - Primary Server -
# These settings are ignored on a standby server.
synchronous_standby_names = '*' # standby servers that provide sync rep
# method to choose sync standbys, number of sync standbys,
# and comma-separated list of application_name
# from standby(s); '*' = all
# - Standby Servers -
# These settings are ignored on a primary server.
#primary_conninfo = 'user=replica host=172.16.30.245 password=password port=5401 application_name=psql1-byond'
#primary_conninfo = '' # connection string to sending server
#primary_slot_name = '' # replication slot on sending server
#hot_standby = on
3.Diserver primary
postgres@BY-PSQL-DB1:~/primary_db$ touch standby.signal
postgres@BY-PSQL-DB1:~/primary_db$ ls
base pg_commit_ts pg_hba.conf pg_logical pg_notify pg_serial pg_stat pg_subtrans pg_twophase pg_wal postgresql.auto.conf postmaster.opts
global pg_dynshmem pg_ident.conf pg_multixact pg_replslot pg_snapshots pg_stat_tmp pg_tblspc PG_VERSION pg_xact postgresql.conf standby.signal
postgres@BY-PSQL-DB1:~/primary_db$ vi postgresql.auto.conf
# - Primary Server -
# These settings are ignored on a standby server.
synchronous_standby_names = '*' # standby servers that provide sync rep
# method to choose sync standbys, number of sync standbys,
# and comma-separated list of application_name
# from standby(s); '*' = all
# - Standby Servers -
# These settings are ignored on a primary server.
#primary_conninfo = '' # connection string to sending server
primary_conninfo = 'user=replica host=172.16.30.246 password=password port=5401 application_name=psql2-byond'
#primary_slot_name = '' # replication slot on sending server
hot_standby = on # "off" disallows queries during recovery
# (change requires restart)
#max_standby_archive_delay = 30s # max delay before canceling queries
postgres@BY-PSQL-DB1:~$ . primary_start.sh
waiting for server to start.... done
server started
postgres@BY-PSQL-DB1:~$ psql -p 5401
psql (16.3 (Ubuntu 16.3-1.pgdg24.04+1))
Type "help" for help.
postgres=# \l
Tidak ada komentar:
Posting Komentar