Kategori: POSTGRESQL

PostgreSQL 11 to 12 Upgrade

PostgreSQL 11 to 12 Upgrade

PostgreSQL11 den PostgreSQL12 e upgrade için buyrun 🙂

223 total views, 5 views today

PostgreSQL 11 Kurulumu

PostgreSQL 11 Kurulumu

PostgreSQL open source yalın bir veritabanıdır.Bunun bazı avantaj ve dezavantajları bulunmaktadır. İhtiyacınıza göre PostgreSQL’i şekillendirebilir ve ihtiyacınıza göre kurulumları yapabilirsiniz.

PostgreSQL’in üzerinde birden fazla kritik veritabanlarının olacağını düşünerek kurulumlarımızı gerçekleştirelim.

 

İlk olarak postgresql’in reposunu aşağıdaki şekilde indirelim.

 

wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 

İndirdikten sonra paketi yükleyelim.

yum install pgdg-redhat-repo-latest.noarch.rpm

 

PostgreSQL kurulumuna geçelim.

 

yum install postgresql11 postgresql11-devel postgresql11-contrib postgresql11-libs postgresql11-server

 

 

postgresql11install

PostgreSQL kurulumunu tamamladık şimdi ise dosyalarımızı oluşturalım. Dosyaları oluştururken yeni versiyon çıktıktan sonra upgrade yapılacağını düşünerek versiyonlamayı tercih ediyorum bunun yanı sıra data ve log dizinini ssd ağırlıklı planlamanızı öneririm.

mkdir -p  postgresql11/data mkdir -p  postgresql11/log mkdir -p  postgresql11/archive

 

Kurulumu yaptık ve postgres kullanıcısı işletim sistemi tarafında oluştu şimdi ise dosyalarımıza yetki tanımlayalım.

chown -R postgres:postgres /postgresql11/ chmod -R 700 /postgresql11/

 

Aşağıda yetkilerin tanımlandığını görebilirsiniz.

chown chmod postgres

Postgresql11 içerisindeki dosyaları da kontrol edelim.

Yukarıda görüldüğü gibi subfolderların da yetkiyi aldığını görüyoruz. PostgreSQL’in data ve log dosyalarının tutulacağı yerleri belirtmek ve PostgreSQL in gerekli kurulumları yapması  için initdb komutunu çalıştırıyoruz.

İnitdb yapılmadan önce postgres kullanıcısına geçmemiz gerekiyor.

su postgres

 

Postgres kullanıcısına geçtikten sonra aşağıdaki gibi data ve log dosyalarını belirterek initdb yapıyoruz .Belirtilmez ise default path de kurulacaktır.

 

/usr/pgsql-11/bin/initdb -D DATA_DOSYASI -X LOG_DOSYASI

 

 

-D parametresi ile data dosyaların oluşacağı yeri ,-X ile de log dosyalarının tutulacağı yeri belirtiyoruz.

 

/usr/pgsql-11/bin/initdb -D /postgresql11/data -X /postgresql11/log

 

Yukarıdaki gibi initdb yapıldı ve cluster bazında default konfigürasyonlar yapıldı.

Bunu yaptıktan sonra pg_ctl ile postgresql servisini başlatabiliriz ya da systemctl dosyasını düzenleyerek systemctl ile postgresql’i başlatabiliriz. Aşağıda iki yöntemi de anlatacağım ikisinin de artıları ve eksileri bulunmaktadır. Ben genellikle systemctl ile data dizinin yerini belirterek servisi başlatmayı tercih ediyorum .

İlk olarak pg_ctl ile başlatacağız.

/usr/pgsql-11/bin/pg_ctl -D /postgresql11/data -l /postgresql11/log start

 

Yukarıdaki gibi  -l parametresini değiştirip log dizinini  belirterek postgresql servisini başlatabilirsiniz .

Systemctl ile  başlatmak için aşağıdaki adımları izleyebilirsiniz.Aşağıdaki işlemleri root kullanıcısı ile yapmamız gerekiyor.

İlk olarak postgresql servisini vi editörü ile açıyoruz

vi /lib/systemd/system/postgresql-11.service

 

 

Yukarıdaki gibi başarılı şekilde data dizinini yazdıktan sonra kaydedip çıkıyoruz.

 systemctl enable postgresql-11.service

 

Servisi enable ettikten sonra servisi aşağıdaki şekilde başlatıyoruz.

  systemctl start postgresql-11.service

 

Servisimiz başarılı şekilde başladı servisin durumunu aşağıdaki komut yardımı ile kontrol ediyoruz.

 systemctl status postgresql-11.service

 

Yukarıdaki resimde görüldüğü gibi servisi durumunda active running yazıyorsa kurulumu başarılı bir şekilde gerçekleştirdiniz.

227 total views, 6 views today

PostgreSQL de Owner Kullanıcısını Silmek

PostgreSQL de Owner Kullanıcısını Silmek

PostgreSQL de bazı objelerin ownerını almak istediğinizde hata ile karşılabilirsiniz eğer kullanıcının veritabanında ki tüm ownerını almak isterseniz aşağıdaki komutu çalıştırmak yeterli olacaktır .

529 total views, 4 views today

PostgreSQL de Spesifik Yetkileri Almak

PostgreSQL de Spesifik Yetkileri Almak

Uygulamada userların  yetkisini almak isteyebilirsiniz bu durumda aşağıdaki plpgsql komutlarından yararlanabilirsiniz. İlk olarak sytanxlarını sonra örnekleri görelim..

545 total views, 3 views today

PostgreSQL de Kolonun Veri Tipini Değiştirmek

PostgreSQL de Kolonun Veri Tipini Değiştirmek

Uygulamamız için normalizasyon kurallarına dikkat ederek veritabanın içine tablo oluşturduk fakat oluşturduğumuz tablonun içinde kolonun veri tipini farklı oluşturmuşuz bundan dolayı drop create yapmanıza gerek yok .Aşağıdaki komutu kullanarak kolonun veri tipini değiştirebilirsiniz. Farklı bir senaryoda söyleyecek olursak tablonun içine verileri insert ettiniz fakat ederken data tipinin karakter sayısından daha fazla karaktere ihtiyaç duyduğunu gördünüz böyle durumlarda PostgreSQL bunu iki şekilde yapar .Birisi tablo re-create’i  diğeri ise tablonun point’ni değiştirerek gerçekleştirir.

709 total views, 3 views today

MSSQL den PostgreSQL e Linked Server

MSSQL den PostgreSQL e Linked Server

PostgreSQL den MSSQL e dataları aktarmak  yada MSSQL üzerinden PostgreSQL e sorgu yapmak isteyebilirsiniz. Bunun için farklı yöntemler vardır .Bunlardan birisi linked serverdır. Bu yöntem ile  verileri görmeyi anlatacağım bu yazımda.

591 total views, 3 views today

PostgreSQL de Anlık Sorguları İzlemek

PostgreSQL de Anlık Sorguları İzlemek

Postgresql üzerinde bazen yapılan işlemleri görmek isteriz. Bunun için farklı yöntemler ve Tool’lar bulunmaktadır. Örneğin basit ve ücretsiz tool olan PgAdmin üzerinden incelenebilir  fakat script ile kendim sorguyu çalıştırarak izlemek isterim derseniz aşağıdaki komuttan faydalanabilirsiniz. 

626 total views, 3 views today

PostgreSQL AWR

PostgreSQL AWR

PostgreSQL de yoğunluk, dar boğaz yada daha farklı olaylarda  cluster ve veritabanı bazlı inceleme yapmanız için birden fazla şeyleri incelemeniz gerekebilir. Performans sorunu yaşandığını düşünürsek  bu sorunun tespiti için indexlerin kullanılıp kullanılmadığını  ,I/O ,cpu gibi şeyleri inceleriz .Bunlar için tek tek sorgu yazmamız ve tek tek incelememiz gerekir .Bu işlemleri yapmaktansa hepsini bir arada toplayıp html formatında çıktısını veren pg_profile extensionını kullanabiliriz.

Pg_profile extension’ı PostgreSQL ‘in standart istatistik görünümlerine dayanmaktadır. Pl/pgsql ile yazılmıştır .Çalışma mantığı olarak Oracle AWR mimarisine benzemektedir. Oracle da ki gibi belirlenen zamanlarda snapshot alır ve bu snapshotlar arasında ki istatistiksel verileri yorumlamak için size html formatında verir.

Kısa bilgiden sonra  nasıl kurabiliriz ve bunu nasıl sistemimize uyarlayabiliriz onu anlatalım.

Kuruluma geçmeden önce postgresql.conf da bazı konfigurasyonları yapmamız gerekiyor .Bunları aşağıdaki gibi ayarlayabiliriz.

İstatistikleri toplamak için postgresql.conf üzerinden değiştirmemiz gerekir.

track_activities = on

track_counts = on

track_io_timing = on

track_functions = on

Yukarıdaki adımlar yapıldıktan sonra pg_stat_statements parametrelerini değiştiriyoruz.

shared_preload_libraries = 'pg_stat_statements'

pg_stat_statements.max = 1000

pg_stat_statements.track = 'top'

pg_stat_statements.save = off

İlk olarak github da belirtilen pg_profile extensionını aşağıdaki linkten indirmemiz gerekiyor.

https://github.com/zubkov-andrei/pg_profile

Sunucuya ilgili dosyayı indirdikten sonra klasorün içine girerek aşağıdaki adımları izliyoruz.

Make komutunu çalıştırıyoruz.

make install

Bu işlemi yaparken aşağıdaki gibi hata alıyorsanız aşağıdaki gibi path parametresinin sonunda make install yazarak yapabilirsiniz.

PATH=/usr/pgsql-10/bin:$PATH  make install

Make install komutunu çalıştırdık ve gerekli konfigurasyonları yaptıysak psql client’ı ile PostgreSQL e bağlanarak extensionları aşağıdaki gibi oluşturabiliriz.

CREATE EXTENSION dblink;

CREATE EXTENSION pg_stat_statements;

CREATE SCHEMA profile;

Pg_profile sekmesinde oluşturulacak bütün nesnelerin profile şemasında oluşturulması için aşağıdaki komutu çalıştırabiliriz.

CREATE EXTENSION pg_profile SCHEMA profile;

Extension’ı güncellemek içinde aşağıdaki komuttan yararlanabilirsiniz.

alter extension pg_profile update;

Yukarıda bahsettiğim gibi pg_profile’ın çalışma mantığı  belirlenen zamanlarda snapshot alır ve bu snapshotlar arasında ki istatistiksel verileri yorumlamak için size html formatında verir. Bundan dolayı crontab a snapshot functionlarını aşağıdaki gibi eklememiz gerekiyor. Ben yarım saatte bir alacak şekilde ayarladım fakat siz daha kısa süreli yapabilirsiniz.

Crontab -e ile crontabı açıyoruz ve aşağıdaki komutları ekliyoruz.

*/30 * * * *   psql -c 'SELECT profile.snapshot()' > /var/log  2>&1

*/30 * * * *   psql -c 'SELECT snapshot()' > /var/log  2>&1

Yukarıdaki komutta logları var/log dizinin altına yazmasını istedim isterseniz siz değiştirebilirsiniz.Aşağıdaki komut yardımı ile belirtilen saatten önce snapshot alabilirsiniz.

psql -c 'SELECT profile.snapshot()'

Aşağıdaki komut yardımı ile aldığınız snapshotları görüntüleyebilirsiniz.

select*from snapshot_show();

Snapshotları aldıktan sonra aşağıdaki komut yardımı ile alınan snapshotları listeleyebiliriz.

AWR raporu şeklinde listelemek içinde aşağıdaki komutu kullanabiliriz.outputtan sonra path belirtip oraya yazdırabilirsiniz hiç bir şey verilmezse bulunduğunuz dizine oluşturur.

 psql -qtc "SELECT profile.report(1,8)" --output awr_report_postgres_1_8.html

Yukarıdaki scriptin çıktısı aşağıdaki gibi olacaktır.

716 total views, 4 views today

Pgtune ile PostgreSQL.conf Konfigürasyonları

Pgtune ile PostgreSQL.conf Konfigürasyonları

PostgreSQL yalın halde tutulmuş veritabanıdır ve konfigurasyonlar yapmadan belirli bir süreye kadar çalışmaya devam eder fakat veritabanlarında yük oldukça problemler çıkmaya başlayacaktır.

Sorunların çıkmaması ve performans kaybı yaşanmaması için  sistem ve kullanılan kaynaklara göre gerekli çalışmaları yapmamız gerekir. Bunun için postgresql.conf dan gerekli konfigurasyonları yapmanız gerekecektir .postgresql.conf dosyasını ve sistemi sizin verdiğiniz parametreleri baz alarak yapan bazı toollar bulunmaktadır fakat bu toollar yerine sizin sistemi izleyerek gerekli parametreleri belirlemenizi tavsiye ederim.Fakat ilk kez postgresql kurulumu yaptınız ve  standart konfigurasyonlarda kalmasın diyorsanız bahsedeceğim pg_tune aracını kullanabilirsiniz.

 PgTune  sistem analizi ve  parametrelere göre önerilen konfigurasyon karşımıza çıkıyor.

Pg_tune ile ilgili  dosyaları indirmek için aşağıdaki linkten faydalanabilirsiniz.

https://github.com/le0pard/pgtune

Linkte belirtilen dosyaları indirdikten sonra indirilen dizine girerek aşağıdaki komutlar yardımı ile pgtune’u çalıştırıyoruz.

pgtune’u çalıştırırken aşağıdaki gibi postgresql.conf pathini girmemiz gerekiyor .Aşağıdaki komutu çalıştırarak farklı kullanımlarını görebiliriz.

./pgtune --help

Aşağıda connection sayısını belirterek önerilen konfigurasyonları aşağıdaki şekilde görebilirsiniz.

./pgtune -i /var/lib/postgresql/10/data/postgresql.conf  -c 1000

Bu size karışık geldiyse  aşağıda linki verilen sitede DB versiyonu ,işletim sistemi ,DB tipi ,total memory,cpu ve connection sayıları ve disk ile ilgili değerleri girerek verilen  konfigurasyonu kullanabilirsiniz. 
 
https://pgtune.leopard.in.ua/#/

Yukarıdaki linkte sitede pg_tune aracını kullanarak hesaplamalar yapacaktır.

569 total views, 3 views today

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa