Minggu, 22 Juni 2025

PSQL-replikasi dg bucardo

 

Replikasi PostgreSQL menggunakan Bucardo 5.4.1

Logesh Mohan
Waktu baca 5 menit17 April 2020

Dalam artikel ini, izinkan saya memandu Anda melalui langkah-langkah untuk memigrasikan data PostgreSQL Anda dari AWS RDS antar akun menggunakan Bucardo 5.4.1 dan akan menjelaskan kepada Anda mengapa kami akhirnya menggunakan Bucardo.

Nama saya Logesh Mohanasundaram dan saya adalah Pemimpin Tim di Mallow Technologies Private Limited

Bahasa Indonesia: Baru-baru ini, kami mencari alat PostgreSQL untuk mereplikasi data dari RDS dalam satu akun AWS ke RDS di akun AWS yang berbeda dan kami menemukan beberapa opsi seperti AWS DMS , Stitch dan Bucardo dan kami memeriksa untuk melihat mana di antara opsi yang disebutkan di atas yang sesuai bagi kami dan akhirnya kami memiliki Bucardo yang berfungsi bagi kami dan dengan alat lainnya, kami memiliki beberapa atau yang lainnya yang hilang bagi kami. Untuk memberi Anda contoh tentang apa yang kami katakan sebagai hilang, Dalam database kami, kami memiliki kolom dengan tipe data yang tidak didukung DMS sehingga kami tidak dapat menggunakan DMS dan dengan stitch, itu tidak mendukung replikasi rekaman yang melebihi 4MB dan kami memiliki beberapa rekaman yang melebihi 4MB. Jadi, akhirnya kami memiliki Bucardo yang sangat cocok bagi kami.

Kami menemukan beberapa tutorial tentang migrasi menggunakan Bucardo, tutorial itu tidak mutakhir dan kami merasa, kami dapat menambahkannya agar lebih bermanfaat dan ingin mengatasi area yang kami hadapi selama proses migrasi ini. Jadi, kami menulis tutorial ini dengan harapan ini akan membantu migrasi basis data dengan cepat.

Untuk mengurangi waktu sinkronisasi, kami tidak menyalin seluruh data menggunakan Bucardo. Kami menjalankan snapshot manual di RDS dan membagikannya di seluruh akun ( referensi ) dan kami menjalankan sinkronisasi hanya untuk data yang masuk setelah snapshot direkam. Jangan langsung mengambil snapshot database. Ikuti langkah-langkah di bawah ini yang akan memberi tahu Anda kapan snapshot harus diambil.

Pertama, buat instance EC2 baru di akun AWS Anda dan instal PostgreSQL. Kami menginstal PostgreSQL 9.6 dan dependensinya

Untuk menginstal PostgreSQL dan dependensi dalam instans EC2:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/`lsb_release -cs`-pgdg utama" >> /etc/apt/sources.list.d/pgdg.list'wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O — | sudo apt-key tambahkan -sudo apt-get perbaruisudo apt-get peningkatanapt-get instal libdbix-aman-perl libdbd-pg-perl libboolean-perl postgresql-plperl-9.6apt-get dist-upgrade postgresql-9.6 postgresql-client-9.6 postgresql-contrib-9.6 postgresql-server-dev-9.6

Mengonfigurasi Bucardo:

1. Buat direktori yang diperlukan dan berikan izin:

PostgreSQL memerlukan direktori untuk menyimpan file yang akan digunakan. Jadi, kita akan membuat direktori di /var/log dan /var/run

mkdir -p /var/log/bucardo /var/run/bucardochown -R postgres:postgres /var/log/bucardo /var/run/bucardo

2. Instal Bucardo:

Kita dapat mengunduh Bucardo dari sumbernya dan mengekstrak file yang diunduh di beberapa lokasi /tmp dalam kasus kita. Karena kita tidak menginstal make, saya juga menginstal make di sini pada langkah ini

cd/tmpwget http://bucardo.org/downloads/Bucardo-5.4.1.tar.gztar xvfz Bucardo-5.4.1.tar.gzcd Bucardo-5.4.1perl Makefile.PLapt install buatmembuatmembuat instalasi

3. Perbarui Pengaturan Bucardo:

Pengaturan untuk PostgreSQL lokal akan dimuat dari berkas “.bucardoc” dan akan mencari berkas ini di direktori home. Jadi kita perlu membuat berkas ini dan menambahkan nilai ke berkas tersebut.

lihat $HOME/.bucardorcdbhost=127.0.0.1 
nama db=bucardo
dbport=5432
dbuser=bucardo

4. Instal pemicu Bucardo:

Kita perlu terlebih dahulu mengatur variabel DB sumber yang akan kita gunakan pada langkah selanjutnya dan kemudian mengatur variabel DB tujuan.

ekspor SUMBER_HOST=<NILAI_HOST_DB_SUMBER> 
ekspor SUMBER_PORT=<PORT_DB_SUMBER>
ekspor SUMBER_DATABASE=<NAMA_DB_SUMBER>
ekspor NAMA_PENGGUNA_SUMBER=<NAMA_PENGGUNA_DB_SUMBER>
ekspor SUMBER_PASSWORD=<SUMBER_DB_SUMBER>

Kita perlu menyimpan informasi koneksi PostgreSQL untuk menghubungkan ke PostgreSQL lokal dan kita harus menyimpan pengaturan tersebut dalam file .pgpass dan mengamankannya.

echo "127.0.0.1:5432:bucardo:bucardo:<SET_PASSWORD_UNTUK_DB_LOKAL>" > $HOME/.pgpasschmod 0600 $HOME/.pgpass

Kita dapat menyimpan kredensial login secara lokal di file .pgpass. Variabel DB tujuan tidak ditetapkan sehingga kita dapat memperbaruinya ke file .pgpass secara manual nanti setelah ditetapkan.

kucing >> $HOME/.pgpass <<EOL 
$DEST_HOST:$DEST_PORT:$DEST_DATABASE:$DEST_USERNAME:$DEST_PASSWORD
$SOURCE_HOST:$SOURCE_PORT:$SOURCE_DATABASE:$SOURCE_USERNAME:$SOURCE_PASSWORD
EOL

Kita perlu masuk ke konsol PostgreSQL dan membuat pengguna dengan ketentuan pengguna super dan membuat database dan ekstensi

sudo su - postgres -c "psql postgres"BUAT PENGGUNA bucardo DENGAN SANDI LOGIN SUPERUSER YANG TERENKRIPSI '<PASSWORD_SET_IN_LOCAL_DB>';BUAT DATABASE bucardo;BUAT EKSTENSI plperl;

Keluar dari konsol PostgreSQL dan jalankan

./bucardo install — tenang

Kita perlu mengekstrak skema dari DB Sumber menggunakan perintah pg_dump

pg_dump "host=$SOURCE_HOST port=$SOURCE_PORT dbname=$SOURCE_DATABASE user=$SOURCE_USERNAME" --schema-only | grep -v 'BUAT PEMICU' | grep -v '^--' | grep -v '^$' | grep -v '^SET' | grep -v 'PEMILIK KE' > skema.sql

Kita perlu mengkonfigurasi Bucardo sekarang dan kita akan mulai dengan menambahkan DB sumber terlebih dahulu

bucardo tambahkan db source_db dbhost=$SOURCE_HOST dbport=$SOURCE_PORT nama db=$SOURCE_DATABASE dbuser=$SOURCE_USERNAME dbpass=$SOURCE_PASSWORD

Saatnya untuk snapshot:

Ambil Snapshot DB sumber sekarang dari RDS dan bagikan ke akun lain dan pulihkan DB. Kemudian atur variabel db tujuan

ekspor DEST_HOST=<NILAI_DESTINATION_DB_HOST> 
ekspor DEST_PORT=<PELABUHAN_DB_TUJUAN>
ekspor DEST_DATABASE=<NAMA_DB_TUJUAN>
ekspor DEST_USERNAME=<NAMA_DB_TUJUAN>
ekspor DEST_PASSWORD=<PASSWORD_DB_TUJUAN>

Anda perlu memperbarui file .pgpass dengan nilai db tujuan. Anda dapat menghapus semua nilai dan menjalankannya lagi atau memperbarui nilai dalam file secara manual.

kucing >> $HOME/.pgpass <<EOL 
$DEST_HOST:$DEST_PORT:$DEST_DATABASE:$DEST_USERNAME:$DEST_PASSWORD
$SOURCE_HOST:$SOURCE_PORT:$SOURCE_DATABASE:$SOURCE_USERNAME:$SOURCE_PASSWORD
EOL

Sekarang, kita perlu membuat database di database tujuan

psql "tuan rumah=$DEST_HOST port=$DEST_PORT pengguna=$DEST_USERNAME nama db=postgres"

Dengan database yang dibuat, kita perlu memuat skema ke dalamnya

psql "tuan rumah=$DEST_HOST port=$DEST_PORT nama db=$DEST_DATABASE pengguna=$DEST_USERNAME" -f skema.sqlpg_dump "host=$DEST_HOST port=$DEST_PORT dbname=$DEST_DATABASE user=$DEST_USERNAME" --schema-only | grep -v 'BUAT PEMICU' | grep -v '^--' | grep -v '^$' | grep -v '^SET' | grep -v 'PEMILIK KE' > schema_dest.sql

Kita kemudian perlu menambahkan DB tujuan ke bucardo

bucardo tambahkan db dest_db dbhost=$DEST_HOST dbport=$DEST_PORT nama db=$DEST_DATABASE dbuser=$DEST_USERNAME dbpass=$DEST_PASSWORD

Untuk mencantumkan sumber dan tujuan db

daftar dbs bucardo

Kita dapat menambahkan tabel yang ingin kita migrasikan dengan nama tabel yang dipisahkan dengan spasi atau jika kita perlu memigrasikan semua tabel, kita dapat melakukannya dengan menentukan semua tabel dan menambahkannya ke kawanan.

bucardo tambahkan semua tabel --herd=sampleherd (nama apa pun)

Jika Anda ingin mengecualikan satu tabel atau beberapa tabel, kita dapat melakukannya dengan perintah remove table

bucardo hapus tabel public.table_locks --herd=sampleherd (kawanan yang dibuat pada langkah sebelumnya)

Jika kita juga memerlukan urutan yang disinkronkan, kita dapat melakukannya

bucardo tambahkan semua urutan --herd=sampleherd (kawanan yang dibuat pada langkah sebelumnya)

Kita dapat membuat daftar kawanan menggunakan perintah berikut dan kita akan melihat kawanan yang kita buat dan sekarang semuanya sudah siap. Kita juga dapat mengonfigurasi quick_delta_check dan log_level

daftar ternak bucardobucardo mengatur quick_delta_check=0bucardo tetapkan log_level=VERBOSE

Bangun sinkronisasi dengan perintah berikut dan daftarkan sinkronisasi untuk melihat apakah sudah diatur

bucardo menambahkan sinkronisasi samplesync herd=sampleherd dbs=source_db:source,dest_db:target onetimecopy=1sinkronisasi daftar bucardo

Sekarang jalankan perintah start untuk db untuk memulai sinkronisasi

bucardo mulai

Kita dapat memeriksa log di file log.bucardo

ekor -f /var/log/bucardo/log.bucardo

Sekarang Anda dapat membuka konsol PostgreSQL di DB tujuan dan Anda dapat meminta db untuk melihat apakah entri di DB sumber disinkronkan. Dan saat data masuk ke DB sumber, pemicu akan dijalankan dan data akan disinkronkan ke DB tujuan. Meskipun ini proses yang panjang, artikel ini pasti akan membantu Anda menyiapkan dan menjalankan berbagai hal.

Tidak ada komentar:

Posting Komentar