Bucardo Postgresql MultiMaster replication

Bucardo Postgresql Multi Master replication,

Bucardo: PostgreSQL için Aktif-Aktif Replikasyon Çözümü

Veritabanı sistemlerinde yüksek kullanılabilirlik ve dayanıklılık önemlidir. PostgreSQL, açık kaynaklı ve güçlü bir ilişkisel veritabanı yönetim sistemidir ve birçok projede tercih edilen bir seçenektir. PostgreSQL’in bir veritabanı sunucusundan diğerine veri replikasyonunu sağlamak için Bucardo, güvenilir ve esnek bir çözümdür. Bu makalede, Bucardo’nun PostgreSQL üzerinde nasıl kullanılabileceği ve aktif-aktif replikasyon mimarisinin nasıl oluşturulacağı anlatılacaktır.

Bucardo Nedir?

Bucardo, PostgreSQL için yazılmış bir veri replikasyon aracıdır. Bucardo’nun temel amacı, birden fazla PostgreSQL sunucusu arasında verilerin güvenilir bir şekilde senkronize edilmesini sağlamaktır. Bucardo, esnek bir yapıya sahiptir ve veritabanları arasında çeşitli senkronizasyon modelleri sağlar, bunlar arasında aktif-aktif replikasyon da bulunur.

Multi master replication ? Aktif-Aktif Replikasyon Nedir?

Aktif-aktif replikasyon, bir veritabanı sistemine yapılan yazma (write) işlemlerinin, birden fazla sunucuda gerçekleştirildiği bir replikasyon modelidir. Bu modelde, her sunucu hem okuma (read) hem de yazma işlemlerini destekler ve veri tutarlılığını sağlamak için senkronizasyon mekanizmaları kullanılır. Aktif-aktif replikasyon, yüksek performans, yüksek kullanılabilirlik ve yedeklilik sağlar.

İki nodelu bir yapı düşünelim birinci node read-write işlemleri yapılırken ikinci node da aynı şekilde read-write işlemleri yapılabilir.

Bucardo’nun Kurulumu ve Yapılandırması

  • Ubuntu üzerinde PostgreSQL ve Bucardo paketlerinin kurulumu.
  • Bucardo veritabanının oluşturulması ve konfigürasyon dosyalarının düzenlenmesi.
  • Senkronizasyon gruplarının tanımlanması ve tabloların belirlenmesi.
  • Bucardo sunucusunun başlatılması ve durumunun kontrol edilmesi.
  • Aktif-Aktif Replikasyon Senaryosunun Oluşturulması
  • İlk sunucuda bir veritabanı oluşturulması ve tabloların tanımlanması.
  • İkincil sunucunun eklenmesi ve Bucardo tarafından senkronizasyonun sağlanması.
  • Veri değişikliklerinin her iki sunucuda senkronize edilmesi.

Bucardo’nun Avantajları ve Uygulama Senaryoları

 

Yüksekme ve yük dengelemesi: Aktif-aktif replikasyon, veri yazma işlemlerinin birden fazla sunucuda gerçekleştirilmesini sağlar, böylece yüksek taleplerde daha iyi performans elde edilir ve sunucu kaynakları dengelenir.

Yüksek kullanılabilirlik: Her sunucu, veritabanına yapılan istekleri işleyebilir, böylece bir sunucunun hizmet dışı kalması durumunda diğer sunucu devreye girebilir ve kesintisiz hizmet sağlanabilir.

Veri yedekliliği: Aktif-aktif replikasyon, verilerin her iki sunucuda da tutulmasını sağlar, böylece bir sunucunun verileri kaybetmesi durumunda diğer sunucudan yedek veriler elde edilebilir.

 

Lokal veri erişimi: Her sunucu, yerel veritabanına erişebildiği için uygulamaların yerel sunucuya erişim yapması, veri erişimi hızını artırır ve ağ trafiğini azaltır.

Bucardo, PostgreSQL kullanıcıları için güçlü bir aktif-aktif replikasyon çözümü sunar. Aktif-aktif replikasyon, yüksek kullanılabilirlik, performans artışı ve yedeklilik gibi avantajlar sağlar. Bu makalede, Bucardo’nun kurulumu, yapılandırılması ve bir aktif-aktif replikasyon senaryosunun oluşturulması adımları anlatılmıştır. Aktif-aktif replikasyon ihtiyacı olan PostgreSQL kullanıcıları, Bucardo’nun sağladığı esneklik ve güvenilirlikten faydalanabilirler.

Bucardo için kullanılan veritabanı ve sunucu bilgileri aşağıdaki gibidir.

Birinci sunucu : 192.168.242.161

İkinci  sunucu : 192.168.242.162

Aktif aktif kullanılacak veritabanı adı : d1bucardo

 

Sunucu üzerinde postgresql kurulu olması gerekmektedir. Postgresql kurulumu için postgresql13 KURULUMU isimli yazımdan kurulumu yapabilirsiniz.

İlk olarak aşağıdaki komut yardımı ile iki sunucuda da bucardo paketlerini yüklüyoruz.

apt-get install bucardo -y

İki sunucu üzerinde aşağıdaki export scriptlerini çalıştırıyoruz.

export TWO_HOST=192.168.242.161
export TWO_PORT=5432
export TWO_DATABASE=d1bucardo
export TWO_USERNAME=bucardo
export TWO_PASSWORD=bucardo
export ONE_HOST=192.168.242.162
export ONE_PORT=5432
export ONE_DATABASE=d1bucardo
export ONE_USERNAME=bucardo
export ONE_PASSWORD=bucardo

 

Pgpass klasörünü oluşturup yetki veriyoruz.

echo "127.0.0.1:5432:bucardo:bucardo:bucardo" > $HOME/.pgpass
chmod 0600 $HOME/.pgpass
cat >> $HOME/.pgpass <<EOL
$ONE_HOST:$ONE_PORT:$ONE_DATABASE:$ONE_USERNAME:$ONE_PASSWORD
$TWO_HOST:$TWO_PORT:$TWO_DATABASE:$TWO_USERNAME:$TWO_PASSWORD
EOL
chmod 0600 $HOME/.pgpass

 

Postgresql  aşağıdaki gibi bağlanarak devam ediyoruz.

psql -U postgres  -d postgres

Bucardo için  kullanıcı ve veritabanını oluşturarak devam ediyoruz.

CREATE USER bucardo WITH LOGIN SUPERUSER ENCRYPTED PASSWORD 'bucardo';
CREATE DATABASE bucardo;

Plperl dili kullanıldığından dolayı extension’ı oluşturarak devam ediyoruz.

CREATE EXTENSION plperl;

Multimaster olarak kullanacağımız veritabanını oluşturuyoruz ve içerisine tablo oluşturuyoruz. İki sunucuda da aynı işlemi yapmanız gerekiyor oluşturmak istemezseniz backup restore ile dönebilirsiniz.

create database d1bucardo;
\c d1bucardo
create table d1table(id int primary key ,name varchar(20),node varchar(20));

Bucardo kurulumu her iki sunucuda  yapıyoruz.


Gelen pencere de “P” yazarak devam ediyoruz.

bucardo add db TWO_db dbhost=$TWO_HOST dbport=$TWO_PORT dbname=$TWO_DATABASE dbuser=$TWO_USERNAME dbpass=$TWO_PASSWORD

bucardo add db ONE_db dbhost=$ONE_HOST dbport=$ONE_PORT dbname=$ONE_DATABASE dbuser=$ONE_USERNAME dbpass=$ONE_PASSWORD

Aşağıdaki komut yardımı ile eklediğimiz sunucuları kontrol edelim.

bucardo list dbs

Başarılı bir şekilde eklendi.

Birden fazla tablo olduğu durumda aşağıdaki komutta all tables yerine tabloları yazarak eklemeler yapabilirisiniz ya da eklenmesini istemediğiniz   tabloları   “–exclude-table” yada “-T ” ile belirterek  hariç tutabilirsiniz.

bucardo add all tables --herd=sampleherd 

bucardo list herds

Tablomuzun eklendiğini görüyoruz.

Aşağıdaki komut yardımı ile senkronizasyon ayarlarını yapıyoruz.

bucardo add sync samplesync herd=sampleherd dbs=one_host:source,two_host:source onetimecopy=2

DİKKAT !!!

Yukarıda dbs de yazdığımız parametrelerle   mimari değişikliği olmaktadır.

Source-source yazıldığında multi-master replication

Source -destinitaion yazıldığında active-pasive replication

Bucardo servisimizi başlatıyoruz.

bucardo start


Bucardo servisimizi kontrol edelim.

Bucardo status

Yukarıda görüldüğü gibi herhangi bir problem gözükmemektedir.

İki sunucuya da insert yaparak aktif aktif olduğunu teyit edelim.

Yukarıda görüldüğü  gibi iki sunucuya da aynı anda insert yaptık ve ikisinde de insertler eklendi ve eşitlendi.

Bucardo multi-master replication dezavantajları

  • DDL işlenemiyor.
  • Büyük nesneler işleyemez.
  • Primary key olmadan tablolar çoğaltılamaz

 

Bucardo multi-master replication kurulumu tamamlanmıştır .

Loading