Bagaimana replikasi streaming Postgres 9.2 menangani perubahan skema, dan pengaturan tabel awal?

8

Saya ingin mengatur basis data cadangan pada server fisik yang berada tepat di bawah server basis data fisik utama saya. Saya menggunakan Postgres 9.2, dan saya ingin menggunakan sinkronisasi, streaming replikasi (untuk atomicity), tapi saya sama sekali tidak mengetahui bagaimana hal-hal seperti, A) pengaturan tabel awal ditransfer dari server 1 ke server 2 (misalnya, saya menjalankan syncdbdari aplikasi Django saya, yang membuat serangkaian tabel pada server 1), dan B) seberapa lanjut perubahan skema dilakukan dari server 1 ke server 2 (misalnya, saya menjalankan migrasi Django Selatan, yang mengirimkan ALTER TABLEpermintaan, serta menambahkan / menghapus indeks, dll.). Apakah hal-hal ini ditangani secara transparan dengan replikasi streaming, atau adakah yang harus saya lakukan untuk memengaruhi perubahan ini di kedua server?

orokusaki
sumber

Jawaban:

14

Jika Anda bermaksud menggunakan replikasi streaming bawaan PostgreSQL, maka Anda menyemai replika dengan cadangan dasar - salinan level sistem file dari database asli. Jadi sudah memiliki semua tabel dan data dari master. pg_basebackupbiasanya digunakan untuk ini.

Replikasi streaming membaca perubahan pada tingkat blok dari log tulis-depan, sehingga basis data tetap sama secara fisik. Karena DDL, seperti halnya DML, direkam dalam WAL, DDL dan DML keduanya direplikasi secara transparan.

Lihat dokumentasi HA dan replikasi di PostgreSQL untuk informasi lebih lanjut.

Craig Ringer
sumber