Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
PostgreSQL

PostgreSQL’de Wal, Replikasyon ve Yedekleme Semineri – (Devrim Gündüz) Notlarım

Paylaş

Bilge Adam Yazılım Semineri kapsamında düzenlenen PostgreSQL’de Wal Replikasyon ve Yedekleme Semineri’ne katıldım.

İçindekiler

  • WAL (Write Ahead Logging)
    • WAL: LSN Log Sequence Number
  • Replikasyon ve PG 12 Yenilikleri
    • Replikasyon Hazırlıkları

Seminer konuşmacısı Türkiye’de PostgreSQL dediğimizde aklımıza ilk gelen kişi PostgreSQL Major Contributor ve #RHCE unvanlarına sahip Gündüz Bilişim Kurucusu Devrim Gündüzdü.

Daha önce konferanslarda da izleme fırsatı bulduğum Devrim Gündüz‘den eğitim alma imkanım olmamıştı.

Başlıktan da anlaşıldığı gibi PostgreSQL’de Wal, Replikasyon ve Yedekleme konu başlıklarında dolu dolu bir 4 saat geçirdim. Zamanın nasıl geçtiğini anlamadım.

PostgreSQL bilgim başlangıç seviyesinde ve bu bilgimi bir yazılımcı olarak ilerletmek istiyorum. Bu eğitim sayesinde PostgreSQL hakkında bilgiler edindim ve çok verimli oldu.

Ayrıca Bilge Adam’ın misafirperveliği içinde teşekkür ederim.

Eğitim kapsamında aldığım/alabildiğim notları paylaşmak ve kendime saklamak istiyorum.

Not: Aldığım notlarda yanlışlık/eksiklik olabilir bilginize.

WAL (Write Ahead Logging)

Wal : Transaction Loglarının yazıldığı kaydedilmesidir.

  • Kesinlikle el ile silmeyeceğiz.
  • Wal veri kaybını önlemek için tasarlanmıştır.
  • 16 mb’lık dosyalarda tutulur.
  • Veri dosyaları her transaction’da değiştirilmez. O nedenle performans artışı olmasına katkı sağlar.
  • PostgreSQL’de yapılan her işlem bir transactiondur. O nedenle transaction iptal olsa bile Wal’a kaydedilir.
  • Varsayılan olarak Wal boyutu 1 GB’tır.
  • Tüm sorgular Shared Buffer’da gerçekleşir.
  • Ramdeki bir veri disktekindeyken farklı ise buna Dirt Buffer diyoruz.
  • Dirty Buffer’leri bgwriter ya da checkpointler sayesinde diske yazıyoruz.

WAL: LSN Log Sequence Number

  • Wal kaydının içerisindeki yerini bildirir sayıdır.
  • 64-bit tamsayı.
  • Bu sayı sayesinde veritabanı sunucularının çökme durumunda kayıp veri varsa kurtarma esnasında page LSN ve Wal’deki LSN’ler karşılaştılır. Büyük olan hangisi ise tam veri oradadır.

  • Bir wal kaydını bgwriter ya da checkpointler diske yazarken zarar görebilir. Tam yazma anında sistem çöktüğü anda diskin üzerinde bulunan page’de bozulur. Her checkpoint sonrasında her sayfa değiştiğinde sayfanın kopsayı Wal’a yazılır. Ve bu sayede veri kurtarılmış olur.
  • Yarım kalırsa Full-page image yapar ve backup block olur.

Replikasyon ve PG 12 Yenilikleri

  • Önceki sürümlerde bulunan Recovery.conf PostgreSQL’de kaldırıldı. Çoğu parametre artık Pgconfig’de yazılıyor.
  • Bazı recovery ile ilgili parametreler artık restart etmeden değiştirilebiliyor.
  • Auto.conf’ta yazılan ayarlamalar postgresql.conf’da yazılan ayarlamaları ezmektedir.
Replikasyon – Genel Özelliker (© Gündüz Bilişim Danışmanlık)
  • Primary yazılabilen ve okunabilen yapıdadır.
  • Standby sadece okunabilen yapıdadır.
  • Teorik olarak 2^32 adet stanby oluşturabiliriz.
  • Replikasyon yaparken kapatmaya gerek yok.

Replikasyon Hazırlıkları

  1. PostgreSQL kurulumu
  2. Primary sunucu yapılandırılması
  3. Replikasyon yetkisine sahip kullanıcı oluşturmak
  4. Replikasyon slot kavramı
  5. pg_basebackup
  • Postgresql.conf Değişiklikleri
listen_adresses = 'localhost'
Code language: JavaScript (javascript)

satırında;

listen_adresses = *

olarak değiştiriyoruz ve sunucuyu yeniden başlatıyoruz.
Kontrol etmek için aşağıdaki komutu yazalım ve sonucuna bakalım.

postgres=# show listen_addresses; listen_addresses ---------------- * (1 row)
Code language: PHP (php)

Konfigürasyonumuz düzgün çalışıyor.

  • Kullanıcı Oluşturma

Kullanıcı ya sadece replikasyon yetkisi vereceğiz.

postgres=# CREATE ROLE replicationuser encrypted password 'sifre' LOGIN REPLICATION;
Code language: PHP (php)

Varsayılan olarak gelen postgres kullanıcı SUPER ADMIN yetkisine sahip olduğu için replikasyon rölünü bu kullanıcıdan alıyoruz.

postgres=# ALTER ROLE postgres NOREPLICATION ;
Code language: PHP (php)

Bu kullancıya bağlanma yetkisi vereceğiz. Nasıl olduğunu daha önce yazmıştım. (Buradan) Bu işlemi yaptıktan sonra yeniden başlıyoruz.

Yazdığımız rolün geçerli olması için reload yapmamız gerekiyor. Bu kod;

postgres=# select pg_reload_conf();
Code language: PHP (php)

Yapılandırma dosyasının geçerli olup olmadığını görmek için ise;

postgres=# select * from pg_hba_file_rules;
Code language: PHP (php)
  • Root kullanıcısıyla kesinlikle işlem yapılmayacak.

Replikasyon yapılacak makinede yedekleme işlemini başlatıcağız.

/usr/pgsql-12/bin/pg_basebackup -D /var/lib/pgsql/12/repdata -Fp -X stream -C -S neswlot1 -c fast -h ip_adress -p 5432 -R -U replicationuser -P
Code language: JavaScript (javascript)

Parametrelere bakalım.

  • -D: Datanın bulunduğu dizini verir.
  • -Fp: 2 farklı yedekleme şekli bulunmaktadır. Sıkıştırılmış ve Full. Burada full alıyoruz.
  • -h: Bağlanacağımız primary sunucusunun host adı.
  • -p: Port numarası.
  • -U: Kullanıcı adı.
  • -P: İşlem yüzdesini gösterir.
  • Standby sunucusunda veritabanı oluşturmuyoruz.
  • İşlem Senkron ya da Asenkron yapılabilir.

Tags:

postgresqlpostgresql bilge adampostgresql devrim gündüzpostgresql seminerreplikasyon postgresqlwal postgresql

Paylaş

Diğer Yazılar

blank
Previous

PostgreSQL FATAL: no pg_hba.conf entry for host user , database , SSL off Hatası Çözümü

Spring Dersleri
Next

Spring Boot Dersleri – Çoklu Veritabanları İle Çalışmak (Spring Data)

Next
Spring Dersleri
28 Ekim 2019

Spring Boot Dersleri – Çoklu Veritabanları İle Çalışmak (Spring Data)

Previews
22 Ekim 2019

PostgreSQL FATAL: no pg_hba.conf entry for host user , database , SSL off Hatası Çözümü

blank

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

blank

PostgreSQL SKIP LOCKED Özelliği Nedir?

blank

PostgreSQL Veritabanı Tablosuna EXCEL / CSV Dosyadan Veri Eklemek

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale