PostgreSql Master Slave Replication Kurulumu

Deniz TÜRKMEN
4 min readNov 15, 2022

--

Ubuntu 20.04 Kurulum Örneği

Merhabalar,

Bu yazımda PostgreSql Master ve slave replication kurulumu inceliycez. İlk olarak postgresql nedir buna bakalım.

PostgreSql: Açık kaynak kodlu, ücretsiz ve platform bağımsız gelişmiş bir nesne ilişkisel (RDBMS) veritabanı yönetim sistemidir.

Uygulamamız için iki farkı sunucu gerekmektedir. İsterseniz sunucuları kendi sisteminize göre çoğaltabilirsiniz. Örneğimiz için VirtualBox ile iki farklı makineye ubuntu 20.04 kurulumu gerçekleştirdim.

Birinci sunucu bilgileri;

  • Ip Adresi: 192.168.1.25
  • Hostname: master-server

İkinci sunucu bilgileri;

  • Ip Adresi: 192.168.1.30
  • Hostname: slave-server

İki sunucumuzda postgresql kurulu olması gerekmektedir. Eğer kurulu değilse,

sudo apt updatesudo apt-get install postgresql postgresql-client postgresql-contrib

Komutları ile kurulumu gerçekleştirebilirsiniz. Tek bir terminalden kurulumları gerçekleştirmek için iki sunucuyada ‘ssh’ bağlantısı yapıyoruz. Eğer ssh yüklü değil ise,

sudo apt updatesudo apt install -y openssh-server

Komutları ile kurulum yapabilirsiniz.

İlk olarak master sunucumuz için,

  • cd /etc/postgresql/12/main/
  • ls
  • postgresql.conf yedeğini alıyoruz.
  • sudo cp postgresql.conf old_postgresql.conf

Bu yedeği aldıktan sonra vim editörü ile ‘postgresql.conf’ dosyasını açıyoruz. listen_address = ‘*’ yada listen_adress=’master_sunucu_ip_adresi” yazıyoruz.

Not: Vim editöründe arama yapmak için,

  • / dedikten sonra aranacak kelime,kelime bulunca entera basılır.

Şimdi de Postgresql bağlanıp bir tane user oluşturalım. Bunun için,

sudo susu — postgrespsqlCREATE USER user_name WITH REPLICATION ENCRYPTED PASSWORD ‘password’;\du

Yukarıdaki şekilde görüldüğü gibi ‘replicadenizuser’ adında bir tane user oluşturduk ve şifresini belirledik. Burada belirlediğimiz şifre önemlidir. Slave sunucumuzu master sunucumuza bağlarken kullancağımız şifredir.

Şimdi de ‘pg_hba.conf’ dosyasını ayarlayalım. Bunun için,

sudo vim pg_hba.conf’

Burada master sunucumuza bağlayacağımız slave sunucumuzun bilgileri giriyoruz.

Buradaki son satırı ekliyoruz. Daha doğrusu ‘replication privilege’ yazan alanın altına ekleme yapıyoruz. replicadenizuser benim masterda yarattığım user ismi ip adresi ise slave sunucu olarak bağlayacağımız sunucunun ip adresidir.

Şimdide postgresql restart edip durumuna bakalım.

Görüldüğü gibi çalışıyor. Şimdide slave sunucumuzu ayarlayalım. Bunun için,

  • systemctl status postgresql
  • sudo su
  • cp -r /var/lib/postgresql/12/main/ /var/lib/postgresql/12/main_old/
  • rm -rf /var/lib/postgresql/12/main/

Şimdide backup için slave sunucumuzu ayarlayalım. Bunun için,

pg_basebackup -h master_ip -D /var/lib/postgresql/12/main/ -U replicauserdeniz -P -v -R -X stream -C -S slave1

Not: Buradaki password master sunucumuzda oluşturduğumuz user şifresidir. Benim oluşturduğum şifre -> ‘denizturkmen’ giriyorum ve configurasyon sağlanmış oluyor.

Not: Slave sunucumuzun sadece okuma(read) yetkisi vardır.

pg_basebackup komutundan sonra postgresql restart ediyoruz.

systemctl restart postgresql

Slave sunucumuzdan,

  • sudo su
  • su — postgres
  • psql
  • create database deneme;

Gördüğünüz gibi hata aldık. Çünkü slave sunucumusun sadece okuma yetkisi vardır. Şimdi master sunucumuza geçip database, tablo ve tabloya bir kayıt ekleyelim.

  • sudo su
  • su — postgres
  • psql
  • create database test;
  • \l -> database listeler.
  • \c test; -> schema yani database seçilir.
  • create table Person ( name text, surname text);
  • \dt -> tablo listeler.
  • INSERT INTO Person VALUES (‘deniz’,’turkmen’);
  • Select * from Person;

Evet database,tablo ve tabloya kayıt ekledik. Slotu kontrol etmek için,

Şimdi de slave sunucumuza bağlanıp bakalım.

Görüldüğü gibi masterda yapılan işlemler slave sunucumuza yansımış durumdadır.

Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için teşekkürler.

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

No responses yet