Öncelikle çok sorulan bir soruyu cevaplayarak başlamak istiyorum, PostgreSQL database yeni kullanmaya başlayacağız, ancak hangi işletim sistemini seçmeliyim sorusu ile başlayalım , bunun cevabı kişiye göre değişebilir benim gerekçelerim ile cevabım ise aşağıdaki gibidir;
PostgreSQL open source bir VTYS yazılım sistemidir ve arkasında güçlü bir topluluk bulunmaktadır, burada bunu kullanan ve buraya paketleri düzenleyen bir topluluk var, bu topluluğun ise önceliği en çok kullanıcı neredeyse haliyle oraya ilk düzenlemeleri paketleri geliştirmek olacaktır, oraya öncelikle güncelleme ve paket hazırlayacaktır, buradaki kullanım oranlarına baktığımızda ise PostgreSQL kullanımının en çok Centos Redhat grubunda olduğunu %50 den fazla kullanıcının, burada bulunduğunu söylersek yanlış bir şey söylemiş olmayız olmayacaktır, dolayısıyla buradaki extension sayıları, çıkarılmış paket sayıları ve dökümanların sayıları, haliyle bununla orantılı diğer işletim sistemlerine göre fazladır, buda başlangıçtaki arkadaşlar için bir avantaj olarak görülebilir ve bu işletim sistemleri ile yola başlamaları daha mantıklı olacağını ben düşünmekteyim.
Bir konuyu ayrıca belirtmeden geçmeyeyim burada bahsettiğim OS ler içerisinde kesinlikle Windows yok, çünkü Open source bir VTYS yi tutupta Windows koymak zaten uygun değil , ayrıca bu VTYS zaten Windows göre hazırlanmamıştır, Windowsta developer ve test yapan arkadaşlar için uygundur ancak kesinlikle production ortam için uygun değildir.
Gelelim debian tabanlı OS ler için PostgreSQL kullanımına performans olarak Centos Redhat grubundan bir farkı olacağını söylemek doğru olmaz, ancak yukarıda da bahsettiğim üzere kullanıcı ve paket sayıları bakımında Centos ve Redhat daha avantajlı olarak görünmektedir, ama tercih tabiki ubuntuda, debian gurubuda olabilir, danışmanlığını yaptığım bazı kurumlara ne kadar ben tavsiye etsemde bazıları ubuntu tercih etmek isteyebiliyorlar, tabiki ubuntuda kullanılabilir.
Burada ubuntu üzerinde kurulum ve konfigürasyon örneği veriyor olacağım oldukça PostgreSQL kurulumu zaten oldukça basit ,ubuntu tarafında farklı olan bazı kısımlar mevcut, bunlara ayrıca değineceğim,
Öncelikle kullanacağımız OS için PostgreSQL repolarını tanıtacağız sonrasında apt paket yöenticisi ile ilgili paketkerin kurulumunu yapıyor olacağız.
Öncelikle, güvenli bir SSL bağlantısı için yazılım sertifikalarını indirmek ve kurmak için kullanılacak prerequest yazılım paketlerini kuruyoruz.
# sudo apt install wget ca-certificates
Ardından, sertifikayı alın, apt-key
yönetim yardımcı programına ekliyoruz ve içinde resmi bir PostgreSQL repo adresi bulunan yeni bir yapılandırma dosyası oluşturuyoruz.
# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
Kurulumdan önce paketlerin bir güncellemesi yapılabilir, sonrasında postgres indirmesini yapalım aşağıdaki gibi herhangi bir version belirtmezsek repodaki en güncel versiyonu indirecektir. Hatta kurulumunu da kendi otomatik yapacaktır, dahası postgresql açık bir şekilde karşımıza gelecek sonrasında kapatıp ayarlama yapmamız gerekecek,
# apt install postgresql postgresql-contrib
--Fakat bazen en güncel versiyonu kullanmak istemeyebiliriz o zaman versiyon belirtmeliyiz
# apt install postgresql-14 postgresql-contrib-14
Bakalım postgres kurulmuşmu ilk kurduğu 15 versiyonu açıldığı için 5432 portunu o aldı sonradan kurduğum 14 versionu ise 5433 ü otamatik alarak ekndini açtı
# su - postgres
$ psql -p 5433
psql (14.6 (Ubuntu 14.6-1.pgdg20.04+1))
Type "help" for help.
Ubuntu için Centos RedHat grubundan farklı dolarak data dizini ile bazı parametre dosyalarının farklı yerde olması ve bazı komut setlerinin yine farklılığı söz konusudur şimdi bunlar nedir bir inceleyelim;
postgres=# show data_directory;
data_directory
-----------------------------
/var/lib/postgresql/14/main
(1 row)
--hba_file locasyonuna bakalım; oda etc altında oluşmuş
postgres=# show hba_file ;
hba_file
-------------------------------------
/etc/postgresql/14/main/pg_hba.conf
(1 row)
--Log directory ise PGDATA altında değil /var/log/postgresql altındadır;
postgres@ubuntu:/var/log/postgresql$ pwd
/var/log/postgresql
postgres@ubuntu:/var/log/postgresql$ ls -lrt
total 8
-rw-r----- 1 postgres adm 3170 Dec 21 11:23 postgresql-14-main.log.1
-rw-r----- 1 postgres adm 0 Dec 21 11:23 postgresql-14-main.log
/etc/postgresql/14/main/
altında neler var bakalım;
$ pwd
/etc/postgresql/14/main/
$ ls
conf.d environment pg_ctl.conf pg_hba.conf pg_ident.conf postgresql.conf start.conf
Centos RedHat e bulunan pg_ctl yerine burada pg_ctlcluster komutu bulunmaktadır. Ama pg_ctl de lullanılabilir. Postgres OS user için .profile
dosyasını set edelim ve iki komutun kullanımlarına bakalım;
$ nano .profile
export PGDATA=/var/lib/postgresql/14/main
export PATH=/usr/lib/postgresql/14/bin:$PATH
Burada bazı farklılıkları belirtmek istiyorum, pg_ctl komutlarını kullanmak ve replica oluşturuken dosyaların farklı dizinlerde olması problem yaratabiliyor bunun için burada /etc/postgresql/14/main/
dizini altındaki pg_hba.conf
dosyasını, conf.d
dizinini ve altındaki dosyaları en son postgresq.conf
dosyasını $PGDATA
altına taşıyabiliriz veya yeni bir kurulum yapıyorsak, mevcut kurulumu kaldırarak initdb
ile temiz bir kurulum yapabiliriz;
pg_ctlcluster Komutu;
pg_ctlcluster - start/stop/restart/reload a PostgreSQL cluster
Neler var --> start|stop|restart|reload|promote
COMMAND
start
A log file for this specific cluster is created if it does not exist yet (by default,
/var/log/postgresql/postgresql-cluster-version-cluster-name.log), and a PostreSQL
server process (postmaster(1)) is started on it. Exits with 0 on success, with 2 if
the server is already running, and with 1 on other failure conditions.
stop
Stops the postmaster(1) server of the given cluster. By default, "smart" shutdown mode
is used, which waits until all clients disconnected.
restart
Stops the server if it is running and starts it (again).
reload
Causes the configuration files to be re-read without a full shutdown of the server.
promote
Commands a running standby server to exit recovery and begin read-write operations.
OPTIONS
-f|--force
For stop and restart, the "fast" mode is used which rolls back all active
transactions, disconnects clients immediately and thus shuts down cleanly. If that
does not work, shutdown is attempted again in "immediate" mode, which can leave the
cluster in an inconsistent state and thus will lead to a recovery run at the next
start. If this still does not help, the postmaster process is killed. Exits with 0 on
success, with 2 if the server is not running, and with 1 on other failure conditions.
This mode should only be used when the machine is about to be shut down.
-m|--mode [smart|fast|immediate]
Shutdown mode to use for stop and restart actions, default is smart. See pg_ctl(1)
for documentation.
-o|--options option
Pass given option as command line option to the postmaster process. It is possible to
specify -o multiple times. See postmaster(1) for a description of valid options.
pg_ctl options
Pass given pg_ctl options as command line options to pg_ctl. See pg_ctl(1) for a
description of valid options.
pg_ctl komutu
$ pg_ctl --help
pg_ctl is a utility to initialize, start, stop, or control a PostgreSQL server.
Usage:
pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]
pg_ctl start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]
[-o OPTIONS] [-p PATH] [-c]
pg_ctl stop [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
pg_ctl restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
[-o OPTIONS] [-c]
pg_ctl reload [-D DATADIR] [-s]
pg_ctl status [-D DATADIR]
pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]
pg_ctl logrotate [-D DATADIR] [-s]
pg_ctl kill SIGNALNAME PID
Common options:
-D, --pgdata=DATADIR location of the database storage area
-s, --silent only print errors, no informational messages
-t, --timeout=SECS seconds to wait when using -w option
-V, --version output version information, then exit
-w, --wait wait until operation completes (default)
-W, --no-wait do not wait until operation completes
-?, --help show this help, then exit
If the -D option is omitted, the environment variable PGDATA is used.
Options for start or restart:
-c, --core-files allow postgres to produce core files
-l, --log=FILENAME write (or append) server log to FILENAME
-o, --options=OPTIONS command line options to pass to postgres
(PostgreSQL server executable) or initdb
-p PATH-TO-POSTGRES normally not necessary
Options for stop or restart:
-m, --mode=MODE MODE can be "smart", "fast", or "immediate"
Shutdown modes are:
smart quit after all clients have disconnected
fast quit directly, with proper shutdown (default)
immediate quit without complete shutdown; will lead to recovery on restart
Allowed signal names for kill:
ABRT HUP INT KILL QUIT TERM USR1 USR2
Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>
PostgreSQL listener, pg_hba ve diğer konfigürasyonları ile best practice parameterler için aşağıdaki yazıyı inceleyebilirsiniz.
Bir yanıt yazın